WPGlobus – Multilingual Everything! - Version 2.7.0

Version Description

  • (Compatibility) Tested up to WordPress 5.7
  • (Core/Post Types) Added the SlidersPack plugin post type to the "hidden types" list.
  • (Vendor/Yoast) Fixed issue with empty taxonomy meta description.
Download this release

Release Info

Developer tivnet
Plugin Icon 128x128 WPGlobus – Multilingual Everything!
Version 2.7.0
Comparing to
See all releases

Code changes from version 2.6.8 to 2.7.0

Files changed (383) hide show
  1. data/wpglobus-product-info.json +1 -1
  2. includes/class-wpglobus-post-types.php +2 -0
  3. includes/vendor/yoast-seo/class-wpglobus-yoastseo140.php +1612 -1605
  4. languages/wpglobus.pot +3 -3
  5. readme.txt +6 -9
  6. trunk/configs/acf.json +0 -12
  7. trunk/configs/all-in-one-seo-pack.json +0 -16
  8. trunk/configs/elementor.json +0 -5
  9. trunk/configs/pods.json +0 -12
  10. trunk/configs/rank-math-seo.json +0 -14
  11. trunk/configs/woocommerce.json +0 -8
  12. trunk/configs/wpglobus-seo.json +0 -5
  13. trunk/configs/wpglobus.json +0 -5
  14. trunk/configs/yoast-seo.json +0 -25
  15. trunk/data/paid_plugins.json +0 -78
  16. trunk/data/wpglobus-product-info.json +0 -1
  17. trunk/flags/ad.alt.png +0 -0
  18. trunk/flags/ad.png +0 -0
  19. trunk/flags/ae.png +0 -0
  20. trunk/flags/af.png +0 -0
  21. trunk/flags/ag.png +0 -0
  22. trunk/flags/ai.alt.png +0 -0
  23. trunk/flags/ai.png +0 -0
  24. trunk/flags/al.png +0 -0
  25. trunk/flags/am.png +0 -0
  26. trunk/flags/an.png +0 -0
  27. trunk/flags/ao.png +0 -0
  28. trunk/flags/aq.png +0 -0
  29. trunk/flags/ar.alt.png +0 -0
  30. trunk/flags/ar.png +0 -0
  31. trunk/flags/argm.jpg +0 -0
  32. trunk/flags/arle.png +0 -0
  33. trunk/flags/as.png +0 -0
  34. trunk/flags/asl.gif +0 -0
  35. trunk/flags/at.alt.png +0 -0
  36. trunk/flags/at.png +0 -0
  37. trunk/flags/au.png +0 -0
  38. trunk/flags/aw.png +0 -0
  39. trunk/flags/ax.png +0 -0
  40. trunk/flags/az.png +0 -0
  41. trunk/flags/ba.png +0 -0
  42. trunk/flags/bb.png +0 -0
  43. trunk/flags/bd.png +0 -0
  44. trunk/flags/be.png +0 -0
  45. trunk/flags/bf.png +0 -0
  46. trunk/flags/bg.png +0 -0
  47. trunk/flags/bh.png +0 -0
  48. trunk/flags/bi.alt.png +0 -0
  49. trunk/flags/bi.png +0 -0
  50. trunk/flags/big/au.png +0 -0
  51. trunk/flags/big/br.png +0 -0
  52. trunk/flags/big/ca.png +0 -0
  53. trunk/flags/big/cn.png +0 -0
  54. trunk/flags/big/cy.png +0 -0
  55. trunk/flags/big/de.png +0 -0
  56. trunk/flags/big/dk.png +0 -0
  57. trunk/flags/big/es.alt.png +0 -0
  58. trunk/flags/big/es.png +0 -0
  59. trunk/flags/big/fi.png +0 -0
  60. trunk/flags/big/ir.png +0 -0
  61. trunk/flags/big/it.png +0 -0
  62. trunk/flags/big/ka.png +0 -0
  63. trunk/flags/big/ru.png +0 -0
  64. trunk/flags/big/uk.png +0 -0
  65. trunk/flags/big/us.png +0 -0
  66. trunk/flags/bj.png +0 -0
  67. trunk/flags/bm.png +0 -0
  68. trunk/flags/bn.png +0 -0
  69. trunk/flags/bo.png +0 -0
  70. trunk/flags/br.png +0 -0
  71. trunk/flags/bs.png +0 -0
  72. trunk/flags/bt.png +0 -0
  73. trunk/flags/bv.png +0 -0
  74. trunk/flags/bw.png +0 -0
  75. trunk/flags/by.png +0 -0
  76. trunk/flags/bz.png +0 -0
  77. trunk/flags/ca.alt.png +0 -0
  78. trunk/flags/ca.png +0 -0
  79. trunk/flags/cc.alt.png +0 -0
  80. trunk/flags/cc.png +0 -0
  81. trunk/flags/cd.png +0 -0
  82. trunk/flags/cf.png +0 -0
  83. trunk/flags/cg.png +0 -0
  84. trunk/flags/ch.png +0 -0
  85. trunk/flags/ci.png +0 -0
  86. trunk/flags/ck.png +0 -0
  87. trunk/flags/cl.png +0 -0
  88. trunk/flags/cm.png +0 -0
  89. trunk/flags/cn.png +0 -0
  90. trunk/flags/co.png +0 -0
  91. trunk/flags/cr.alt.png +0 -0
  92. trunk/flags/cr.png +0 -0
  93. trunk/flags/cs.png +0 -0
  94. trunk/flags/cu.png +0 -0
  95. trunk/flags/cv.png +0 -0
  96. trunk/flags/cx.png +0 -0
  97. trunk/flags/cy.png +0 -0
  98. trunk/flags/cz.png +0 -0
  99. trunk/flags/de.png +0 -0
  100. trunk/flags/dj.png +0 -0
  101. trunk/flags/dk.png +0 -0
  102. trunk/flags/dm.png +0 -0
  103. trunk/flags/do.png +0 -0
  104. trunk/flags/dz.png +0 -0
  105. trunk/flags/easy_to_read.png +0 -0
  106. trunk/flags/ec.alt.png +0 -0
  107. trunk/flags/ec.png +0 -0
  108. trunk/flags/ee.png +0 -0
  109. trunk/flags/eg.png +0 -0
  110. trunk/flags/eh.alt.png +0 -0
  111. trunk/flags/eh.png +0 -0
  112. trunk/flags/en.png +0 -0
  113. trunk/flags/eo.png +0 -0
  114. trunk/flags/er.png +0 -0
  115. trunk/flags/es.alt.png +0 -0
  116. trunk/flags/es.png +0 -0
  117. trunk/flags/et.alt.png +0 -0
  118. trunk/flags/et.png +0 -0
  119. trunk/flags/eu.png +0 -0
  120. trunk/flags/eus.png +0 -0
  121. trunk/flags/fi.png +0 -0
  122. trunk/flags/fj.png +0 -0
  123. trunk/flags/fk.png +0 -0
  124. trunk/flags/fm.png +0 -0
  125. trunk/flags/fo.png +0 -0
  126. trunk/flags/fr.png +0 -0
  127. trunk/flags/fr_CA.png +0 -0
  128. trunk/flags/ga.png +0 -0
  129. trunk/flags/galego.png +0 -0
  130. trunk/flags/gb.png +0 -0
  131. trunk/flags/gd.png +0 -0
  132. trunk/flags/ge.png +0 -0
  133. trunk/flags/gf.png +0 -0
  134. trunk/flags/gg.png +0 -0
  135. trunk/flags/gh.png +0 -0
  136. trunk/flags/gi.png +0 -0
  137. trunk/flags/gl.png +0 -0
  138. trunk/flags/gm.png +0 -0
  139. trunk/flags/gn.png +0 -0
  140. trunk/flags/gp.png +0 -0
  141. trunk/flags/gq.png +0 -0
  142. trunk/flags/gr.png +0 -0
  143. trunk/flags/gs.png +0 -0
  144. trunk/flags/gt.alt.png +0 -0
  145. trunk/flags/gt.png +0 -0
  146. trunk/flags/gu.png +0 -0
  147. trunk/flags/gw.png +0 -0
  148. trunk/flags/gy.png +0 -0
  149. trunk/flags/hk.png +0 -0
  150. trunk/flags/hm.png +0 -0
  151. trunk/flags/hn.png +0 -0
  152. trunk/flags/hr.png +0 -0
  153. trunk/flags/ht.alt.png +0 -0
  154. trunk/flags/ht.png +0 -0
  155. trunk/flags/hu.png +0 -0
  156. trunk/flags/id.png +0 -0
  157. trunk/flags/ie.png +0 -0
  158. trunk/flags/il.png +0 -0
  159. trunk/flags/im.png +0 -0
  160. trunk/flags/in.png +0 -0
  161. trunk/flags/io.png +0 -0
  162. trunk/flags/iq.png +0 -0
  163. trunk/flags/ir.png +0 -0
  164. trunk/flags/is.png +0 -0
  165. trunk/flags/it.png +0 -0
  166. trunk/flags/je.png +0 -0
  167. trunk/flags/jm.png +0 -0
  168. trunk/flags/jo.png +0 -0
  169. trunk/flags/jp.png +0 -0
  170. trunk/flags/ka.png +0 -0
  171. trunk/flags/ke.png +0 -0
  172. trunk/flags/kg.png +0 -0
  173. trunk/flags/kh.png +0 -0
  174. trunk/flags/ki.png +0 -0
  175. trunk/flags/km.png +0 -0
  176. trunk/flags/kn.png +0 -0
  177. trunk/flags/kp.png +0 -0
  178. trunk/flags/kr.png +0 -0
  179. trunk/flags/ku.png +0 -0
  180. trunk/flags/kw.png +0 -0
  181. trunk/flags/ky.png +0 -0
  182. trunk/flags/kz.png +0 -0
  183. trunk/flags/la.png +0 -0
  184. trunk/flags/lb.png +0 -0
  185. trunk/flags/lc.png +0 -0
  186. trunk/flags/li.png +0 -0
  187. trunk/flags/lk.png +0 -0
  188. trunk/flags/lr.png +0 -0
  189. trunk/flags/ls.png +0 -0
  190. trunk/flags/lt.png +0 -0
  191. trunk/flags/lu.png +0 -0
  192. trunk/flags/lv.png +0 -0
  193. trunk/flags/ly.png +0 -0
  194. trunk/flags/ma.png +0 -0
  195. trunk/flags/mc.png +0 -0
  196. trunk/flags/md.png +0 -0
  197. trunk/flags/me.png +0 -0
  198. trunk/flags/mg.png +0 -0
  199. trunk/flags/mh.png +0 -0
  200. trunk/flags/mk.png +0 -0
  201. trunk/flags/ml.png +0 -0
  202. trunk/flags/mm.png +0 -0
  203. trunk/flags/mn.png +0 -0
  204. trunk/flags/mo.png +0 -0
  205. trunk/flags/montenegro.gif +0 -0
  206. trunk/flags/mp.png +0 -0
  207. trunk/flags/mq.png +0 -0
  208. trunk/flags/mr.png +0 -0
  209. trunk/flags/ms.png +0 -0
  210. trunk/flags/mt.png +0 -0
  211. trunk/flags/mu.png +0 -0
  212. trunk/flags/mv.png +0 -0
  213. trunk/flags/mw.png +0 -0
  214. trunk/flags/mx.png +0 -0
  215. trunk/flags/my.png +0 -0
  216. trunk/flags/my_MM.png +0 -0
  217. trunk/flags/mz.png +0 -0
  218. trunk/flags/na.png +0 -0
  219. trunk/flags/nc.png +0 -0
  220. trunk/flags/ne.png +0 -0
  221. trunk/flags/nf.png +0 -0
  222. trunk/flags/ng.png +0 -0
  223. trunk/flags/ni.alt.png +0 -0
  224. trunk/flags/ni.png +0 -0
  225. trunk/flags/nl.png +0 -0
  226. trunk/flags/no.png +0 -0
  227. trunk/flags/np.png +0 -0
  228. trunk/flags/nr.png +0 -0
  229. trunk/flags/nu.png +0 -0
  230. trunk/flags/nz.png +0 -0
  231. trunk/flags/om.png +0 -0
  232. trunk/flags/pa.png +0 -0
  233. trunk/flags/pe.png +0 -0
  234. trunk/flags/pf.alt.png +0 -0
  235. trunk/flags/pf.png +0 -0
  236. trunk/flags/pg.png +0 -0
  237. trunk/flags/ph.png +0 -0
  238. trunk/flags/pk.png +0 -0
  239. trunk/flags/pl.png +0 -0
  240. trunk/flags/pm.png +0 -0
  241. trunk/flags/pn.png +0 -0
  242. trunk/flags/pr.png +0 -0
  243. trunk/flags/ps.png +0 -0
  244. trunk/flags/pt.png +0 -0
  245. trunk/flags/purple.globe.png +0 -0
  246. trunk/flags/pw.png +0 -0
  247. trunk/flags/py.png +0 -0
  248. trunk/flags/qa.png +0 -0
  249. trunk/flags/re.png +0 -0
  250. trunk/flags/ro.png +0 -0
  251. trunk/flags/rs.png +0 -0
  252. trunk/flags/ru.png +0 -0
  253. trunk/flags/rw.png +0 -0
  254. trunk/flags/sa.png +0 -0
  255. trunk/flags/sb.png +0 -0
  256. trunk/flags/sc.png +0 -0
  257. trunk/flags/sd.png +0 -0
  258. trunk/flags/se.png +0 -0
  259. trunk/flags/serbska_malka.png +0 -0
  260. trunk/flags/sg.png +0 -0
  261. trunk/flags/sh.png +0 -0
  262. trunk/flags/si.png +0 -0
  263. trunk/flags/sj.png +0 -0
  264. trunk/flags/sk.png +0 -0
  265. trunk/flags/sl.png +0 -0
  266. trunk/flags/sm.png +0 -0
  267. trunk/flags/sn.png +0 -0
  268. trunk/flags/so.png +0 -0
  269. trunk/flags/sr.png +0 -0
  270. trunk/flags/st.png +0 -0
  271. trunk/flags/sv.alt.png +0 -0
  272. trunk/flags/sv.png +0 -0
  273. trunk/flags/sy.png +0 -0
  274. trunk/flags/sz.png +0 -0
  275. trunk/flags/tc.png +0 -0
  276. trunk/flags/td.png +0 -0
  277. trunk/flags/tf.png +0 -0
  278. trunk/flags/tg.png +0 -0
  279. trunk/flags/th.png +0 -0
  280. trunk/flags/tj.png +0 -0
  281. trunk/flags/tk.png +0 -0
  282. trunk/flags/tl.png +0 -0
  283. trunk/flags/tm.png +0 -0
  284. trunk/flags/tn.png +0 -0
  285. trunk/flags/to.png +0 -0
  286. trunk/flags/tr.png +0 -0
  287. trunk/flags/tt.png +0 -0
  288. trunk/flags/tv.png +0 -0
  289. trunk/flags/tw.png +0 -0
  290. trunk/flags/tz.png +0 -0
  291. trunk/flags/ua.png +0 -0
  292. trunk/flags/ug.png +0 -0
  293. trunk/flags/uk.png +0 -0
  294. trunk/flags/um.png +0 -0
  295. trunk/flags/us-uk.png +0 -0
  296. trunk/flags/us.png +0 -0
  297. trunk/flags/uy.png +0 -0
  298. trunk/flags/uz.png +0 -0
  299. trunk/flags/va.png +0 -0
  300. trunk/flags/vc.png +0 -0
  301. trunk/flags/ve.png +0 -0
  302. trunk/flags/vg.png +0 -0
  303. trunk/flags/vi.png +0 -0
  304. trunk/flags/vn.png +0 -0
  305. trunk/flags/vu.png +0 -0
  306. trunk/flags/wf.alt.png +0 -0
  307. trunk/flags/wf.png +0 -0
  308. trunk/flags/ws.png +0 -0
  309. trunk/flags/ye.png +0 -0
  310. trunk/flags/yt.png +0 -0
  311. trunk/flags/yu.png +0 -0
  312. trunk/flags/za.png +0 -0
  313. trunk/flags/zm.png +0 -0
  314. trunk/flags/zw.png +0 -0
  315. trunk/flags/zz.png +0 -0
  316. trunk/includes/admin/central/class-wpglobus-admin-central.php +0 -172
  317. trunk/includes/admin/class-wpglobus-about.php +0 -178
  318. trunk/includes/admin/class-wpglobus-admin-bar-menu.php +0 -213
  319. trunk/includes/admin/class-wpglobus-admin-menu.php +0 -34
  320. trunk/includes/admin/class-wpglobus-admin-page.php +0 -208
  321. trunk/includes/admin/class-wpglobus-admin-post.php +0 -57
  322. trunk/includes/admin/class-wpglobus-clean.php +0 -743
  323. trunk/includes/admin/class-wpglobus-customize-options.php +0 -1588
  324. trunk/includes/admin/class-wpglobus-dashboard-news.php +0 -67
  325. trunk/includes/admin/class-wpglobus-language-edit-request.php +0 -255
  326. trunk/includes/admin/class-wpglobus-language-edit.php +0 -494
  327. trunk/includes/admin/class-wpglobus-plugin-install.php +0 -367
  328. trunk/includes/admin/customize/class-wpglobus-customize-themes.php +0 -88
  329. trunk/includes/admin/customize/class-wpglobus-customize140.php +0 -282
  330. trunk/includes/admin/customize/class-wpglobus-customize170.php +0 -300
  331. trunk/includes/admin/customize/class-wpglobus-customize190.php +0 -555
  332. trunk/includes/admin/customize/wpglobus-customize-filters.php +0 -87
  333. trunk/includes/admin/customize/wpglobus-customize.php +0 -22
  334. trunk/includes/admin/debug/class-wpglobus-admin-debug.php +0 -366
  335. trunk/includes/admin/helpdesk/class-wpglobus-admin-helpdesk.php +0 -292
  336. trunk/includes/admin/helpdesk/wpglobus-admin-helpdesk-page.php +0 -165
  337. trunk/includes/admin/media/class-wpglobus-media.php +0 -413
  338. trunk/includes/admin/media/wpglobus-media.php +0 -38
  339. trunk/includes/admin/meta/class-wpglobus-meta.php +0 -545
  340. trunk/includes/admin/recommendations/class-wpglobus-admin-recommendations.php +0 -309
  341. trunk/includes/admin/register-post-types/class-wpglobus-register-post-types.php +0 -147
  342. trunk/includes/admin/wpglobus-admin.php +0 -38
  343. trunk/includes/builders/assets/wpglobus-admin-builder-49.js +0 -348
  344. trunk/includes/builders/assets/wpglobus-admin-builder-49.min.js +0 -1
  345. trunk/includes/builders/assets/wpglobus-admin-builder-51.js +0 -362
  346. trunk/includes/builders/assets/wpglobus-admin-builder-51.min.js +0 -1
  347. trunk/includes/builders/assets/wpglobus-admin-builder-55.js +0 -404
  348. trunk/includes/builders/assets/wpglobus-admin-builder-55.min.js +0 -1
  349. trunk/includes/builders/assets/wpglobus-admin-builder-56.js +0 -403
  350. trunk/includes/builders/assets/wpglobus-admin-builder-56.min.js +0 -1
  351. trunk/includes/builders/class-wpglobus-builder-update-post.php +0 -149
  352. trunk/includes/builders/class-wpglobus-builder.php +0 -424
  353. trunk/includes/builders/class-wpglobus-builders.php +0 -1627
  354. trunk/includes/builders/class-wpglobus-config-builder.php +0 -563
  355. trunk/includes/builders/elementor/class-wpglobus-elementor-front.php +0 -516
  356. trunk/includes/builders/elementor/class-wpglobus-elementor-update-post.php +0 -118
  357. trunk/includes/builders/elementor/class-wpglobus-elementor.php +0 -687
  358. trunk/includes/builders/elementor/readme.txt +0 -8
  359. trunk/includes/builders/gutenberg/assets/css/dist/wpglobus-block-editor.css +0 -3
  360. trunk/includes/builders/gutenberg/assets/css/dist/wpglobus-block-editor.css.map +0 -1
  361. trunk/includes/builders/gutenberg/assets/css/dist/wpglobus-block-editor.scss +0 -45
  362. trunk/includes/builders/gutenberg/assets/css/dist/wpglobus-switcher.css +0 -116
  363. trunk/includes/builders/gutenberg/assets/css/wpglobus-gutenberg.css +0 -3
  364. trunk/includes/builders/gutenberg/assets/css/wpglobus-gutenberg.css.map +0 -1
  365. trunk/includes/builders/gutenberg/assets/css/wpglobus-gutenberg.scss +0 -30
  366. trunk/includes/builders/gutenberg/assets/js/dist/wpglobus-block-editor.js +0 -607
  367. trunk/includes/builders/gutenberg/assets/js/dist/wpglobus-block-editor.min.js +0 -1
  368. trunk/includes/builders/gutenberg/assets/js/wpglobus-gutenberg.js +0 -632
  369. trunk/includes/builders/gutenberg/assets/js/wpglobus-gutenberg.min.js +0 -1
  370. trunk/includes/builders/gutenberg/class-wpglobus-gutenberg-update-post.php +0 -304
  371. trunk/includes/builders/gutenberg/class-wpglobus-gutenberg.php +0 -601
  372. trunk/includes/builders/js_composer/class-wpglobus-js_composer-update-post.php +0 -119
  373. trunk/includes/builders/js_composer/class-wpglobus-js_composer.php +0 -26
  374. trunk/includes/builders/pods/class-wpglobus-builder-pods.php +0 -110
  375. trunk/includes/builders/pods/class-wpglobus-pods-update-post.php +0 -120
  376. trunk/includes/builders/pods/class-wpglobus-pods.php +0 -31
  377. trunk/includes/builders/rank_math_seo/class-wpglobus-builder-rank_math_seo.php +0 -75
  378. trunk/includes/builders/rank_math_seo/class-wpglobus-rank_math_seo-functions.php +0 -168
  379. trunk/includes/builders/rank_math_seo/class-wpglobus-rank_math_seo-update-post.php +0 -40
  380. trunk/includes/builders/rank_math_seo/class-wpglobus-rank_math_seo.php +0 -73
  381. trunk/includes/builders/yoast_seo/class-wpglobus-yoast_seo-update-post.php +0 -259
  382. trunk/includes/builders/yoast_seo/class-wpglobus-yoast_seo.php +0 -145
  383. trunk/includes/class-wpglobus-config-vendor.php +0 -405
data/wpglobus-product-info.json CHANGED
@@ -1 +1 @@
1
- {"multilingual-woocommerce-nets-netaxept":{"title":"{:en}Multilingual WooCommerce Nets Netaxept{:}{:ru}\u041c\u0443\u043b\u044c\u0442\u0438\u044f\u0437\u044b\u0447\u043d\u043e\u0441\u0442\u044c \u0434\u043b\u044f WooCommerce Nets Netaxept{:}","_api_new_version":"1.0.3","_api_tested_up_to":"4.9.8"},"wpglobus-multi-currency":{"title":"{:en}Multi-Currency for WooCommerce{:}{:ru}WPGlobus - \u041c\u0443\u043b\u044c\u0442\u0438\u0432\u0430\u043b\u044e\u0442\u043d\u043e\u0441\u0442\u044c \u0434\u043b\u044f WooCommerce{:}","_api_new_version":"1.1.1","_api_tested_up_to":"4.9.4"},"wpglobus-mobile-menu":{"title":"{:en}WPGlobus Mobile Menu{:}{:ru}WPGlobus Mobile Menu{:}","_api_new_version":"2.2.0","_api_tested_up_to":"5.6"},"woocommerce-wpglobus":{"title":"{:en}WPGlobus for WooCommerce{:}{:ru}\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 WooCommerce WPGlobus{:}","_api_new_version":"4.3.0","_api_tested_up_to":"5.6"},"wpglobus-header-images":{"title":"{:en}WPGlobus Header Images{:}{:ru}WPGlobus Header Images{:}","_api_new_version":"2.1.0","_api_tested_up_to":"5.5"},"wpglobus-for-bridge-theme":{"title":"{:en}WPGlobus for the \"Bridge\" theme{:}{:ru}WPGlobus \u0434\u043b\u044f \u0442\u0435\u043c\u044b Bridge{:}","_api_new_version":"2.3.0","_api_tested_up_to":"5.5"},"wpglobus-language-widgets":{"title":"{:en}WPGlobus Language Widgets{:}{:ru}\u042f\u0437\u044b\u043a\u0438 WPGlobus \u0434\u043b\u044f \u0432\u0438\u0434\u0436\u0435\u0442\u043e\u0432{:}","_api_new_version":"2.0.0","_api_tested_up_to":"5.6.0"},"wpglobus-for-ultimate-member":{"title":"{:en}WPGlobus for Ultimate Member{:}{:ru}WPGlobus \u0434\u043b\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u0430 Ultimate Member{:}","_api_new_version":"1.1.0","_api_tested_up_to":"5.6"},"wpglobus-multilingual-notices":{"title":"{:en}WPGlobus Multilingual Notices{:}{:ru}WPGlobus - \u043c\u043d\u043e\u0433\u043e\u044f\u0437\u044b\u0447\u043d\u044b\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f{:}","_api_new_version":"2.5.0","_api_tested_up_to":"5.6"},"wpglobus-multilingual-popups":{"title":"{:en}WPGlobus Multilingual Popups{:}{:ru}WPGlobus Multilingual Popups{:}","_api_new_version":"1.3.0","_api_tested_up_to":"5.6"},"wpglobus-menu-visibility":{"title":"WPGlobus Menu Visibility","_api_new_version":"2.0.0","_api_tested_up_to":"5.6"},"wpglobus-plus":{"title":"{:en}WPGlobus Plus multilingual extension{:}{:ru}WPGlobus \u041f\u043b\u044e\u0441{:}","_api_new_version":"1.5.7","_api_tested_up_to":"5.6"}}
1
+ {"multilingual-woocommerce-nets-netaxept":{"title":"{:en}Multilingual WooCommerce Nets Netaxept{:}{:ru}\u041c\u0443\u043b\u044c\u0442\u0438\u044f\u0437\u044b\u0447\u043d\u043e\u0441\u0442\u044c \u0434\u043b\u044f WooCommerce Nets Netaxept{:}","_api_new_version":"1.0.3","_api_tested_up_to":"4.9.8"},"wpglobus-multi-currency":{"title":"{:en}Multi-Currency for WooCommerce{:}{:ru}WPGlobus - \u041c\u0443\u043b\u044c\u0442\u0438\u0432\u0430\u043b\u044e\u0442\u043d\u043e\u0441\u0442\u044c \u0434\u043b\u044f WooCommerce{:}","_api_new_version":"1.1.1","_api_tested_up_to":"4.9.4"},"wpglobus-mobile-menu":{"title":"{:en}WPGlobus Mobile Menu{:}{:ru}WPGlobus Mobile Menu{:}","_api_new_version":"2.2.0","_api_tested_up_to":"5.6"},"woocommerce-wpglobus":{"title":"{:en}WPGlobus for WooCommerce{:}{:ru}\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 WooCommerce WPGlobus{:}","_api_new_version":"4.3.0","_api_tested_up_to":"5.6"},"wpglobus-header-images":{"title":"{:en}WPGlobus Header Images{:}{:ru}WPGlobus Header Images{:}","_api_new_version":"2.1.0","_api_tested_up_to":"5.5"},"wpglobus-language-widgets":{"title":"{:en}WPGlobus Language Widgets{:}{:ru}\u042f\u0437\u044b\u043a\u0438 WPGlobus \u0434\u043b\u044f \u0432\u0438\u0434\u0436\u0435\u0442\u043e\u0432{:}","_api_new_version":"2.0.0","_api_tested_up_to":"5.6.0"},"wpglobus-for-ultimate-member":{"title":"{:en}WPGlobus for Ultimate Member{:}{:ru}WPGlobus \u0434\u043b\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u0430 Ultimate Member{:}","_api_new_version":"1.1.0","_api_tested_up_to":"5.6"},"wpglobus-multilingual-popups":{"title":"{:en}WPGlobus Multilingual Popups{:}{:ru}WPGlobus Multilingual Popups{:}","_api_new_version":"1.3.0","_api_tested_up_to":"5.6"},"wpglobus-menu-visibility":{"title":"WPGlobus Menu Visibility","_api_new_version":"2.0.0","_api_tested_up_to":"5.6"},"wpglobus-for-bridge-theme":{"title":"{:en}WPGlobus for the \"Bridge\" theme{:}{:ru}WPGlobus \u0434\u043b\u044f \u0442\u0435\u043c\u044b Bridge{:}","_api_new_version":"2.4.0","_api_tested_up_to":"5.5"},"wpglobus-multilingual-notices":{"title":"{:en}WPGlobus Multilingual Notices{:}{:ru}WPGlobus - \u043c\u043d\u043e\u0433\u043e\u044f\u0437\u044b\u0447\u043d\u044b\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f{:}","_api_new_version":"2.6.0","_api_tested_up_to":"5.7"},"wpglobus-plus":{"title":"{:en}WPGlobus Plus multilingual extension{:}{:ru}WPGlobus \u041f\u043b\u044e\u0441{:}","_api_new_version":"1.6.0","_api_tested_up_to":"5.7"}}
includes/class-wpglobus-post-types.php CHANGED
@@ -120,6 +120,8 @@ class WPGlobus_Post_Types {
120
  'custom-css-js',
121
  // Content Blocks (Custom Post Widget): https://wordpress.org/plugins/custom-post-widget/ @since 2.6.6
122
  'content_block',
 
 
123
  );
124
 
125
  /**
120
  'custom-css-js',
121
  // Content Blocks (Custom Post Widget): https://wordpress.org/plugins/custom-post-widget/ @since 2.6.6
122
  'content_block',
123
+ // SlidersPack – All In One Image/Post Slider: https://wordpress.org/plugins/sliderspack-all-in-one-image-sliders/ @since 2.7.0
124
+ 'wpspaios_slider',
125
  );
126
 
127
  /**
includes/vendor/yoast-seo/class-wpglobus-yoastseo140.php CHANGED
@@ -1,1606 +1,1613 @@
1
- <?php
2
- /**
3
- * File: class-wpglobus-yoastseo140.php
4
- *
5
- * Support of Yoast SEO 14.0
6
- *
7
- * @package WPGlobus\Vendor\YoastSEO
8
- * @since 2.4
9
- * @since 2.5.19 Added support multilingual fields for social tab.
10
- */
11
-
12
- /**
13
- * Class WPGlobus_YoastSEO.
14
- */
15
- class WPGlobus_YoastSEO {
16
-
17
- /**
18
- * Yoast SEO separator.
19
- *
20
- * @var string
21
- */
22
- public static $yoastseo_separator = '';
23
-
24
- /**
25
- * Name of the script.
26
- *
27
- * @var string
28
- */
29
- public static $handle_script = 'wpglobus-yoastseo';
30
-
31
- /**
32
- * Name of the dashboard script.
33
- *
34
- * @since 2.4.5
35
- * @var string
36
- */
37
- public static $handle_script_dashboard = 'wpglobus-yoastseo-dashboard';
38
-
39
- /**
40
- * Name of the premium script.
41
- *
42
- * @since 1.7.2
43
- * @var string
44
- */
45
- public static $handle_script_premium = 'wpglobus-yoastseo-premium';
46
-
47
- /**
48
- * Current version yoast seo.
49
- *
50
- * @since 1.8
51
- * @var string
52
- */
53
- protected static $version = '';
54
-
55
- /**
56
- * Contains wpseo post meta.
57
- *
58
- * @since 2.2.16
59
- * @var null|array
60
- */
61
- protected static $wpseo_meta = null;
62
-
63
- /**
64
- * Contains wpseo taxonomy meta.
65
- *
66
- * @since 2.5.1
67
- * @var null|array
68
- */
69
- protected static $wpseo_taxonomy_meta = null;
70
-
71
- /**
72
- * Contains document title.
73
- *
74
- * @since 2.4.7
75
- * @var null|string
76
- */
77
- protected static $title = null;
78
-
79
- /**
80
- * Plus access.
81
- *
82
- * @since 2.2.20
83
- * @var boolean|string
84
- */
85
- protected static $plus_module = false;
86
-
87
- /**
88
- * Canonical URLs.
89
- *
90
- * @since 2.5.11
91
- * @var array
92
- */
93
- protected static $canonical_url = array();
94
-
95
- /**
96
- * Description meta value.
97
- *
98
- * @scope front
99
- * @since 2.6.3
100
- * @var string
101
- */
102
- protected static $description = '';
103
-
104
- /**
105
- * Static "controller"
106
- */
107
- public static function controller($version, $plus_module = false) {
108
-
109
- self::$version = $version;
110
- self::$plus_module = $plus_module;
111
-
112
- if ( is_admin() ) {
113
-
114
- /**
115
- * @since 2.2.20
116
- */
117
- add_action( 'admin_print_scripts', array(
118
- __CLASS__,
119
- 'action__admin_print_scripts'
120
- ) );
121
-
122
- if ( WPGlobus_WP::is_pagenow( 'edit.php' ) ) {
123
-
124
- /**
125
- * To translate Yoast columns on `edit.php` page.
126
- * @since 2.2.16
127
- */
128
- add_filter( 'wpseo_title', array(
129
- __CLASS__,
130
- 'filter__wpseo_title'
131
- ), 5 );
132
-
133
-
134
- add_filter( 'wpseo_metadesc', array(
135
- __CLASS__,
136
- 'filter__wpseo_metadesc'
137
- ), 5 );
138
- }
139
-
140
- } else {
141
-
142
- /**
143
- * Frontend.
144
- */
145
-
146
- /**
147
- * Filter SEO title and meta description on front only, when the page header HTML tags are generated.
148
- * AJAX is probably not required (waiting for a case).
149
- */
150
- // add_filter( 'wpseo_title', array( __CLASS__, 'filter__title' ), PHP_INT_MAX );
151
- /**
152
- * Filter title description.
153
- * @since 2.5.22
154
- */
155
- add_filter( 'wpseo_title', array( __CLASS__, 'filter_front__title' ), PHP_INT_MAX, 2 );
156
-
157
- /**
158
- * Filter meta description.
159
- * @since 2.4
160
- */
161
- add_filter( 'wpseo_metadesc', array( __CLASS__, 'filter_front__description' ), 5, 2 );
162
-
163
- /**
164
- * Open Graph.
165
- * @since 2.4 Open Graph title.
166
- * @since 2.4 Open Graph description.
167
- * @since 2.4 Open Graph URL.
168
- * @since 2.5.19 Open Graph image.
169
- */
170
- add_filter( 'wpseo_opengraph_title', array( __CLASS__, 'filter_front__opengraph_title' ), 5, 2 );
171
- add_filter( 'wpseo_opengraph_desc', array( __CLASS__, 'filter_front__opengraph_description' ), 5, 2 );
172
- add_filter( 'wpseo_opengraph_image', array( __CLASS__, 'filter_front__opengraph_image' ), 5, 2 );
173
- add_filter( 'wpseo_opengraph_url', array( __CLASS__, 'filter_front__localize_url' ), 5, 2 );
174
-
175
- /**
176
- * Twitter.
177
- * @since 2.5.19
178
- */
179
- add_filter( 'wpseo_twitter_title', array( __CLASS__, 'filter_front__twitter_title' ), 5, 2 );
180
- add_filter( 'wpseo_twitter_description', array( __CLASS__, 'filter_front__twitter_description' ), 5, 2 );
181
- add_filter( 'wpseo_twitter_image', array( __CLASS__, 'filter_front__twitter_image' ), 5, 2 );
182
-
183
- /**
184
- * Filter canonical URL and open graph URL.
185
- * @since 2.4
186
- */
187
- add_filter( 'wpseo_canonical', array( __CLASS__, 'filter_front__localize_url' ), 5, 2 );
188
-
189
- /**
190
- * Filter of the rel prev and next URL put out by Yoast SEO.
191
- * @since 2.5.11
192
- */
193
- add_filter( 'wpseo_adjacent_rel_url', array( __CLASS__, 'filter_front__wpseo_adjacent_rel_url' ), 5, 3 );
194
-
195
- /**
196
- * Filter the HTML output of the Yoast SEO breadcrumbs class.
197
- * @since 2.4.2
198
- */
199
- add_filter( 'wpseo_breadcrumb_output', array( __CLASS__, 'filter__breadcrumb_output' ), 5, 2 );
200
-
201
- /**
202
- * @todo check for '_yoast_wpseo_title' meta
203
- * @see <title> view-source:http://test/test-post-seo/
204
- * @see <title> view-source:http://test/ru/test-post-seo/
205
- */
206
- add_filter( 'get_post_metadata', array( __CLASS__, 'filter__get_post_metadata' ), 6, 4 );
207
-
208
- /**
209
- * Filter meta keywords.
210
- * @since 1.8.8
211
- */
212
- add_filter( 'wpseo_metakeywords', array( __CLASS__, 'filter__metakeywords' ), 0 );
213
-
214
- /**
215
- * Filter `wpseo_schema_breadcrumb` generator.
216
- * @since 2.4.7
217
- */
218
- add_filter( 'wpseo_schema_breadcrumb', array( __CLASS__, 'filter__wpseo_schema_breadcrumb' ), 5, 2 );
219
-
220
- /**
221
- * Filter `wpseo_schema_webpage` generator.
222
- * @since 2.4.14
223
- */
224
- add_filter( 'wpseo_schema_webpage', array( __CLASS__, 'filter__wpseo_schema_webpage' ), 5, 2 );
225
- }
226
- }
227
-
228
- /**
229
- * obsolete @since 2.5.22
230
- * Filter Yoast post meta title.
231
- *
232
- * @scope front
233
- * @since 1.9.18
234
- * @since 2.4.7 Handle multilingual title from `postmeta` table.
235
- *
236
- * @param string $title Post title.
237
- *
238
- * @return string.
239
- */
240
- public static function filter__title( $title ) {
241
-
242
- /**
243
- * In some cases we can get $title like {:en}En title{:}{:ru}Ru title{:}{:fr}Fr title{:} - SiteTitle
244
- * so, let's filter.
245
- */
246
- if ( WPGlobus_Core::has_translations($title) ) {
247
-
248
- if ( is_null( self::$title ) ) {
249
- self::$title = $title;
250
- }
251
- return WPGlobus_Core::extract_text( self::$title, WPGlobus::Config()->language );
252
- }
253
-
254
- /**
255
- * We can get title in last saved language (has no multilingual) from @see `wp_yoast_indexable` table.
256
- * So, we need get multilingual title from `postmeta` table.
257
- * @since 2.4.7
258
- */
259
- if ( ! is_null( self::$title ) ) {
260
- return WPGlobus_Core::extract_text( self::$title, WPGlobus::Config()->language );
261
- }
262
-
263
- /** @global wpdb $wpdb */
264
- global $wpdb;
265
-
266
- /** @global WP_Post $post */
267
- global $post;
268
-
269
- /**
270
- * @since 2.4.14 Fixed PHP Notice: Trying to get property 'ID' of non-object.
271
- */
272
- if ( $post instanceof WP_Post && (int) $post->ID > 0 ) {
273
- $query = $wpdb->prepare(
274
- "SELECT meta_value FROM {$wpdb->prefix}postmeta AS m WHERE m.post_id = %s AND m.meta_key = %s",
275
- $post->ID,
276
- '_yoast_wpseo_title'
277
- );
278
-
279
- $meta = $wpdb->get_var($query);
280
- if ( ! empty($meta) && false != mb_strpos($meta, $title) && WPGlobus_Core::has_translations($meta) ) {
281
- self::$title = $meta;
282
- return WPGlobus_Core::extract_text( self::$title, WPGlobus::Config()->language );
283
- }
284
- }
285
-
286
- return $title;
287
- }
288
-
289
- /**
290
- * Filter for changing the Yoast SEO generated Open Graph description.
291
- *
292
- * @see wordpress-seo\src\presenters\open-graph\description-presenter.php
293
- *
294
- * @since 2.5.19
295
- *
296
- * @scope front
297
- * @param string $description The description.
298
- * @param Indexable_Presentation $presentation The presentation of an indexable.
299
- *
300
- * @return string
301
- */
302
- public static function filter_front__opengraph_description( $description, $presentation ) {
303
-
304
- if ( empty( $description ) ) {
305
- return $description;
306
- }
307
-
308
- if ( 'post' == $presentation->model->object_type ) {
309
-
310
- $meta_cache = wp_cache_get( $presentation->model->object_id, 'post_meta' );
311
-
312
- if ( ! empty( $meta_cache['_yoast_wpseo_opengraph-description'][0] ) ) {
313
-
314
- $description = WPGlobus_Core::text_filter( $meta_cache['_yoast_wpseo_opengraph-description'][0], WPGlobus::Config()->language );
315
-
316
- if ( $presentation->source instanceof WP_Post ) {
317
- /**
318
- * @see wordpress-seo\inc\wpseo-functions.php
319
- */
320
- $description = wpseo_replace_vars( $description, $presentation->source );
321
- }
322
- } else {
323
- /**
324
- * Opengraph description is empty. We get it from `description` meta.
325
- * @since 2.6.3
326
- */
327
- $description = self::$description;
328
- }
329
-
330
- } elseif ( 'term' == $presentation->model->object_type ) {
331
-
332
- /**
333
- * Taxonomy.
334
- */
335
- $__desc = self::get_taxonomy_meta( $presentation->model->object_sub_type, $presentation->model->object_id, 'wpseo_desc' );
336
-
337
- if ( empty( $__desc ) ) {
338
-
339
- $__template = self::get_option( 'wpseo_titles', 'metadesc-tax-' . $presentation->model->object_sub_type );
340
-
341
- if ( ! empty( $__template ) ) {
342
- $__desc = $__template;
343
- } else {
344
- // @W.I.P if empty `Meta description` from Yoast, then we need output `Description` from Edit taxonomy page.
345
- $__desc = $presentation->source->description;
346
- }
347
-
348
- }
349
-
350
- $description = wpseo_replace_vars( $__desc, $presentation->source );
351
- }
352
-
353
- return $description;
354
- }
355
-
356
- /**
357
- * Filter for changing the Open Graph image.
358
- *
359
- * @see wordpress-seo\src\presenters\open-graph\image-presenter.php
360
- *
361
- * @since 2.5.19
362
- *
363
- * @scope front
364
- * @param string $image_url The URL of the Open Graph image.
365
- * @param Indexable_Presentation $presentation The presentation of an indexable.
366
- *
367
- * @return string
368
- */
369
- public static function filter_front__opengraph_image( $image_url, $presentation ) {
370
-
371
- if ( empty( $image_url) ) {
372
- return $image_url;
373
- }
374
-
375
- if ( 'post' == $presentation->model->object_type ) {
376
-
377
- $meta_cache = wp_cache_get( $presentation->model->object_id, 'post_meta' );
378
-
379
- if ( ! empty( $meta_cache['_yoast_wpseo_opengraph-image'][0] ) ) {
380
-
381
- $image_url = WPGlobus_Core::text_filter( $meta_cache['_yoast_wpseo_opengraph-image'][0], WPGlobus::Config()->language );
382
-
383
- if ( $presentation->source instanceof WP_Post ) {
384
- /**
385
- * @see wordpress-seo\inc\wpseo-functions.php
386
- */
387
- $image_url = wpseo_replace_vars( $image_url, $presentation->source );
388
- }
389
- }
390
- }
391
-
392
- return $image_url;
393
- }
394
-
395
- /**
396
- * Filter for changing the Twitter title.
397
- *
398
- * @see wordpress-seo\src\presenters\twitter\title-presenter.php
399
- *
400
- * @since 2.5.19
401
- *
402
- * @scope front
403
- * @param string $title The Twitter title.
404
- * @param Indexable_Presentation $presentation The presentation of an indexable.
405
- *
406
- * @return string
407
- */
408
- public static function filter_front__twitter_title( $title, $presentation ) {
409
-
410
- if ( empty( $title ) ) {
411
- return $title;
412
- }
413
-
414
- if ( 'post' == $presentation->model->object_type ) {
415
-
416
- $meta_cache = wp_cache_get( $presentation->model->object_id, 'post_meta' );
417
-
418
- if ( ! empty( $meta_cache['_yoast_wpseo_twitter-title'][0] ) ) {
419
-
420
- $title = WPGlobus_Core::text_filter( $meta_cache['_yoast_wpseo_twitter-title'][0], WPGlobus::Config()->language );
421
-
422
- if ( $presentation->source instanceof WP_Post ) {
423
- /**
424
- * @see wordpress-seo\inc\wpseo-functions.php
425
- */
426
- $title = wpseo_replace_vars( $title, $presentation->source );
427
- }
428
- }
429
- }
430
-
431
- return $title;
432
- }
433
-
434
- /**
435
- * Filter for changing the Twitter description as output in the Twitter card by Yoast SEO.
436
- *
437
- * @see wordpress-seo\src\presenters\twitter\description-presenter.php
438
- *
439
- * @since 2.5.19
440
- *
441
- * @scope front
442
- * @param string $description The description string.
443
- * @param Indexable_Presentation $presentation The presentation of an indexable.
444
- *
445
- * @return string
446
- */
447
- public static function filter_front__twitter_description( $description, $presentation ) {
448
-
449
- if ( empty( $description ) ) {
450
- return $description;
451
- }
452
-
453
- if ( 'post' == $presentation->model->object_type ) {
454
-
455
- $meta_cache = wp_cache_get( $presentation->model->object_id, 'post_meta' );
456
-
457
- if ( ! empty( $meta_cache['_yoast_wpseo_twitter-description'][0] ) ) {
458
-
459
- $description = WPGlobus_Core::text_filter( $meta_cache['_yoast_wpseo_twitter-description'][0], WPGlobus::Config()->language );
460
-
461
- if ( $presentation->source instanceof WP_Post ) {
462
- /**
463
- * @see wordpress-seo\inc\wpseo-functions.php
464
- */
465
- $description = wpseo_replace_vars( $description, $presentation->source );
466
- }
467
- }
468
- }
469
-
470
- return $description;
471
- }
472
-
473
- /**
474
- * Filter for changing the Twitter Card image.
475
- *
476
- * @see wordpress-seo\src\presenters\twitter\image-presenter.php
477
- *
478
- * @since 2.5.19
479
- *
480
- * @scope front
481
- * @param string $image Image URL string.
482
- * @param Indexable_Presentation $presentation The presentation of an indexable.
483
- *
484
- * @return string
485
- */
486
- public static function filter_front__twitter_image( $image, $presentation ) {
487
-
488
- if ( empty( $image ) ) {
489
- return $image;
490
- }
491
-
492
- if ( 'post' == $presentation->model->object_type ) {
493
-
494
- $meta_cache = wp_cache_get( $presentation->model->object_id, 'post_meta' );
495
-
496
- if ( ! empty( $meta_cache['_yoast_wpseo_twitter-image'][0] ) ) {
497
-
498
- $image = WPGlobus_Core::text_filter( $meta_cache['_yoast_wpseo_twitter-image'][0], WPGlobus::Config()->language );
499
-
500
- if ( $presentation->source instanceof WP_Post ) {
501
- /**
502
- * @see wordpress-seo\inc\wpseo-functions.php
503
- */
504
- $image = wpseo_replace_vars( $image, $presentation->source );
505
- }
506
- }
507
- }
508
-
509
- return $image;
510
- }
511
-
512
- /**
513
- * Filter for changing the Yoast SEO generated title.
514
- *
515
- * @see wordpress-seo\src\presenters\open-graph\title-presenter.php
516
- *
517
- * @since 2.5.19
518
- *
519
- * @scope front
520
- * @param string $title The title.
521
- * @param Indexable_Presentation $presentation The presentation of an indexable.
522
- *
523
- * @return string
524
- */
525
- public static function filter_front__opengraph_title( $title, $presentation ) {
526
-
527
- if ( empty( $title ) ) {
528
- return $title;
529
- }
530
-
531
- if ( 'post' == $presentation->model->object_type ) {
532
-
533
- $meta_cache = wp_cache_get( $presentation->model->object_id, 'post_meta' );
534
-
535
- if ( ! empty( $meta_cache['_yoast_wpseo_opengraph-title'][0] ) ) {
536
-
537
- $title = WPGlobus_Core::text_filter( $meta_cache['_yoast_wpseo_opengraph-title'][0], WPGlobus::Config()->language );
538
-
539
- if ( $presentation->source instanceof WP_Post ) {
540
- /**
541
- * @see wordpress-seo\inc\wpseo-functions.php
542
- */
543
- $title = wpseo_replace_vars( $title, $presentation->source );
544
- }
545
-
546
- } else {
547
-
548
- /**
549
- * @since 2.5.23
550
- */
551
- if ( WPGlobus_Core::has_translations( $title ) ) {
552
- $title = WPGlobus_Core::extract_text( $title, WPGlobus::Config()->language );
553
- }
554
-
555
- }
556
-
557
- } elseif ( 'term' == $presentation->model->object_type ) {
558
-
559
- /**
560
- * Taxonomy.
561
- */
562
- $__title = self::get_taxonomy_meta( $presentation->model->object_sub_type, $presentation->model->object_id, 'wpseo_title' );
563
-
564
- if ( empty( $__title ) ) {
565
- $__title = self::get_option( 'wpseo_titles', 'title-tax-' . $presentation->model->object_sub_type );
566
- }
567
-
568
- $title = wpseo_replace_vars( $__title, $presentation->source );
569
- }
570
-
571
- return $title;
572
- }
573
-
574
- /**
575
- * Filter post meta.
576
- *
577
- * @since 1.9.21
578
- * @since 2.1.3
579
- * @see function function get_value() in wordpress-seo\inc\class-wpseo-meta.php
580
- */
581
- public static function filter__get_post_metadata( $check, $object_id, $meta_key, $single ) {
582
-
583
- global $post;
584
-
585
- if ( $single ) {
586
- return $check;
587
- }
588
-
589
- if ( ! is_object($post) ) {
590
- return $check;
591
- }
592
-
593
- if ( $object_id != $post->ID ) {
594
- return $check;
595
- }
596
-
597
- /**
598
- * May be called many times on one page. Let's cache.
599
- */
600
- static $_done = null;
601
- if ( ! is_null($_done) ) {
602
- return $check;
603
- }
604
-
605
- $meta_type = 'post';
606
-
607
- $meta_cache = wp_cache_get($object_id, $meta_type . '_meta');
608
-
609
- if ( ! empty($meta_cache['_yoast_wpseo_title'][0]) ) {
610
- $meta_cache['_yoast_wpseo_title'][0] = WPGlobus_Core::text_filter( $meta_cache['_yoast_wpseo_title'][0], WPGlobus::Config()->language, WPGlobus::RETURN_EMPTY );
611
- wp_cache_replace( $object_id, $meta_cache, $meta_type . '_meta' );
612
- }
613
-
614
- /**
615
- * @since 2.2.33
616
- */
617
- if ( ! empty($meta_cache['_yoast_wpseo_focuskw'][0]) ) {
618
- $meta_cache['_yoast_wpseo_focuskw'][0] = WPGlobus_Core::text_filter( $meta_cache['_yoast_wpseo_focuskw'][0], WPGlobus::Config()->language, WPGlobus::RETURN_EMPTY );
619
- wp_cache_replace( $object_id, $meta_cache, $meta_type . '_meta' );
620
- }
621
-
622
- $_done = true;
623
-
624
- return $check;
625
- }
626
-
627
- /**
628
- * Filter Yoast post meta keywords.
629
- *
630
- * @scope front
631
- * @since 1.8.8
632
- *
633
- * @param string $keywords Multilingual keywords.
634
- *
635
- * @return string.
636
- */
637
- public static function filter__metakeywords( $keywords ) {
638
- if ( WPGlobus::Config()->language != WPGlobus::Config()->default_language ) {
639
- return '';
640
- }
641
- return WPGlobus_Core::text_filter($keywords, WPGlobus::Config()->language, WPGlobus::RETURN_EMPTY);
642
- }
643
-
644
- /**
645
- * Filter wpseo meta description.
646
- *
647
- * @see wordpress-seo\src\presenters\meta-description-presenter.php
648
- * @see wordpress-seo\src\presenters\open-graph\description-presenter.php
649
- *
650
- * @since 2.4
651
- * @since 2.5.1 Added support of taxonomies.
652
- *
653
- * @scope front
654
- *
655
- * @param string $meta_description Value from @see `description` field in `wp_yoast_indexable` table.
656
- * @param Indexable_Presentation $presentation The presentation of an indexable.
657
- *
658
- * @return string
659
- */
660
- public static function filter_front__description( $meta_description, $presentation ) {
661
-
662
- /**
663
- * $meta_description is received from `description` field in `wp_yoast_indexable` table.
664
- */
665
-
666
- /**
667
- * Init description.
668
- */
669
- $description = '';
670
-
671
- /**
672
- * Key to define that `wpseo_metadesc` filter was already fired earlier.
673
- */
674
- static $meta_description_presenter_was_fired = false;
675
-
676
- if ( 'post' == $presentation->model->object_type ) {
677
-
678
- /**
679
- * Post.
680
- */
681
- if ( $meta_description_presenter_was_fired ) {
682
- /**
683
- * Set meta description to empty value for `wpseo_opengraph_desc` filter like for empty $meta_description in `wpseo_metadesc` filter.
684
- */
685
- $meta_description = '';
686
- } else {
687
- if ( empty($meta_description) ) {
688
- $meta_description_presenter_was_fired = true;
689
- }
690
- }
691
-
692
- $description = self::get_meta( '_yoast_wpseo_metadesc', $meta_description );
693
-
694
- } elseif ( 'term' == $presentation->model->object_type ) {
695
-
696
- /**
697
- * Taxonomy.
698
- * @since 2.5.1
699
- */
700
- if ( $meta_description_presenter_was_fired ) {
701
-
702
- /**
703
- * This is `wpseo_opengraph_desc` filter with empty yoast description.
704
- * @todo maybe need to use cache for term object.
705
- */
706
- $term = get_term( $presentation->model->object_id );
707
- if ( $term instanceof WP_Term ) {
708
- $description = $term->description;
709
- } else {
710
- $description = '';
711
- }
712
-
713
- } else {
714
-
715
- /**
716
- * @since 2.5.22
717
- */
718
- $description = self::get_taxonomy_meta( $presentation->model->object_sub_type, $presentation->model->object_id, 'wpseo_desc' );
719
-
720
- if ( empty($description) ) {
721
- $meta_description_presenter_was_fired = true;
722
- } else {
723
- $description = wpseo_replace_vars( $description, $presentation->source );
724
- }
725
- }
726
- }
727
-
728
- /**
729
- * @since 2.6.3
730
- */
731
- self::$description = $description;
732
-
733
- return $description;
734
- }
735
-
736
- /**
737
- * Filter canonical URL and open graph URL put out by Yoast SEO.
738
- *
739
- * @see wordpress-seo\src\presenters\canonical-presenter.php
740
- * @see wordpress-seo\src\presenters\open-graph\url-presenter.php
741
- * @scope front
742
- * @since 2.4
743
- * @since 2.5.1 Added support of taxonomies.
744
- * @since 2.5.10 Added `wpglobus_wpseo_localize_url` filter.
745
- *
746
- * @param string $url The canonical URL or open graph URL.
747
- * @param Indexable_Presentation $presentation The presentation of an indexable.
748
- *
749
- * @return string
750
- */
751
- public static function filter_front__localize_url( $url, $presentation ) {
752
- /**
753
- * URL is received from `permalink` field in `wp_yoast_indexable` table.
754
- */
755
- if ( WPGlobus::Config()->language == WPGlobus::Config()->default_language ) {
756
- return $url;
757
- }
758
-
759
- $tag = false;
760
- if ( is_singular() ) {
761
- $tag = 'singular';
762
- } elseif ( is_category() ) {
763
- $tag = 'category';
764
- } elseif ( is_tag() ) {
765
- $tag = 'tag';
766
- } elseif ( is_tax() ) {
767
- $tag = 'tax';
768
- }
769
-
770
- if ( $tag ) {
771
-
772
- $language =WPGlobus::Config()->language;
773
-
774
- self::$canonical_url[ WPGlobus::Config()->default_language ] = $url;
775
-
776
- /**
777
- * Filters for a localized url.
778
- *
779
- * @since 2.5.10
780
- *
781
- * @param string $url Localized URL.
782
- * @param string $language Current language.
783
- * @param string $tag Conditional Tag.
784
- */
785
- self::$canonical_url[ $language ] = apply_filters( 'wpglobus_wpseo_localize_url', WPGlobus_Utils::localize_url( $url, $language ), $language, $tag );
786
-
787
- self::$canonical_url[ $language ] = urldecode( self::$canonical_url[ $language ] );
788
-
789
- return self::$canonical_url[ $language ];
790
- }
791
-
792
- return $url;
793
- }
794
-
795
- /**
796
- * Filtering of the rel `prev` and `next` URL put out by Yoast SEO.
797
- *
798
- * @see wordpress-seo\src\presenters\rel-prev-presenter.php
799
- * @see wordpress-seo\src\presenters\rel-next-presenter.php
800
- * @scope front
801
- *
802
- * @since 2.5.11
803
- *
804
- * @param string $url Link relationship, prev or next.
805
- * @param string $relationship `prev` or `next`.
806
- * @param Indexable_Presentation $presentation The presentation of an indexable.
807
- *
808
- * @return string
809
- */
810
- public static function filter_front__wpseo_adjacent_rel_url( $link, $relationship, $presentation ) {
811
-
812
- if ( empty( $link ) || WPGlobus::Config()->language == WPGlobus::Config()->default_language ) {
813
- return $link;
814
- }
815
-
816
- if ( empty( self::$canonical_url ) ) {
817
- return $link;
818
- }
819
-
820
- return str_replace(
821
- self::$canonical_url[ WPGlobus::Config()->default_language ],
822
- self::$canonical_url[ WPGlobus::Config()->language ],
823
- $link
824
- );
825
- }
826
-
827
- /**
828
- * Filter the HTML output of the Yoast SEO breadcrumbs class.
829
- *
830
- * @see wordpress-seo\src\presenters\breadcrumbs-presenter.php
831
- * @scope front
832
- * @since 2.4.2
833
- *
834
- * @param $output The HTML output
835
- * @param Indexable_Presentation $presentation The presentation of an indexable.
836
- *
837
- * @api string $output The HTML output.
838
- *
839
- * @return string
840
- */
841
- public static function filter__breadcrumb_output( $output, $presentation ) {
842
-
843
- /** @global wpdb $wpdb */
844
- global $wpdb;
845
-
846
- $object_type = null;
847
- $object_sub_type = null;
848
- $object_order = null;
849
-
850
- if ( $presentation->source instanceof WP_Post ) {
851
-
852
- $object_type = 'post';
853
- $object_sub_type = $presentation->source->post_type;
854
-
855
- } elseif ( $presentation->source instanceof WP_Term ) {
856
-
857
- $object_type = 'taxonomy';
858
- $object_sub_type = $presentation->source->taxonomy;
859
-
860
- if ( $presentation->source->parent == 0 ) {
861
- $object_order = array($presentation->source->term_id);
862
- } else {
863
- $object_order = get_ancestors($presentation->source->term_id, $object_sub_type);
864
- if ( count($object_order) > 1 ) {
865
- $object_order = array_reverse( $object_order );
866
- }
867
- $object_order[] = $presentation->source->term_id;
868
- }
869
-
870
- }
871
-
872
- $ids = array();
873
- $breadcrumbs = array();
874
- $i = 0;
875
-
876
- foreach( $presentation->breadcrumbs as $order=>$piece ) {
877
-
878
- if ( $order == 0 ) {
879
-
880
- $_piece = '/' . preg_quote($piece['url'], '/') . '/';
881
-
882
- if ( empty( $piece['id'] ) ) {
883
- /**
884
- * If homepage displays as latest posts, then we should force the setting of `Home` for all languages.
885
- */
886
- $output = preg_replace( $_piece, home_url('/'), $output, 1 );
887
- } else {
888
- $output = preg_replace( $_piece, home_url('/'), $output, 1 );
889
- }
890
-
891
- if ( WPGlobus_Core::has_translations($piece['text']) ) {
892
- $_home_text = WPGlobus_Core::text_filter( $piece['text'], WPGlobus::Config()->language, WPGlobus::RETURN_IN_DEFAULT_LANGUAGE );
893
- $output = str_replace( $piece['text'], $_home_text, $output );
894
- }
895
-
896
- } else {
897
-
898
- switch ($object_type) :
899
- case 'post' :
900
- if ( ! empty($piece['id']) ) {
901
- $ids[] = $piece['id'];
902
- $breadcrumbs[ $piece['id'] ] = $piece;
903
- $breadcrumbs[ $piece['id'] ]['object_type'] = $object_type;
904
- $breadcrumbs[ $piece['id'] ]['object_sub_type'] = $object_sub_type;
905
- }
906
- break;
907
- case 'taxonomy' :
908
- $_id = $order;
909
- if ( ! is_null( $object_order ) ) {
910
- $_id = $object_order[$i];
911
- $ids[] = $_id;
912
- }
913
- $breadcrumbs[ $_id ] = $piece;
914
- $breadcrumbs[ $_id ]['object_type'] = $object_type;
915
- $breadcrumbs[ $_id ]['object_sub_type'] = $object_sub_type;
916
- $i++;
917
- break;
918
- endswitch;
919
- }
920
- }
921
-
922
- $query = null;
923
-
924
- if ( ! empty($ids) ) {
925
-
926
- $_ids = implode( ',', $ids );
927
- switch ($object_type) :
928
- case 'post' :
929
- $select = $wpdb->prepare( "SELECT ID, post_title AS ml_title, post_name, post_type FROM $wpdb->posts WHERE ID IN ( %s )", $_ids );
930
- $select = str_replace( "'", '', $select );
931
- break;
932
- case 'taxonomy' :
933
- $select = $wpdb->prepare( "SELECT term_id, name AS ml_title, slug FROM $wpdb->terms WHERE term_id IN ( %s )", $_ids );
934
- $select = str_replace( "'", '', $select );
935
- break;
936
- endswitch;
937
-
938
- $query = $wpdb->get_results( $select, OBJECT_K );
939
-
940
- foreach( $breadcrumbs as $id=>$piece ) {
941
-
942
- $output = str_replace(
943
- array(
944
- $piece['url'],
945
- $piece['text']
946
- ),
947
- array(
948
- WPGlobus_Utils::localize_url( $piece['url'], WPGlobus::Config()->language ),
949
- WPGlobus_Core::text_filter( $query[$id]->ml_title, WPGlobus::Config()->language )
950
- ),
951
- $output
952
- );
953
- }
954
- }
955
-
956
- /**
957
- * @since 2.4.2 @W.I.P
958
- */
959
- //$output = apply_filters( 'wpglobus_wpseo_breadcrumb_output', $output, $breadcrumbs, $query );
960
-
961
- return $output;
962
- }
963
-
964
- /**
965
- * Filter wpseo meta description.
966
- *
967
- * @see wordpress-seo\admin\class-meta-columns.php
968
- * @scope admin
969
- * @since 2.2.16
970
- *
971
- * @param string $metadesc_val Value in default language.
972
- *
973
- * @return string
974
- */
975
- public static function filter__wpseo_metadesc( $metadesc_val ) {
976
-
977
- if ( empty($metadesc_val) ) {
978
- return $metadesc_val;
979
- }
980
-
981
- if ( WPGlobus::Config()->language == WPGlobus::Config()->default_language ) {
982
- return $metadesc_val;
983
- }
984
-
985
- return self::get_meta( '_yoast_wpseo_metadesc', $metadesc_val );
986
- }
987
-
988
- /**
989
- * To translate Yoast `column-wpseo-title`.
990
- *
991
- * @see wordpress-seo\admin\class-meta-columns.php
992
- * @scope admin
993
- * @since 2.2.16
994
- *
995
- * @param string $title
996
- *
997
- * @return string
998
- */
999
- public static function filter__wpseo_title( $title ) {
1000
- return WPGlobus_Core::extract_text( $title, WPGlobus::Config()->language );
1001
- }
1002
-
1003
- /**
1004
- * Get meta for extra language.
1005
- *
1006
- * @scope admin
1007
- * @since 2.2.16
1008
- */
1009
- protected static function get_meta( $meta_key, $meta_value = '' ) {
1010
-
1011
- if ( is_null(self::$wpseo_meta) ) {
1012
- self::get_wpseo_meta();
1013
- }
1014
-
1015
- if ( empty( self::$wpseo_meta[ $meta_key ] ) ) {
1016
- return '';
1017
- }
1018
-
1019
- /** @global WP_Post $post */
1020
- global $post;
1021
-
1022
- if ( empty( $meta_value ) ) {
1023
-
1024
- /**
1025
- * Try get meta by post ID.
1026
- */
1027
- if ( ! $post instanceof WP_Post ) {
1028
- return '';
1029
- }
1030
- if ( empty( self::$wpseo_meta[$meta_key][$post->ID] ) ) {
1031
- return '';
1032
- }
1033
-
1034
- return WPGlobus_Core::text_filter( self::$wpseo_meta[$meta_key][$post->ID], WPGlobus::Config()->language, WPGlobus::RETURN_EMPTY );
1035
- }
1036
-
1037
- $_return_value = '';
1038
- foreach( self::$wpseo_meta[ $meta_key ] as $_meta_value ) {
1039
- if ( false !== strpos( $_meta_value, $meta_value ) ) {
1040
- $_return_value = WPGlobus_Core::text_filter( $_meta_value, WPGlobus::Config()->language, WPGlobus::RETURN_EMPTY );
1041
- break;
1042
- }
1043
- }
1044
-
1045
- return $_return_value;
1046
- }
1047
-
1048
- /**
1049
- * Get `_yoast_wpseo_metadesc`, `_yoast_wpseo_focuskw` meta.
1050
- *
1051
- * @scope both
1052
- * @since 2.4
1053
- * @since 2.4.6 Separate the defining of post type for frontend and admin.
1054
- * @since 2.4.14 Revised code.
1055
- */
1056
- protected static function get_wpseo_meta() {
1057
-
1058
- /** @global wpdb $wpdb */
1059
- global $wpdb;
1060
-
1061
- /** @global WP_Post $post */
1062
- global $post;
1063
-
1064
- $post_id = false;
1065
-
1066
- if ( is_admin() ) {
1067
-
1068
- /**
1069
- * Admin.
1070
- */
1071
- if ( ! empty( $_GET['post'] ) ) {
1072
- $post_id = sanitize_text_field( $_GET['post'] ); // phpcs:ignore WordPress.CSRF.NonceVerification
1073
- }
1074
-
1075
- } else {
1076
-
1077
- if ( $post instanceof WP_Post ) {
1078
-
1079
- /**
1080
- * Front-end.
1081
- */
1082
- $post_id = $post->ID;
1083
-
1084
- }
1085
- }
1086
-
1087
- if ( $post_id ) {
1088
-
1089
- $query = $wpdb->prepare(
1090
- "SELECT p.ID, p.post_type, pm.meta_key, pm.meta_value FROM {$wpdb->prefix}posts AS p JOIN {$wpdb->prefix}postmeta AS pm ON p.ID = pm.post_id WHERE p.ID = %s AND (pm.meta_key = %s OR pm.meta_key = %s)",
1091
- $post_id,
1092
- '_yoast_wpseo_metadesc',
1093
- '_yoast_wpseo_focuskw'
1094
- );
1095
-
1096
- $metas = $wpdb->get_results( $query, ARRAY_A );
1097
-
1098
- if ( ! empty( $metas ) ) {
1099
- foreach( $metas as $_meta ) {
1100
- if ( ! isset( self::$wpseo_meta[ $_meta['meta_key'] ] ) ) {
1101
- self::$wpseo_meta[ $_meta['meta_key'] ] = array();
1102
- }
1103
- self::$wpseo_meta[ $_meta['meta_key'] ][ $_meta['ID'] ] = $_meta['meta_value'];
1104
- }
1105
- }
1106
- } else {
1107
- // Here we can add code to get meta for multiple posts.
1108
- }
1109
- }
1110
-
1111
- /**
1112
- * Get taxonomy meta from `wpseo_taxonomy_meta` option.
1113
- *
1114
- * @since 2.5.1
1115
- * @since 2.5.22 Added $meta_key parameter to the `get_taxonomy_meta` function.
1116
- * @scope front
1117
- *
1118
- * @param string $object_sub_type The Indexable Object sub type.
1119
- * @param string $object_id The object ID.
1120
- * @param Indexable_Presentation $meta_key The WPSEO meta key.
1121
- *
1122
- * return string | array
1123
- */
1124
- protected static function get_taxonomy_meta( $object_sub_type, $object_id, $meta_key = '' ) {
1125
-
1126
- if ( is_null( self::$wpseo_taxonomy_meta ) ) {
1127
- self::$wpseo_taxonomy_meta = get_option( 'wpseo_taxonomy_meta' );
1128
- }
1129
-
1130
- if ( empty( self::$wpseo_taxonomy_meta[ $object_sub_type ][ $object_id ] ) ) {
1131
- return '';
1132
- }
1133
-
1134
- if ( empty( $meta_key ) ) {
1135
- return self::$wpseo_taxonomy_meta[ $object_sub_type ][ $object_id ];
1136
- }
1137
-
1138
- if ( empty( self::$wpseo_taxonomy_meta[ $object_sub_type ][ $object_id ][ $meta_key ] ) ) {
1139
- return '';
1140
- }
1141
-
1142
- $meta_value = WPGlobus_Core::text_filter(
1143
- self::$wpseo_taxonomy_meta[ $object_sub_type ][ $object_id ][ $meta_key ],
1144
- WPGlobus::Config()->language,
1145
- WPGlobus::RETURN_EMPTY
1146
- );
1147
-
1148
- return $meta_value;
1149
- }
1150
-
1151
- /**
1152
- * Enqueue JS for YoastSEO support.
1153
- *
1154
- * @since 1.4.0
1155
- * @since 2.2.20
1156
- * @since 2.4.5 Add JS script on dashboard.
1157
- */
1158
- public static function action__admin_print_scripts() {
1159
-
1160
- if ( WPGlobus_WP::is_pagenow( 'admin.php' ) ) {
1161
-
1162
- if ( 'wpseo_tools' == WPGlobus_Utils::safe_get('page') && 'bulk-editor' == WPGlobus_Utils::safe_get('tool') ) {
1163
-
1164
- $wrng1 = '<div>' . esc_html__( 'Bulk editing of the multilingual titles and descriptions is not supported by the current version.', 'wpglobus' ) . '</div>';
1165
- $wrng2 = '<div>' . esc_html__( 'Therefore, to avoid any data loss, we do not recommend using this.', 'wpglobus' ) . '</div>';
1166
-
1167
- $i18n = array(
1168
- 'preWarning' => esc_html__( 'WPGlobus warning: ', 'wpglobus' ),
1169
- 'bulkEditorWarning' => $wrng1 . $wrng2,
1170
- );
1171
-
1172
- $src = WPGlobus::$PLUGIN_DIR_URL . 'includes/js/wpglobus-yoastseo-dashboard' . WPGlobus::SCRIPT_SUFFIX() . '.js';
1173
-
1174
- wp_register_script(
1175
- self::$handle_script_dashboard,
1176
- $src,
1177
- array( 'jquery' ),
1178
- WPGLOBUS_VERSION,
1179
- true
1180
- );
1181
-
1182
- wp_enqueue_script(self::$handle_script_dashboard);
1183
-
1184
- wp_localize_script(
1185
- self::$handle_script_dashboard,
1186
- 'WPGlobusYoastSeoDashboard',
1187
- array(
1188
- 'version' => WPGLOBUS_VERSION,
1189
- 'wpseo_version' => WPSEO_VERSION,
1190
- 'pagenow' => 'admin.php',
1191
- 'page' => WPGlobus_Utils::safe_get('page'),
1192
- 'tool' => WPGlobus_Utils::safe_get('tool'),
1193
- 'i18n' => $i18n
1194
- )
1195
- );
1196
-
1197
- return;
1198
- }
1199
- }
1200
-
1201
- if ( 'off' === WPGlobus::Config()->toggle ) {
1202
- return;
1203
- }
1204
-
1205
- if ( self::disabled_entity() ) {
1206
- return;
1207
- }
1208
-
1209
- /** @global string $pagenow */
1210
- global $pagenow;
1211
-
1212
- $enabled_pages = array(
1213
- 'post.php',
1214
- 'post-new.php',
1215
- 'edit-tags.php',
1216
- 'term.php'
1217
- );
1218
-
1219
- if ( WPGlobus_WP::is_pagenow( $enabled_pages ) ) {
1220
-
1221
- WPGlobus::O()->vendors_scripts['WPSEO'] = true;
1222
-
1223
- if ( defined( 'WPSEO_PREMIUM_PLUGIN_FILE' ) ) {
1224
- /**
1225
- * @see wordpress-seo-premium\wp-seo-premium.php
1226
- */
1227
- WPGlobus::O()->vendors_scripts['WPSEO_PREMIUM'] = true;
1228
- }
1229
-
1230
- $yoastseo_plus_readability_access = '';
1231
- $yoastseo_plus_readability_inactive = '';
1232
-
1233
- $yoastseo_plus_page_analysis_access = '';
1234
- $yoastseo_plus_page_analysis_inactive = '';
1235
-
1236
- $yoastseo_plus_meta_keywords_access = '';
1237
- $yoastseo_plus_meta_keywords_inactive = '';
1238
-
1239
- $yoastseo_plus_social_access = '';
1240
- $yoastseo_plus_social_inactive = '';
1241
-
1242
- if ( WPGlobus::Config()->builder->is_builder_page() ) {
1243
-
1244
- $_url = '#';
1245
- if ( class_exists('WPGlobusPlus') ) {
1246
- /**
1247
- * @see wpglobus-plus\includes\wpglobus-plus-main.php
1248
- */
1249
- $_url = add_query_arg(
1250
- array(
1251
- 'page' => 'wpglobus-plus-options'
1252
- ),
1253
- admin_url('admin.php')
1254
- );
1255
- }
1256
-
1257
- $yoastseo_plus_readability_access = sprintf(
1258
- esc_html__( 'Please see %1s to get access to Analysis results in %2s with YoastSEO.', '' ),
1259
- '<a href="https://wpglobus.com/product/wpglobus-plus/#yoastseo" target="_blank">WPGlobus Plus</a>',
1260
- WPGlobus::Config()->en_language_name[ WPGlobus::Config()->builder->get_language() ]
1261
- );
1262
- $yoastseo_plus_readability_inactive = sprintf(
1263
- esc_html__( 'Please activate %1sYoast SEO Plus%2s module to get access to Analysis results in %3s with YoastSEO.', '' ),
1264
- '<a href="'.$_url.'">',
1265
- '</a>',
1266
- WPGlobus::Config()->en_language_name[ WPGlobus::Config()->builder->get_language() ]
1267
- );
1268
-
1269
- $yoastseo_plus_page_analysis_access = sprintf(
1270
- esc_html__( 'Please see %1s to get access to Analysis results in %2s with YoastSEO.', '' ),
1271
- '<a href="https://wpglobus.com/product/wpglobus-plus/#yoastseo" target="_blank">WPGlobus Plus</a>',
1272
- WPGlobus::Config()->en_language_name[ WPGlobus::Config()->builder->get_language() ]
1273
- );
1274
- $yoastseo_plus_page_analysis_inactive = sprintf(
1275
- esc_html__( 'Please activate %1sYoast SEO Plus%2s module to get access to Analysis results in %3s with YoastSEO.', '' ),
1276
- '<a href="'.$_url.'">',
1277
- '</a>',
1278
- WPGlobus::Config()->en_language_name[ WPGlobus::Config()->builder->get_language() ]
1279
- );
1280
-
1281
- $yoastseo_plus_meta_keywords_access = sprintf(
1282
- esc_html__( 'Please see %1s to get access to Focus keyphrase in %2s with YoastSEO.', '' ),
1283
- '<a href="https://wpglobus.com/product/wpglobus-plus/#yoastseo" target="_blank">WPGlobus Plus</a>',
1284
- WPGlobus::Config()->en_language_name[ WPGlobus::Config()->builder->get_language() ]
1285
- );
1286
- $yoastseo_plus_meta_keywords_inactive = sprintf(
1287
- esc_html__( 'Please activate %1sYoast SEO Plus%2s module to get access to Focus keyphrase in %1s with YoastSEO.', '' ),
1288
- '<a href="'.$_url.'">',
1289
- '</a>',
1290
- WPGlobus::Config()->en_language_name[ WPGlobus::Config()->builder->get_language() ]
1291
- );
1292
-
1293
- $yoastseo_plus_social_access = sprintf(
1294
- esc_html__( 'Please see %1s to get access to Social Tab content in %2s with YoastSEO.', '' ),
1295
- '<a href="https://wpglobus.com/product/wpglobus-plus/#yoastseo" target="_blank">WPGlobus Plus</a>',
1296
- WPGlobus::Config()->en_language_name[ WPGlobus::Config()->builder->get_language() ]
1297
- );
1298
- $yoastseo_plus_social_inactive = sprintf(
1299
- esc_html__( 'Please activate %1sYoast SEO Plus%2s module to get access to Social Tab content in %1s with YoastSEO.', '' ),
1300
- '<a href="'.$_url.'">',
1301
- '</a>',
1302
- WPGlobus::Config()->en_language_name[ WPGlobus::Config()->builder->get_language() ]
1303
- );
1304
- }
1305
-
1306
- $i18n = array(
1307
- 'yoastseo_plus_readability_access' => $yoastseo_plus_readability_access,
1308
- 'yoastseo_plus_readability_inactive' => $yoastseo_plus_readability_inactive,
1309
- 'yoastseo_plus_page_analysis_access' => $yoastseo_plus_page_analysis_access,
1310
- 'yoastseo_plus_page_analysis_inactive' => $yoastseo_plus_page_analysis_inactive,
1311
- 'yoastseo_plus_meta_keywords_access' => $yoastseo_plus_meta_keywords_access,
1312
- 'yoastseo_plus_meta_keywords_inactive' => $yoastseo_plus_meta_keywords_inactive,
1313
- 'yoastseo_plus_social_access' => $yoastseo_plus_social_access,
1314
- 'yoastseo_plus_social_inactive' => $yoastseo_plus_social_inactive
1315
- );
1316
-
1317
- $src_version = false;
1318
- $src_version_premium = false;
1319
-
1320
- if ( ! WPGlobus::O()->vendors_scripts['WPSEO_PREMIUM'] ) {
1321
-
1322
- /** @noinspection PhpInternalEntityUsedInspection */
1323
- $src_version = version_compare( WPSEO_VERSION, '4.0', '>=' ) ? '40' : $src_version;
1324
- /** @noinspection PhpInternalEntityUsedInspection */
1325
- $src_version = version_compare( WPSEO_VERSION, '4.1', '>=' ) ? '41' : $src_version;
1326
- /** @noinspection PhpInternalEntityUsedInspection */
1327
- $src_version = version_compare( WPSEO_VERSION, '4.4', '>=' ) ? '44' : $src_version;
1328
- if (
1329
- /** @noinspection PhpInternalEntityUsedInspection */
1330
- version_compare( WPSEO_VERSION, '4.8', '>=' )
1331
- ) {
1332
- $src_version = self::$version;
1333
- }
1334
-
1335
- } else {
1336
- /**
1337
- * Start with Yoast SEO Premium.
1338
- */
1339
-
1340
- /**
1341
- * Version of file yoast seo must be latest.
1342
- */
1343
- /** @noinspection PhpInternalEntityUsedInspection */
1344
- $src_version = version_compare( WPSEO_VERSION, '3.9', '>=' ) ? self::$version : $src_version;
1345
- /** @noinspection PhpInternalEntityUsedInspection */
1346
- $src_version_premium = version_compare( WPSEO_VERSION, '3.9', '>=' ) ? '39' : $src_version_premium;
1347
- /**
1348
- * @since WPGlobus 2.2.17
1349
- */
1350
- $src_version_premium = version_compare( WPSEO_VERSION, '12.0', '>=' ) ? $src_version : $src_version_premium;
1351
-
1352
- }
1353
-
1354
- if ( $src_version ) :
1355
-
1356
- $handle = self::$handle_script;
1357
-
1358
- $src = WPGlobus::$PLUGIN_DIR_URL . 'includes/js/' .
1359
- $handle . '-' . $src_version .
1360
- WPGlobus::SCRIPT_SUFFIX() . '.js';
1361
-
1362
- wp_register_script(
1363
- $handle,
1364
- $src,
1365
- array( 'jquery', 'underscore' ),
1366
- WPGLOBUS_VERSION,
1367
- true
1368
- );
1369
-
1370
- wp_enqueue_script($handle);
1371
-
1372
- wp_localize_script(
1373
- $handle,
1374
- 'WPGlobusYoastSeo',
1375
- array(
1376
- 'version' => WPGLOBUS_VERSION,
1377
- 'wpseo_version' => WPSEO_VERSION,
1378
- 'src_version' => $src_version,
1379
- 'builder_id' => WPGlobus::Config()->builder->get('id'),
1380
- 'builder_page' => WPGlobus::Config()->builder->is_builder_page() ? 'true' : 'false',
1381
- 'language' => WPGlobus::Config()->builder->get_language(),
1382
- 'is_default_language' => WPGlobus::Config()->builder->is_default_language() ? true : false,
1383
- 'src_version_premium' => $src_version_premium,
1384
- 'plus_module' => self::$plus_module,
1385
- 'access_extra' => ( defined( 'WPGLOBUS_YOAST_SEO_ACCESS_EXTRA' ) && WPGLOBUS_YOAST_SEO_ACCESS_EXTRA ) ? 'true' : 'false'
1386
- )
1387
- );
1388
-
1389
- wp_localize_script(
1390
- $handle,
1391
- 'WPGlobusVendor',
1392
- array(
1393
- 'version' => WPGLOBUS_VERSION,
1394
- 'vendor' => WPGlobus::O()->vendors_scripts,
1395
- 'pagenow' => $pagenow,
1396
- 'i18n' => $i18n
1397
- )
1398
- );
1399
-
1400
- endif;
1401
- }
1402
- }
1403
-
1404
- /**
1405
- * Check disabled entity.
1406
- *
1407
- * @since 1.7.3
1408
- * @return boolean
1409
- */
1410
- public static function disabled_entity() {
1411
-
1412
- if ( WPGlobus_WP::is_pagenow( array( 'edit-tags.php', 'term.php' ) ) ) :
1413
- /**
1414
- * Don't check page when editing taxonomy.
1415
- */
1416
- return false;
1417
- endif;
1418
-
1419
- /** @global WP_Post $post */
1420
- global $post;
1421
-
1422
- $result = false;
1423
- if ( WPGlobus_WP::is_pagenow( array( 'post.php', 'post-new.php' ) ) ) :
1424
- if ( empty( $post ) ) {
1425
- $result = true;
1426
- } elseif ( WPGlobus::O()->disabled_entity( $post->post_type ) ) {
1427
- $result = true;
1428
- }
1429
- endif;
1430
- return $result;
1431
- }
1432
-
1433
- /**
1434
- * Filter allows changing graph breadcrumb output.
1435
- *
1436
- * @see wordpress-seo\src\generators\schema-generator.php
1437
- * @see "application/ld+json" in html code on front.
1438
- *
1439
- * @since 2.4.7
1440
- *
1441
- * @scope front
1442
- * @param array $graph_piece Array of graph piece.
1443
- * @param Meta_Tags_Context $context A value object with context variables.
1444
- * @return array
1445
- */
1446
- public static function filter__wpseo_schema_breadcrumb( $graph_piece, $context ) {
1447
-
1448
- if ( empty( $graph_piece['itemListElement'] ) ) {
1449
- return $graph_piece;
1450
- }
1451
-
1452
- $itemListElement = $graph_piece['itemListElement'];
1453
-
1454
- foreach( $itemListElement as $_key=>$_item ) {
1455
- if ( ! empty( $_item['item']['name'] ) && WPGlobus_Core::has_translations( $_item['item']['name'] ) ) {
1456
- $graph_piece['itemListElement'][$_key]['item']['name'] = WPGlobus_Core::extract_text( $graph_piece['itemListElement'][$_key]['item']['name'], WPGlobus::Config()->language );
1457
- }
1458
- }
1459
-
1460
- return $graph_piece;
1461
- }
1462
-
1463
- /**
1464
- * Filter allows changing output of graph `webpage`.
1465
- *
1466
- * @see wordpress-seo\src\generators\schema-generator.php
1467
- * @see "application/ld+json" in html code on front.
1468
- *
1469
- * @since 2.4.14
1470
- * @since 2.4.15 Localize description.
1471
- * @since 2.5.1 Added support of taxonomies.
1472
- *
1473
- * @scope front
1474
- * @param array $graph_piece Array of graph piece.
1475
- * @param Meta_Tags_Context $context A value object with context variables.
1476
- * @return array
1477
- */
1478
- public static function filter__wpseo_schema_webpage( $graph_piece, $context ) {
1479
-
1480
- if ( 'post' == $context->indexable->object_type ) {
1481
-
1482
- if ( ! empty( $graph_piece['name'] ) && WPGlobus_Core::has_translations( $graph_piece['name'] ) ) {
1483
- $graph_piece['name'] = WPGlobus_Core::extract_text( $graph_piece['name'], WPGlobus::Config()->language );
1484
- }
1485
-
1486
- /**
1487
- * @since 2.4.15
1488
- */
1489
- if ( ! empty( $graph_piece['description'] ) && WPGlobus_Core::has_translations( $graph_piece['description'] ) ) {
1490
- $graph_piece['description'] = WPGlobus_Core::extract_text( $graph_piece['description'], WPGlobus::Config()->language );
1491
- }
1492
-
1493
- } elseif ( 'term' == $context->indexable->object_type ) {
1494
-
1495
- /**
1496
- * Taxonomy.
1497
- * @since 2.5.1
1498
- */
1499
- $graph_piece['description'] = self::get_taxonomy_meta( $context->indexable->object_sub_type, $context->indexable->object_id, 'wpseo_desc' );
1500
- $graph_piece['url'] = WPGlobus_Utils::localize_url( $graph_piece['url'], WPGlobus::Config()->language );
1501
- $graph_piece['@id'] = WPGlobus_Utils::localize_url( $graph_piece['@id'], WPGlobus::Config()->language );
1502
- $graph_piece['breadcrumb']['@id'] = WPGlobus_Utils::localize_url( $graph_piece['breadcrumb']['@id'], WPGlobus::Config()->language );
1503
- }
1504
-
1505
- return $graph_piece;
1506
- }
1507
-
1508
- /**
1509
- * Filter for changing the Yoast SEO generated title.
1510
- *
1511
- * @see wordpress-seo\src\presenters\title-presenter.php
1512
- *
1513
- * @since 2.5.22
1514
- *
1515
- * @scope front
1516
- *
1517
- * @param string $title The title.
1518
- * @param Indexable_Presentation $presentation The presentation of an indexable.
1519
- *
1520
- * @return string
1521
- */
1522
- public static function filter_front__title( $title, $presentation ) {
1523
-
1524
- if ( 'post' == $presentation->model->object_type ) {
1525
-
1526
- /**
1527
- * Post.
1528
- */
1529
- $meta_cache = wp_cache_get( $presentation->model->object_id, 'post_meta' );
1530
-
1531
- if ( ! empty( $meta_cache['_yoast_wpseo_title'][0] ) ) {
1532
-
1533
- $__title = WPGlobus_Core::text_filter( $meta_cache['_yoast_wpseo_title'][0], WPGlobus::Config()->language );
1534
-
1535
- if ( $presentation->source instanceof WP_Post ) {
1536
-
1537
- if ( WPGlobus_Core::has_translations( $presentation->source->post_title ) ) {
1538
- $presentation->source->post_title = WPGlobus_Core::text_filter( $presentation->source->post_title, WPGlobus::Config()->language );
1539
- }
1540
-
1541
- /**
1542
- * @see wordpress-seo\inc\wpseo-functions.php
1543
- */
1544
- $title = wpseo_replace_vars( $__title, $presentation->source );
1545
- }
1546
-
1547
- } else {
1548
-
1549
- /**
1550
- * @since 2.5.23
1551
- */
1552
- if ( WPGlobus_Core::has_translations( $title ) ) {
1553
- $title = WPGlobus_Core::extract_text( $title, WPGlobus::Config()->language );
1554
- }
1555
-
1556
- }
1557
-
1558
- } elseif ( 'term' == $presentation->model->object_type ) {
1559
-
1560
- /**
1561
- * Taxonomy.
1562
- */
1563
- $__title = self::get_taxonomy_meta( $presentation->model->object_sub_type, $presentation->model->object_id, 'wpseo_title' );
1564
-
1565
- if ( empty( $__title ) ) {
1566
- $__title = self::get_option( 'wpseo_titles', 'title-tax-' . $presentation->model->object_sub_type );
1567
- }
1568
-
1569
- $title = wpseo_replace_vars( $__title, $presentation->source );
1570
-
1571
- }
1572
-
1573
- return $title;
1574
- }
1575
-
1576
- /**
1577
- * Get wpseo options.
1578
- *
1579
- * @since 2.5.22
1580
- *
1581
- * @return array|string
1582
- */
1583
- public static function get_option( $option = 'wpseo_titles', $key = '' ) {
1584
-
1585
- /**
1586
- * @todo Maybe to use WPSEO_Options.
1587
- * @see wordpress-seo\inc\options\class-wpseo-options.php
1588
- * @since 2.5.22
1589
- */
1590
-
1591
- $options = get_option( $option );
1592
-
1593
- if ( empty( $key ) ) {
1594
- return $options;
1595
- }
1596
-
1597
- if ( ! isset( $options[$key] ) ) {
1598
- return null;
1599
- }
1600
-
1601
- return $options[$key];
1602
- }
1603
-
1604
- } // class WPGlobus_YoastSEO.
1605
-
 
 
 
 
 
 
 
1606
  # --- EOF
1
+ <?php
2
+ /**
3
+ * File: class-wpglobus-yoastseo140.php
4
+ *
5
+ * Support of Yoast SEO 14.0
6
+ *
7
+ * @package WPGlobus\Vendor\YoastSEO
8
+ * @since 2.4
9
+ * @since 2.5.19 Added support multilingual fields for social tab.
10
+ */
11
+
12
+ /**
13
+ * Class WPGlobus_YoastSEO.
14
+ */
15
+ class WPGlobus_YoastSEO {
16
+
17
+ /**
18
+ * Yoast SEO separator.
19
+ *
20
+ * @var string
21
+ */
22
+ public static $yoastseo_separator = '';
23
+
24
+ /**
25
+ * Name of the script.
26
+ *
27
+ * @var string
28
+ */
29
+ public static $handle_script = 'wpglobus-yoastseo';
30
+
31
+ /**
32
+ * Name of the dashboard script.
33
+ *
34
+ * @since 2.4.5
35
+ * @var string
36
+ */
37
+ public static $handle_script_dashboard = 'wpglobus-yoastseo-dashboard';
38
+
39
+ /**
40
+ * Name of the premium script.
41
+ *
42
+ * @since 1.7.2
43
+ * @var string
44
+ */
45
+ public static $handle_script_premium = 'wpglobus-yoastseo-premium';
46
+
47
+ /**
48
+ * Current version yoast seo.
49
+ *
50
+ * @since 1.8
51
+ * @var string
52
+ */
53
+ protected static $version = '';
54
+
55
+ /**
56
+ * Contains wpseo post meta.
57
+ *
58
+ * @since 2.2.16
59
+ * @var null|array
60
+ */
61
+ protected static $wpseo_meta = null;
62
+
63
+ /**
64
+ * Contains wpseo taxonomy meta.
65
+ *
66
+ * @since 2.5.1
67
+ * @var null|array
68
+ */
69
+ protected static $wpseo_taxonomy_meta = null;
70
+
71
+ /**
72
+ * Contains document title.
73
+ *
74
+ * @since 2.4.7
75
+ * @var null|string
76
+ */
77
+ protected static $title = null;
78
+
79
+ /**
80
+ * Plus access.
81
+ *
82
+ * @since 2.2.20
83
+ * @var boolean|string
84
+ */
85
+ protected static $plus_module = false;
86
+
87
+ /**
88
+ * Canonical URLs.
89
+ *
90
+ * @since 2.5.11
91
+ * @var array
92
+ */
93
+ protected static $canonical_url = array();
94
+
95
+ /**
96
+ * Description meta value.
97
+ *
98
+ * @scope front
99
+ * @since 2.6.3
100
+ * @var string
101
+ */
102
+ protected static $description = '';
103
+
104
+ /**
105
+ * Static "controller"
106
+ */
107
+ public static function controller($version, $plus_module = false) {
108
+
109
+ self::$version = $version;
110
+ self::$plus_module = $plus_module;
111
+
112
+ if ( is_admin() ) {
113
+
114
+ /**
115
+ * @since 2.2.20
116
+ */
117
+ add_action( 'admin_print_scripts', array(
118
+ __CLASS__,
119
+ 'action__admin_print_scripts'
120
+ ) );
121
+
122
+ if ( WPGlobus_WP::is_pagenow( 'edit.php' ) ) {
123
+
124
+ /**
125
+ * To translate Yoast columns on `edit.php` page.
126
+ * @since 2.2.16
127
+ */
128
+ add_filter( 'wpseo_title', array(
129
+ __CLASS__,
130
+ 'filter__wpseo_title'
131
+ ), 5 );
132
+
133
+
134
+ add_filter( 'wpseo_metadesc', array(
135
+ __CLASS__,
136
+ 'filter__wpseo_metadesc'
137
+ ), 5 );
138
+ }
139
+
140
+ } else {
141
+
142
+ /**
143
+ * Frontend.
144
+ */
145
+
146
+ /**
147
+ * Filter SEO title and meta description on front only, when the page header HTML tags are generated.
148
+ * AJAX is probably not required (waiting for a case).
149
+ */
150
+ // add_filter( 'wpseo_title', array( __CLASS__, 'filter__title' ), PHP_INT_MAX );
151
+ /**
152
+ * Filter title description.
153
+ * @since 2.5.22
154
+ */
155
+ add_filter( 'wpseo_title', array( __CLASS__, 'filter_front__title' ), PHP_INT_MAX, 2 );
156
+
157
+ /**
158
+ * Filter meta description.
159
+ * @since 2.4
160
+ */
161
+ add_filter( 'wpseo_metadesc', array( __CLASS__, 'filter_front__description' ), 5, 2 );
162
+
163
+ /**
164
+ * Open Graph.
165
+ * @since 2.4 Open Graph title.
166
+ * @since 2.4 Open Graph description.
167
+ * @since 2.4 Open Graph URL.
168
+ * @since 2.5.19 Open Graph image.
169
+ */
170
+ add_filter( 'wpseo_opengraph_title', array( __CLASS__, 'filter_front__opengraph_title' ), 5, 2 );
171
+ add_filter( 'wpseo_opengraph_desc', array( __CLASS__, 'filter_front__opengraph_description' ), 5, 2 );
172
+ add_filter( 'wpseo_opengraph_image', array( __CLASS__, 'filter_front__opengraph_image' ), 5, 2 );
173
+ add_filter( 'wpseo_opengraph_url', array( __CLASS__, 'filter_front__localize_url' ), 5, 2 );
174
+
175
+ /**
176
+ * Twitter.
177
+ * @since 2.5.19
178
+ */
179
+ add_filter( 'wpseo_twitter_title', array( __CLASS__, 'filter_front__twitter_title' ), 5, 2 );
180
+ add_filter( 'wpseo_twitter_description', array( __CLASS__, 'filter_front__twitter_description' ), 5, 2 );
181
+ add_filter( 'wpseo_twitter_image', array( __CLASS__, 'filter_front__twitter_image' ), 5, 2 );
182
+
183
+ /**
184
+ * Filter canonical URL and open graph URL.
185
+ * @since 2.4
186
+ */
187
+ add_filter( 'wpseo_canonical', array( __CLASS__, 'filter_front__localize_url' ), 5, 2 );
188
+
189
+ /**
190
+ * Filter of the rel prev and next URL put out by Yoast SEO.
191
+ * @since 2.5.11
192
+ */
193
+ add_filter( 'wpseo_adjacent_rel_url', array( __CLASS__, 'filter_front__wpseo_adjacent_rel_url' ), 5, 3 );
194
+
195
+ /**
196
+ * Filter the HTML output of the Yoast SEO breadcrumbs class.
197
+ * @since 2.4.2
198
+ */
199
+ add_filter( 'wpseo_breadcrumb_output', array( __CLASS__, 'filter__breadcrumb_output' ), 5, 2 );
200
+
201
+ /**
202
+ * @todo check for '_yoast_wpseo_title' meta
203
+ * @see <title> view-source:http://test/test-post-seo/
204
+ * @see <title> view-source:http://test/ru/test-post-seo/
205
+ */
206
+ add_filter( 'get_post_metadata', array( __CLASS__, 'filter__get_post_metadata' ), 6, 4 );
207
+
208
+ /**
209
+ * Filter meta keywords.
210
+ * @since 1.8.8
211
+ */
212
+ add_filter( 'wpseo_metakeywords', array( __CLASS__, 'filter__metakeywords' ), 0 );
213
+
214
+ /**
215
+ * Filter `wpseo_schema_breadcrumb` generator.
216
+ * @since 2.4.7
217
+ */
218
+ add_filter( 'wpseo_schema_breadcrumb', array( __CLASS__, 'filter__wpseo_schema_breadcrumb' ), 5, 2 );
219
+
220
+ /**
221
+ * Filter `wpseo_schema_webpage` generator.
222
+ * @since 2.4.14
223
+ */
224
+ add_filter( 'wpseo_schema_webpage', array( __CLASS__, 'filter__wpseo_schema_webpage' ), 5, 2 );
225
+ }
226
+ }
227
+
228
+ /**
229
+ * obsolete @since 2.5.22
230
+ * Filter Yoast post meta title.
231
+ *
232
+ * @scope front
233
+ * @since 1.9.18
234
+ * @since 2.4.7 Handle multilingual title from `postmeta` table.
235
+ *
236
+ * @param string $title Post title.
237
+ *
238
+ * @return string.
239
+ */
240
+ public static function filter__title( $title ) {
241
+
242
+ /**
243
+ * In some cases we can get $title like {:en}En title{:}{:ru}Ru title{:}{:fr}Fr title{:} - SiteTitle
244
+ * so, let's filter.
245
+ */
246
+ if ( WPGlobus_Core::has_translations($title) ) {
247
+
248
+ if ( is_null( self::$title ) ) {
249
+ self::$title = $title;
250
+ }
251
+ return WPGlobus_Core::extract_text( self::$title, WPGlobus::Config()->language );
252
+ }
253
+
254
+ /**
255
+ * We can get title in last saved language (has no multilingual) from @see `wp_yoast_indexable` table.
256
+ * So, we need get multilingual title from `postmeta` table.
257
+ * @since 2.4.7
258
+ */
259
+ if ( ! is_null( self::$title ) ) {
260
+ return WPGlobus_Core::extract_text( self::$title, WPGlobus::Config()->language );
261
+ }
262
+
263
+ /** @global wpdb $wpdb */
264
+ global $wpdb;
265
+
266
+ /** @global WP_Post $post */
267
+ global $post;
268
+
269
+ /**
270
+ * @since 2.4.14 Fixed PHP Notice: Trying to get property 'ID' of non-object.
271
+ */
272
+ if ( $post instanceof WP_Post && (int) $post->ID > 0 ) {
273
+ $query = $wpdb->prepare(
274
+ "SELECT meta_value FROM {$wpdb->prefix}postmeta AS m WHERE m.post_id = %s AND m.meta_key = %s",
275
+ $post->ID,
276
+ '_yoast_wpseo_title'
277
+ );
278
+
279
+ $meta = $wpdb->get_var($query);
280
+ if ( ! empty($meta) && false != mb_strpos($meta, $title) && WPGlobus_Core::has_translations($meta) ) {
281
+ self::$title = $meta;
282
+ return WPGlobus_Core::extract_text( self::$title, WPGlobus::Config()->language );
283
+ }
284
+ }
285
+
286
+ return $title;
287
+ }
288
+
289
+ /**
290
+ * Filter for changing the Yoast SEO generated Open Graph description.
291
+ *
292
+ * @see wordpress-seo\src\presenters\open-graph\description-presenter.php
293
+ *
294
+ * @since 2.5.19
295
+ *
296
+ * @scope front
297
+ * @param string $description The description.
298
+ * @param Indexable_Presentation $presentation The presentation of an indexable.
299
+ *
300
+ * @return string
301
+ */
302
+ public static function filter_front__opengraph_description( $description, $presentation ) {
303
+
304
+ if ( empty( $description ) ) {
305
+ return $description;
306
+ }
307
+
308
+ if ( 'post' == $presentation->model->object_type ) {
309
+
310
+ $meta_cache = wp_cache_get( $presentation->model->object_id, 'post_meta' );
311
+
312
+ if ( ! empty( $meta_cache['_yoast_wpseo_opengraph-description'][0] ) ) {
313
+
314
+ $description = WPGlobus_Core::text_filter( $meta_cache['_yoast_wpseo_opengraph-description'][0], WPGlobus::Config()->language );
315
+
316
+ if ( $presentation->source instanceof WP_Post ) {
317
+ /**
318
+ * @see wordpress-seo\inc\wpseo-functions.php
319
+ */
320
+ $description = wpseo_replace_vars( $description, $presentation->source );
321
+ }
322
+ } else {
323
+ /**
324
+ * Opengraph description is empty. We get it from `description` meta.
325
+ * @since 2.6.3
326
+ */
327
+ $description = self::$description;
328
+ }
329
+
330
+ } elseif ( 'term' == $presentation->model->object_type ) {
331
+
332
+ /**
333
+ * Taxonomy.
334
+ */
335
+ $__desc = self::get_taxonomy_meta( $presentation->model->object_sub_type, $presentation->model->object_id, 'wpseo_desc' );
336
+
337
+ if ( empty( $__desc ) ) {
338
+
339
+ $__template = self::get_option( 'wpseo_titles', 'metadesc-tax-' . $presentation->model->object_sub_type );
340
+
341
+ if ( ! empty( $__template ) ) {
342
+ $__desc = $__template;
343
+ } else {
344
+ // @W.I.P if empty `Meta description` from Yoast, then we need output `Description` from Edit taxonomy page.
345
+ $__desc = $presentation->source->description;
346
+ }
347
+
348
+ }
349
+
350
+ $description = wpseo_replace_vars( $__desc, $presentation->source );
351
+ }
352
+
353
+ return $description;
354
+ }
355
+
356
+ /**
357
+ * Filter for changing the Open Graph image.
358
+ *
359
+ * @see wordpress-seo\src\presenters\open-graph\image-presenter.php
360
+ *
361
+ * @since 2.5.19
362
+ *
363
+ * @scope front
364
+ * @param string $image_url The URL of the Open Graph image.
365
+ * @param Indexable_Presentation $presentation The presentation of an indexable.
366
+ *
367
+ * @return string
368
+ */
369
+ public static function filter_front__opengraph_image( $image_url, $presentation ) {
370
+
371
+ if ( empty( $image_url) ) {
372
+ return $image_url;
373
+ }
374
+
375
+ if ( 'post' == $presentation->model->object_type ) {
376
+
377
+ $meta_cache = wp_cache_get( $presentation->model->object_id, 'post_meta' );
378
+
379
+ if ( ! empty( $meta_cache['_yoast_wpseo_opengraph-image'][0] ) ) {
380
+
381
+ $image_url = WPGlobus_Core::text_filter( $meta_cache['_yoast_wpseo_opengraph-image'][0], WPGlobus::Config()->language );
382
+
383
+ if ( $presentation->source instanceof WP_Post ) {
384
+ /**
385
+ * @see wordpress-seo\inc\wpseo-functions.php
386
+ */
387
+ $image_url = wpseo_replace_vars( $image_url, $presentation->source );
388
+ }
389
+ }
390
+ }
391
+
392
+ return $image_url;
393
+ }
394
+
395
+ /**
396
+ * Filter for changing the Twitter title.
397
+ *
398
+ * @see wordpress-seo\src\presenters\twitter\title-presenter.php
399
+ *
400
+ * @since 2.5.19
401
+ *
402
+ * @scope front
403
+ * @param string $title The Twitter title.
404
+ * @param Indexable_Presentation $presentation The presentation of an indexable.
405
+ *
406
+ * @return string
407
+ */
408
+ public static function filter_front__twitter_title( $title, $presentation ) {
409
+
410
+ if ( empty( $title ) ) {
411
+ return $title;
412
+ }
413
+
414
+ if ( 'post' == $presentation->model->object_type ) {
415
+
416
+ $meta_cache = wp_cache_get( $presentation->model->object_id, 'post_meta' );
417
+
418
+ if ( ! empty( $meta_cache['_yoast_wpseo_twitter-title'][0] ) ) {
419
+
420
+ $title = WPGlobus_Core::text_filter( $meta_cache['_yoast_wpseo_twitter-title'][0], WPGlobus::Config()->language );
421
+
422
+ if ( $presentation->source instanceof WP_Post ) {
423
+ /**
424
+ * @see wordpress-seo\inc\wpseo-functions.php
425
+ */
426
+ $title = wpseo_replace_vars( $title, $presentation->source );
427
+ }
428
+ }
429
+ }
430
+
431
+ return $title;
432
+ }
433
+
434
+ /**
435
+ * Filter for changing the Twitter description as output in the Twitter card by Yoast SEO.
436
+ *
437
+ * @see wordpress-seo\src\presenters\twitter\description-presenter.php
438
+ *
439
+ * @since 2.5.19
440
+ *
441
+ * @scope front
442
+ * @param string $description The description string.
443
+ * @param Indexable_Presentation $presentation The presentation of an indexable.
444
+ *
445
+ * @return string
446
+ */
447
+ public static function filter_front__twitter_description( $description, $presentation ) {
448
+
449
+ if ( empty( $description ) ) {
450
+ return $description;
451
+ }
452
+
453
+ if ( 'post' == $presentation->model->object_type ) {
454
+
455
+ $meta_cache = wp_cache_get( $presentation->model->object_id, 'post_meta' );
456
+
457
+ if ( ! empty( $meta_cache['_yoast_wpseo_twitter-description'][0] ) ) {
458
+
459
+ $description = WPGlobus_Core::text_filter( $meta_cache['_yoast_wpseo_twitter-description'][0], WPGlobus::Config()->language );
460
+
461
+ if ( $presentation->source instanceof WP_Post ) {
462
+ /**
463
+ * @see wordpress-seo\inc\wpseo-functions.php
464
+ */
465
+ $description = wpseo_replace_vars( $description, $presentation->source );
466
+ }
467
+ }
468
+ }
469
+
470
+ return $description;
471
+ }
472
+
473
+ /**
474
+ * Filter for changing the Twitter Card image.
475
+ *
476
+ * @see wordpress-seo\src\presenters\twitter\image-presenter.php
477
+ *
478
+ * @since 2.5.19
479
+ *
480
+ * @scope front
481
+ * @param string $image Image URL string.
482
+ * @param Indexable_Presentation $presentation The presentation of an indexable.
483
+ *
484
+ * @return string
485
+ */
486
+ public static function filter_front__twitter_image( $image, $presentation ) {
487
+
488
+ if ( empty( $image ) ) {
489
+ return $image;
490
+ }
491
+
492
+ if ( 'post' == $presentation->model->object_type ) {
493
+
494
+ $meta_cache = wp_cache_get( $presentation->model->object_id, 'post_meta' );
495
+
496
+ if ( ! empty( $meta_cache['_yoast_wpseo_twitter-image'][0] ) ) {
497
+
498
+ $image = WPGlobus_Core::text_filter( $meta_cache['_yoast_wpseo_twitter-image'][0], WPGlobus::Config()->language );
499
+
500
+ if ( $presentation->source instanceof WP_Post ) {
501
+ /**
502
+ * @see wordpress-seo\inc\wpseo-functions.php
503
+ */
504
+ $image = wpseo_replace_vars( $image, $presentation->source );
505
+ }
506
+ }
507
+ }
508
+
509
+ return $image;
510
+ }
511
+
512
+ /**
513
+ * Filter for changing the Yoast SEO generated title.
514
+ *
515
+ * @see wordpress-seo\src\presenters\open-graph\title-presenter.php
516
+ *
517
+ * @since 2.5.19
518
+ *
519
+ * @scope front
520
+ * @param string $title The title.
521
+ * @param Indexable_Presentation $presentation The presentation of an indexable.
522
+ *
523
+ * @return string
524
+ */
525
+ public static function filter_front__opengraph_title( $title, $presentation ) {
526
+
527
+ if ( empty( $title ) ) {
528
+ return $title;
529
+ }
530
+
531
+ if ( 'post' == $presentation->model->object_type ) {
532
+
533
+ $meta_cache = wp_cache_get( $presentation->model->object_id, 'post_meta' );
534
+
535
+ if ( ! empty( $meta_cache['_yoast_wpseo_opengraph-title'][0] ) ) {
536
+
537
+ $title = WPGlobus_Core::text_filter( $meta_cache['_yoast_wpseo_opengraph-title'][0], WPGlobus::Config()->language );
538
+
539
+ if ( $presentation->source instanceof WP_Post ) {
540
+ /**
541
+ * @see wordpress-seo\inc\wpseo-functions.php
542
+ */
543
+ $title = wpseo_replace_vars( $title, $presentation->source );
544
+ }
545
+
546
+ } else {
547
+
548
+ /**
549
+ * @since 2.5.23
550
+ */
551
+ if ( WPGlobus_Core::has_translations( $title ) ) {
552
+ $title = WPGlobus_Core::extract_text( $title, WPGlobus::Config()->language );
553
+ }
554
+
555
+ }
556
+
557
+ } elseif ( 'term' == $presentation->model->object_type ) {
558
+
559
+ /**
560
+ * Taxonomy.
561
+ */
562
+ $__title = self::get_taxonomy_meta( $presentation->model->object_sub_type, $presentation->model->object_id, 'wpseo_title' );
563
+
564
+ if ( empty( $__title ) ) {
565
+ $__title = self::get_option( 'wpseo_titles', 'title-tax-' . $presentation->model->object_sub_type );
566
+ }
567
+
568
+ $title = wpseo_replace_vars( $__title, $presentation->source );
569
+ }
570
+
571
+ return $title;
572
+ }
573
+
574
+ /**
575
+ * Filter post meta.
576
+ *
577
+ * @since 1.9.21
578
+ * @since 2.1.3
579
+ * @see function function get_value() in wordpress-seo\inc\class-wpseo-meta.php
580
+ */
581
+ public static function filter__get_post_metadata( $check, $object_id, $meta_key, $single ) {
582
+
583
+ global $post;
584
+
585
+ if ( $single ) {
586
+ return $check;
587
+ }
588
+
589
+ if ( ! is_object($post) ) {
590
+ return $check;
591
+ }
592
+
593
+ if ( $object_id != $post->ID ) {
594
+ return $check;
595
+ }
596
+
597
+ /**
598
+ * May be called many times on one page. Let's cache.
599
+ */
600
+ static $_done = null;
601
+ if ( ! is_null($_done) ) {
602
+ return $check;
603
+ }
604
+
605
+ $meta_type = 'post';
606
+
607
+ $meta_cache = wp_cache_get($object_id, $meta_type . '_meta');
608
+
609
+ if ( ! empty($meta_cache['_yoast_wpseo_title'][0]) ) {
610
+ $meta_cache['_yoast_wpseo_title'][0] = WPGlobus_Core::text_filter( $meta_cache['_yoast_wpseo_title'][0], WPGlobus::Config()->language, WPGlobus::RETURN_EMPTY );
611
+ wp_cache_replace( $object_id, $meta_cache, $meta_type . '_meta' );
612
+ }
613
+
614
+ /**
615
+ * @since 2.2.33
616
+ */
617
+ if ( ! empty($meta_cache['_yoast_wpseo_focuskw'][0]) ) {
618
+ $meta_cache['_yoast_wpseo_focuskw'][0] = WPGlobus_Core::text_filter( $meta_cache['_yoast_wpseo_focuskw'][0], WPGlobus::Config()->language, WPGlobus::RETURN_EMPTY );
619
+ wp_cache_replace( $object_id, $meta_cache, $meta_type . '_meta' );
620
+ }
621
+
622
+ $_done = true;
623
+
624
+ return $check;
625
+ }
626
+
627
+ /**
628
+ * Filter Yoast post meta keywords.
629
+ *
630
+ * @scope front
631
+ * @since 1.8.8
632
+ *
633
+ * @param string $keywords Multilingual keywords.
634
+ *
635
+ * @return string.
636
+ */
637
+ public static function filter__metakeywords( $keywords ) {
638
+ if ( WPGlobus::Config()->language != WPGlobus::Config()->default_language ) {
639
+ return '';
640
+ }
641
+ return WPGlobus_Core::text_filter($keywords, WPGlobus::Config()->language, WPGlobus::RETURN_EMPTY);
642
+ }
643
+
644
+ /**
645
+ * Filter wpseo meta description.
646
+ *
647
+ * @see wordpress-seo\src\presenters\meta-description-presenter.php
648
+ * @see wordpress-seo\src\presenters\open-graph\description-presenter.php
649
+ *
650
+ * @since 2.4
651
+ * @since 2.5.1 Added support of taxonomies.
652
+ *
653
+ * @scope front
654
+ *
655
+ * @param string $meta_description Value from @see `description` field in `wp_yoast_indexable` table.
656
+ * @param Indexable_Presentation $presentation The presentation of an indexable.
657
+ *
658
+ * @return string
659
+ */
660
+ public static function filter_front__description( $meta_description, $presentation ) {
661
+
662
+ /**
663
+ * $meta_description is received from `description` field in `wp_yoast_indexable` table.
664
+ */
665
+
666
+ /**
667
+ * Init description.
668
+ */
669
+ $description = '';
670
+
671
+ /**
672
+ * Key to define that `wpseo_metadesc` filter was already fired earlier.
673
+ */
674
+ static $meta_description_presenter_was_fired = false;
675
+
676
+ if ( 'post' == $presentation->model->object_type ) {
677
+
678
+ /**
679
+ * Post.
680
+ */
681
+ if ( $meta_description_presenter_was_fired ) {
682
+ /**
683
+ * Set meta description to empty value for `wpseo_opengraph_desc` filter like for empty $meta_description in `wpseo_metadesc` filter.
684
+ */
685
+ $meta_description = '';
686
+ } else {
687
+ if ( empty($meta_description) ) {
688
+ $meta_description_presenter_was_fired = true;
689
+ }
690
+ }
691
+
692
+ $description = self::get_meta( '_yoast_wpseo_metadesc', $meta_description );
693
+
694
+ } elseif ( 'term' == $presentation->model->object_type ) {
695
+
696
+ /**
697
+ * Taxonomy.
698
+ * @since 2.5.1
699
+ */
700
+ if ( $meta_description_presenter_was_fired ) {
701
+
702
+ /**
703
+ * This is `wpseo_opengraph_desc` filter with empty yoast description.
704
+ * @todo maybe need to use cache for term object.
705
+ */
706
+ $term = get_term( $presentation->model->object_id );
707
+ if ( $term instanceof WP_Term ) {
708
+ $description = $term->description;
709
+ } else {
710
+ $description = '';
711
+ }
712
+
713
+ } else {
714
+
715
+ /**
716
+ * @since 2.5.22
717
+ */
718
+ $description = self::get_taxonomy_meta( $presentation->model->object_sub_type, $presentation->model->object_id, 'wpseo_desc' );
719
+
720
+ /**
721
+ * @since 2.7.0
722
+ */
723
+ if ( empty($description) ) {
724
+ $description = self::get_option( 'wpseo_titles', 'metadesc-tax-' . $presentation->model->object_sub_type );
725
+ }
726
+
727
+ if ( empty($description) ) {
728
+ $meta_description_presenter_was_fired = true;
729
+ } else {
730
+ $description = wpseo_replace_vars( $description, $presentation->source );
731
+ }
732
+ }
733
+ }
734
+
735
+ /**
736
+ * @since 2.6.3
737
+ */
738
+ self::$description = $description;
739
+
740
+ return $description;
741
+ }
742
+
743
+ /**
744
+ * Filter canonical URL and open graph URL put out by Yoast SEO.
745
+ *
746
+ * @see wordpress-seo\src\presenters\canonical-presenter.php
747
+ * @see wordpress-seo\src\presenters\open-graph\url-presenter.php
748
+ * @scope front
749
+ * @since 2.4
750
+ * @since 2.5.1 Added support of taxonomies.
751
+ * @since 2.5.10 Added `wpglobus_wpseo_localize_url` filter.
752
+ *
753
+ * @param string $url The canonical URL or open graph URL.
754
+ * @param Indexable_Presentation $presentation The presentation of an indexable.
755
+ *
756
+ * @return string
757
+ */
758
+ public static function filter_front__localize_url( $url, $presentation ) {
759
+ /**
760
+ * URL is received from `permalink` field in `wp_yoast_indexable` table.
761
+ */
762
+ if ( WPGlobus::Config()->language == WPGlobus::Config()->default_language ) {
763
+ return $url;
764
+ }
765
+
766
+ $tag = false;
767
+ if ( is_singular() ) {
768
+ $tag = 'singular';
769
+ } elseif ( is_category() ) {
770
+ $tag = 'category';
771
+ } elseif ( is_tag() ) {
772
+ $tag = 'tag';
773
+ } elseif ( is_tax() ) {
774
+ $tag = 'tax';
775
+ }
776
+
777
+ if ( $tag ) {
778
+
779
+ $language =WPGlobus::Config()->language;
780
+
781
+ self::$canonical_url[ WPGlobus::Config()->default_language ] = $url;
782
+
783
+ /**
784
+ * Filters for a localized url.
785
+ *
786
+ * @since 2.5.10
787
+ *
788
+ * @param string $url Localized URL.
789
+ * @param string $language Current language.
790
+ * @param string $tag Conditional Tag.
791
+ */
792
+ self::$canonical_url[ $language ] = apply_filters( 'wpglobus_wpseo_localize_url', WPGlobus_Utils::localize_url( $url, $language ), $language, $tag );
793
+
794
+ self::$canonical_url[ $language ] = urldecode( self::$canonical_url[ $language ] );
795
+
796
+ return self::$canonical_url[ $language ];
797
+ }
798
+
799
+ return $url;
800
+ }
801
+
802
+ /**
803
+ * Filtering of the rel `prev` and `next` URL put out by Yoast SEO.
804
+ *
805
+ * @see wordpress-seo\src\presenters\rel-prev-presenter.php
806
+ * @see wordpress-seo\src\presenters\rel-next-presenter.php
807
+ * @scope front
808
+ *
809
+ * @since 2.5.11
810
+ *
811
+ * @param string $url Link relationship, prev or next.
812
+ * @param string $relationship `prev` or `next`.
813
+ * @param Indexable_Presentation $presentation The presentation of an indexable.
814
+ *
815
+ * @return string
816
+ */
817
+ public static function filter_front__wpseo_adjacent_rel_url( $link, $relationship, $presentation ) {
818
+
819
+ if ( empty( $link ) || WPGlobus::Config()->language == WPGlobus::Config()->default_language ) {
820
+ return $link;
821
+ }
822
+
823
+ if ( empty( self::$canonical_url ) ) {
824
+ return $link;
825
+ }
826
+
827
+ return str_replace(
828
+ self::$canonical_url[ WPGlobus::Config()->default_language ],
829
+ self::$canonical_url[ WPGlobus::Config()->language ],
830
+ $link
831
+ );
832
+ }
833
+
834
+ /**
835
+ * Filter the HTML output of the Yoast SEO breadcrumbs class.
836
+ *
837
+ * @see wordpress-seo\src\presenters\breadcrumbs-presenter.php
838
+ * @scope front
839
+ * @since 2.4.2
840
+ *
841
+ * @param $output The HTML output
842
+ * @param Indexable_Presentation $presentation The presentation of an indexable.
843
+ *
844
+ * @api string $output The HTML output.
845
+ *
846
+ * @return string
847
+ */
848
+ public static function filter__breadcrumb_output( $output, $presentation ) {
849
+
850
+ /** @global wpdb $wpdb */
851
+ global $wpdb;
852
+
853
+ $object_type = null;
854
+ $object_sub_type = null;
855
+ $object_order = null;
856
+
857
+ if ( $presentation->source instanceof WP_Post ) {
858
+
859
+ $object_type = 'post';
860
+ $object_sub_type = $presentation->source->post_type;
861
+
862
+ } elseif ( $presentation->source instanceof WP_Term ) {
863
+
864
+ $object_type = 'taxonomy';
865
+ $object_sub_type = $presentation->source->taxonomy;
866
+
867
+ if ( $presentation->source->parent == 0 ) {
868
+ $object_order = array($presentation->source->term_id);
869
+ } else {
870
+ $object_order = get_ancestors($presentation->source->term_id, $object_sub_type);
871
+ if ( count($object_order) > 1 ) {
872
+ $object_order = array_reverse( $object_order );
873
+ }
874
+ $object_order[] = $presentation->source->term_id;
875
+ }
876
+
877
+ }
878
+
879
+ $ids = array();
880
+ $breadcrumbs = array();
881
+ $i = 0;
882
+
883
+ foreach( $presentation->breadcrumbs as $order=>$piece ) {
884
+
885
+ if ( $order == 0 ) {
886
+
887
+ $_piece = '/' . preg_quote($piece['url'], '/') . '/';
888
+
889
+ if ( empty( $piece['id'] ) ) {
890
+ /**
891
+ * If homepage displays as latest posts, then we should force the setting of `Home` for all languages.
892
+ */
893
+ $output = preg_replace( $_piece, home_url('/'), $output, 1 );
894
+ } else {
895
+ $output = preg_replace( $_piece, home_url('/'), $output, 1 );
896
+ }
897
+
898
+ if ( WPGlobus_Core::has_translations($piece['text']) ) {
899
+ $_home_text = WPGlobus_Core::text_filter( $piece['text'], WPGlobus::Config()->language, WPGlobus::RETURN_IN_DEFAULT_LANGUAGE );
900
+ $output = str_replace( $piece['text'], $_home_text, $output );
901
+ }
902
+
903
+ } else {
904
+
905
+ switch ($object_type) :
906
+ case 'post' :
907
+ if ( ! empty($piece['id']) ) {
908
+ $ids[] = $piece['id'];
909
+ $breadcrumbs[ $piece['id'] ] = $piece;
910
+ $breadcrumbs[ $piece['id'] ]['object_type'] = $object_type;
911
+ $breadcrumbs[ $piece['id'] ]['object_sub_type'] = $object_sub_type;
912
+ }
913
+ break;
914
+ case 'taxonomy' :
915
+ $_id = $order;
916
+ if ( ! is_null( $object_order ) ) {
917
+ $_id = $object_order[$i];
918
+ $ids[] = $_id;
919
+ }
920
+ $breadcrumbs[ $_id ] = $piece;
921
+ $breadcrumbs[ $_id ]['object_type'] = $object_type;
922
+ $breadcrumbs[ $_id ]['object_sub_type'] = $object_sub_type;
923
+ $i++;
924
+ break;
925
+ endswitch;
926
+ }
927
+ }
928
+
929
+ $query = null;
930
+
931
+ if ( ! empty($ids) ) {
932
+
933
+ $_ids = implode( ',', $ids );
934
+ switch ($object_type) :
935
+ case 'post' :
936
+ $select = $wpdb->prepare( "SELECT ID, post_title AS ml_title, post_name, post_type FROM $wpdb->posts WHERE ID IN ( %s )", $_ids );
937
+ $select = str_replace( "'", '', $select );
938
+ break;
939
+ case 'taxonomy' :
940
+ $select = $wpdb->prepare( "SELECT term_id, name AS ml_title, slug FROM $wpdb->terms WHERE term_id IN ( %s )", $_ids );
941
+ $select = str_replace( "'", '', $select );
942
+ break;
943
+ endswitch;
944
+
945
+ $query = $wpdb->get_results( $select, OBJECT_K );
946
+
947
+ foreach( $breadcrumbs as $id=>$piece ) {
948
+
949
+ $output = str_replace(
950
+ array(
951
+ $piece['url'],
952
+ $piece['text']
953
+ ),
954
+ array(
955
+ WPGlobus_Utils::localize_url( $piece['url'], WPGlobus::Config()->language ),
956
+ WPGlobus_Core::text_filter( $query[$id]->ml_title, WPGlobus::Config()->language )
957
+ ),
958
+ $output
959
+ );
960
+ }
961
+ }
962
+
963
+ /**
964
+ * @since 2.4.2 @W.I.P
965
+ */
966
+ //$output = apply_filters( 'wpglobus_wpseo_breadcrumb_output', $output, $breadcrumbs, $query );
967
+
968
+ return $output;
969
+ }
970
+
971
+ /**
972
+ * Filter wpseo meta description.
973
+ *
974
+ * @see wordpress-seo\admin\class-meta-columns.php
975
+ * @scope admin
976
+ * @since 2.2.16
977
+ *
978
+ * @param string $metadesc_val Value in default language.
979
+ *
980
+ * @return string
981
+ */
982
+ public static function filter__wpseo_metadesc( $metadesc_val ) {
983
+
984
+ if ( empty($metadesc_val) ) {
985
+ return $metadesc_val;
986
+ }
987
+
988
+ if ( WPGlobus::Config()->language == WPGlobus::Config()->default_language ) {
989
+ return $metadesc_val;
990
+ }
991
+
992
+ return self::get_meta( '_yoast_wpseo_metadesc', $metadesc_val );
993
+ }
994
+
995
+ /**
996
+ * To translate Yoast `column-wpseo-title`.
997
+ *
998
+ * @see wordpress-seo\admin\class-meta-columns.php
999
+ * @scope admin
1000
+ * @since 2.2.16
1001
+ *
1002
+ * @param string $title
1003
+ *
1004
+ * @return string
1005
+ */
1006
+ public static function filter__wpseo_title( $title ) {
1007
+ return WPGlobus_Core::extract_text( $title, WPGlobus::Config()->language );
1008
+ }
1009
+
1010
+ /**
1011
+ * Get meta for extra language.
1012
+ *
1013
+ * @scope admin
1014
+ * @since 2.2.16
1015
+ */
1016
+ protected static function get_meta( $meta_key, $meta_value = '' ) {
1017
+
1018
+ if ( is_null(self::$wpseo_meta) ) {
1019
+ self::get_wpseo_meta();
1020
+ }
1021
+
1022
+ if ( empty( self::$wpseo_meta[ $meta_key ] ) ) {
1023
+ return '';
1024
+ }
1025
+
1026
+ /** @global WP_Post $post */
1027
+ global $post;
1028
+
1029
+ if ( empty( $meta_value ) ) {
1030
+
1031
+ /**
1032
+ * Try get meta by post ID.
1033
+ */
1034
+ if ( ! $post instanceof WP_Post ) {
1035
+ return '';
1036
+ }
1037
+ if ( empty( self::$wpseo_meta[$meta_key][$post->ID] ) ) {
1038
+ return '';
1039
+ }
1040
+
1041
+ return WPGlobus_Core::text_filter( self::$wpseo_meta[$meta_key][$post->ID], WPGlobus::Config()->language, WPGlobus::RETURN_EMPTY );
1042
+ }
1043
+
1044
+ $_return_value = '';
1045
+ foreach( self::$wpseo_meta[ $meta_key ] as $_meta_value ) {
1046
+ if ( false !== strpos( $_meta_value, $meta_value ) ) {
1047
+ $_return_value = WPGlobus_Core::text_filter( $_meta_value, WPGlobus::Config()->language, WPGlobus::RETURN_EMPTY );
1048
+ break;
1049
+ }
1050
+ }
1051
+
1052
+ return $_return_value;
1053
+ }
1054
+
1055
+ /**
1056
+ * Get `_yoast_wpseo_metadesc`, `_yoast_wpseo_focuskw` meta.
1057
+ *
1058
+ * @scope both
1059
+ * @since 2.4
1060
+ * @since 2.4.6 Separate the defining of post type for frontend and admin.
1061
+ * @since 2.4.14 Revised code.
1062
+ */
1063
+ protected static function get_wpseo_meta() {
1064
+
1065
+ /** @global wpdb $wpdb */
1066
+ global $wpdb;
1067
+
1068
+ /** @global WP_Post $post */
1069
+ global $post;
1070
+
1071
+ $post_id = false;
1072
+
1073
+ if ( is_admin() ) {
1074
+
1075
+ /**
1076
+ * Admin.
1077
+ */
1078
+ if ( ! empty( $_GET['post'] ) ) {
1079
+ $post_id = sanitize_text_field( $_GET['post'] ); // phpcs:ignore WordPress.CSRF.NonceVerification
1080
+ }
1081
+
1082
+ } else {
1083
+
1084
+ if ( $post instanceof WP_Post ) {
1085
+
1086
+ /**
1087
+ * Front-end.
1088
+ */
1089
+ $post_id = $post->ID;
1090
+
1091
+ }
1092
+ }
1093
+
1094
+ if ( $post_id ) {
1095
+
1096
+ $query = $wpdb->prepare(
1097
+ "SELECT p.ID, p.post_type, pm.meta_key, pm.meta_value FROM {$wpdb->prefix}posts AS p JOIN {$wpdb->prefix}postmeta AS pm ON p.ID = pm.post_id WHERE p.ID = %s AND (pm.meta_key = %s OR pm.meta_key = %s)",
1098
+ $post_id,
1099
+ '_yoast_wpseo_metadesc',
1100
+ '_yoast_wpseo_focuskw'
1101
+ );
1102
+
1103
+ $metas = $wpdb->get_results( $query, ARRAY_A );
1104
+
1105
+ if ( ! empty( $metas ) ) {
1106
+ foreach( $metas as $_meta ) {
1107
+ if ( ! isset( self::$wpseo_meta[ $_meta['meta_key'] ] ) ) {
1108
+ self::$wpseo_meta[ $_meta['meta_key'] ] = array();
1109
+ }
1110
+ self::$wpseo_meta[ $_meta['meta_key'] ][ $_meta['ID'] ] = $_meta['meta_value'];
1111
+ }
1112
+ }
1113
+ } else {
1114
+ // Here we can add code to get meta for multiple posts.
1115
+ }
1116
+ }
1117
+
1118
+ /**
1119
+ * Get taxonomy meta from `wpseo_taxonomy_meta` option.
1120
+ *
1121
+ * @since 2.5.1
1122
+ * @since 2.5.22 Added $meta_key parameter to the `get_taxonomy_meta` function.
1123
+ * @scope front
1124
+ *
1125
+ * @param string $object_sub_type The Indexable Object sub type.
1126
+ * @param string $object_id The object ID.
1127
+ * @param Indexable_Presentation $meta_key The WPSEO meta key.
1128
+ *
1129
+ * return string | array
1130
+ */
1131
+ protected static function get_taxonomy_meta( $object_sub_type, $object_id, $meta_key = '' ) {
1132
+
1133
+ if ( is_null( self::$wpseo_taxonomy_meta ) ) {
1134
+ self::$wpseo_taxonomy_meta = get_option( 'wpseo_taxonomy_meta' );
1135
+ }
1136
+
1137
+ if ( empty( self::$wpseo_taxonomy_meta[ $object_sub_type ][ $object_id ] ) ) {
1138
+ return '';
1139
+ }
1140
+
1141
+ if ( empty( $meta_key ) ) {
1142
+ return self::$wpseo_taxonomy_meta[ $object_sub_type ][ $object_id ];
1143
+ }
1144
+
1145
+ if ( empty( self::$wpseo_taxonomy_meta[ $object_sub_type ][ $object_id ][ $meta_key ] ) ) {
1146
+ return '';
1147
+ }
1148
+
1149
+ $meta_value = WPGlobus_Core::text_filter(
1150
+ self::$wpseo_taxonomy_meta[ $object_sub_type ][ $object_id ][ $meta_key ],
1151
+ WPGlobus::Config()->language,
1152
+ WPGlobus::RETURN_EMPTY
1153
+ );
1154
+
1155
+ return $meta_value;
1156
+ }
1157
+
1158
+ /**
1159
+ * Enqueue JS for YoastSEO support.
1160
+ *
1161
+ * @since 1.4.0
1162
+ * @since 2.2.20
1163
+ * @since 2.4.5 Add JS script on dashboard.
1164
+ */
1165
+ public static function action__admin_print_scripts() {
1166
+
1167
+ if ( WPGlobus_WP::is_pagenow( 'admin.php' ) ) {
1168
+
1169
+ if ( 'wpseo_tools' == WPGlobus_Utils::safe_get('page') && 'bulk-editor' == WPGlobus_Utils::safe_get('tool') ) {
1170
+
1171
+ $wrng1 = '<div>' . esc_html__( 'Bulk editing of the multilingual titles and descriptions is not supported by the current version.', 'wpglobus' ) . '</div>';
1172
+ $wrng2 = '<div>' . esc_html__( 'Therefore, to avoid any data loss, we do not recommend using this.', 'wpglobus' ) . '</div>';
1173
+
1174
+ $i18n = array(
1175
+ 'preWarning' => esc_html__( 'WPGlobus warning: ', 'wpglobus' ),
1176
+ 'bulkEditorWarning' => $wrng1 . $wrng2,
1177
+ );
1178
+
1179
+ $src = WPGlobus::$PLUGIN_DIR_URL . 'includes/js/wpglobus-yoastseo-dashboard' . WPGlobus::SCRIPT_SUFFIX() . '.js';
1180
+
1181
+ wp_register_script(
1182
+ self::$handle_script_dashboard,
1183
+ $src,
1184
+ array( 'jquery' ),
1185
+ WPGLOBUS_VERSION,
1186
+ true
1187
+ );
1188
+
1189
+ wp_enqueue_script(self::$handle_script_dashboard);
1190
+
1191
+ wp_localize_script(
1192
+ self::$handle_script_dashboard,
1193
+ 'WPGlobusYoastSeoDashboard',
1194
+ array(
1195
+ 'version' => WPGLOBUS_VERSION,
1196
+ 'wpseo_version' => WPSEO_VERSION,
1197
+ 'pagenow' => 'admin.php',
1198
+ 'page' => WPGlobus_Utils::safe_get('page'),
1199
+ 'tool' => WPGlobus_Utils::safe_get('tool'),
1200
+ 'i18n' => $i18n
1201
+ )
1202
+ );
1203
+
1204
+ return;
1205
+ }
1206
+ }
1207
+
1208
+ if ( 'off' === WPGlobus::Config()->toggle ) {
1209
+ return;
1210
+ }
1211
+
1212
+ if ( self::disabled_entity() ) {
1213
+ return;
1214
+ }
1215
+
1216
+ /** @global string $pagenow */
1217
+ global $pagenow;
1218
+
1219
+ $enabled_pages = array(
1220
+ 'post.php',
1221
+ 'post-new.php',
1222
+ 'edit-tags.php',
1223
+ 'term.php'
1224
+ );
1225
+
1226
+ if ( WPGlobus_WP::is_pagenow( $enabled_pages ) ) {
1227
+
1228
+ WPGlobus::O()->vendors_scripts['WPSEO'] = true;
1229
+
1230
+ if ( defined( 'WPSEO_PREMIUM_PLUGIN_FILE' ) ) {
1231
+ /**
1232
+ * @see wordpress-seo-premium\wp-seo-premium.php
1233
+ */
1234
+ WPGlobus::O()->vendors_scripts['WPSEO_PREMIUM'] = true;
1235
+ }
1236
+
1237
+ $yoastseo_plus_readability_access = '';
1238
+ $yoastseo_plus_readability_inactive = '';
1239
+
1240
+ $yoastseo_plus_page_analysis_access = '';
1241
+ $yoastseo_plus_page_analysis_inactive = '';
1242
+
1243
+ $yoastseo_plus_meta_keywords_access = '';
1244
+ $yoastseo_plus_meta_keywords_inactive = '';
1245
+
1246
+ $yoastseo_plus_social_access = '';
1247
+ $yoastseo_plus_social_inactive = '';
1248
+
1249
+ if ( WPGlobus::Config()->builder->is_builder_page() ) {
1250
+
1251
+ $_url = '#';
1252
+ if ( class_exists('WPGlobusPlus') ) {
1253
+ /**
1254
+ * @see wpglobus-plus\includes\wpglobus-plus-main.php
1255
+ */
1256
+ $_url = add_query_arg(
1257
+ array(
1258
+ 'page' => 'wpglobus-plus-options'
1259
+ ),
1260
+ admin_url('admin.php')
1261
+ );
1262
+ }
1263
+
1264
+ $yoastseo_plus_readability_access = sprintf(
1265
+ esc_html__( 'Please see %1s to get access to Analysis results in %2s with YoastSEO.', '' ),
1266
+ '<a href="https://wpglobus.com/product/wpglobus-plus/#yoastseo" target="_blank">WPGlobus Plus</a>',
1267
+ WPGlobus::Config()->en_language_name[ WPGlobus::Config()->builder->get_language() ]
1268
+ );
1269
+ $yoastseo_plus_readability_inactive = sprintf(
1270
+ esc_html__( 'Please activate %1sYoast SEO Plus%2s module to get access to Analysis results in %3s with YoastSEO.', '' ),
1271
+ '<a href="'.$_url.'">',
1272
+ '</a>',
1273
+ WPGlobus::Config()->en_language_name[ WPGlobus::Config()->builder->get_language() ]
1274
+ );
1275
+
1276
+ $yoastseo_plus_page_analysis_access = sprintf(
1277
+ esc_html__( 'Please see %1s to get access to Analysis results in %2s with YoastSEO.', '' ),
1278
+ '<a href="https://wpglobus.com/product/wpglobus-plus/#yoastseo" target="_blank">WPGlobus Plus</a>',
1279
+ WPGlobus::Config()->en_language_name[ WPGlobus::Config()->builder->get_language() ]
1280
+ );
1281
+ $yoastseo_plus_page_analysis_inactive = sprintf(
1282
+ esc_html__( 'Please activate %1sYoast SEO Plus%2s module to get access to Analysis results in %3s with YoastSEO.', '' ),
1283
+ '<a href="'.$_url.'">',
1284
+ '</a>',
1285
+ WPGlobus::Config()->en_language_name[ WPGlobus::Config()->builder->get_language() ]
1286
+ );
1287
+
1288
+ $yoastseo_plus_meta_keywords_access = sprintf(
1289
+ esc_html__( 'Please see %1s to get access to Focus keyphrase in %2s with YoastSEO.', '' ),
1290
+ '<a href="https://wpglobus.com/product/wpglobus-plus/#yoastseo" target="_blank">WPGlobus Plus</a>',
1291
+ WPGlobus::Config()->en_language_name[ WPGlobus::Config()->builder->get_language() ]
1292
+ );
1293
+ $yoastseo_plus_meta_keywords_inactive = sprintf(
1294
+ esc_html__( 'Please activate %1sYoast SEO Plus%2s module to get access to Focus keyphrase in %1s with YoastSEO.', '' ),
1295
+ '<a href="'.$_url.'">',
1296
+ '</a>',
1297
+ WPGlobus::Config()->en_language_name[ WPGlobus::Config()->builder->get_language() ]
1298
+ );
1299
+
1300
+ $yoastseo_plus_social_access = sprintf(
1301
+ esc_html__( 'Please see %1s to get access to Social Tab content in %2s with YoastSEO.', '' ),
1302
+ '<a href="https://wpglobus.com/product/wpglobus-plus/#yoastseo" target="_blank">WPGlobus Plus</a>',
1303
+ WPGlobus::Config()->en_language_name[ WPGlobus::Config()->builder->get_language() ]
1304
+ );
1305
+ $yoastseo_plus_social_inactive = sprintf(
1306
+ esc_html__( 'Please activate %1sYoast SEO Plus%2s module to get access to Social Tab content in %1s with YoastSEO.', '' ),
1307
+ '<a href="'.$_url.'">',
1308
+ '</a>',
1309
+ WPGlobus::Config()->en_language_name[ WPGlobus::Config()->builder->get_language() ]
1310
+ );
1311
+ }
1312
+
1313
+ $i18n = array(
1314
+ 'yoastseo_plus_readability_access' => $yoastseo_plus_readability_access,
1315
+ 'yoastseo_plus_readability_inactive' => $yoastseo_plus_readability_inactive,
1316
+ 'yoastseo_plus_page_analysis_access' => $yoastseo_plus_page_analysis_access,
1317
+ 'yoastseo_plus_page_analysis_inactive' => $yoastseo_plus_page_analysis_inactive,
1318
+ 'yoastseo_plus_meta_keywords_access' => $yoastseo_plus_meta_keywords_access,
1319
+ 'yoastseo_plus_meta_keywords_inactive' => $yoastseo_plus_meta_keywords_inactive,
1320
+ 'yoastseo_plus_social_access' => $yoastseo_plus_social_access,
1321
+ 'yoastseo_plus_social_inactive' => $yoastseo_plus_social_inactive
1322
+ );
1323
+
1324
+ $src_version = false;
1325
+ $src_version_premium = false;
1326
+
1327
+ if ( ! WPGlobus::O()->vendors_scripts['WPSEO_PREMIUM'] ) {
1328
+
1329
+ /** @noinspection PhpInternalEntityUsedInspection */
1330
+ $src_version = version_compare( WPSEO_VERSION, '4.0', '>=' ) ? '40' : $src_version;
1331
+ /** @noinspection PhpInternalEntityUsedInspection */
1332
+ $src_version = version_compare( WPSEO_VERSION, '4.1', '>=' ) ? '41' : $src_version;
1333
+ /** @noinspection PhpInternalEntityUsedInspection */
1334
+ $src_version = version_compare( WPSEO_VERSION, '4.4', '>=' ) ? '44' : $src_version;
1335
+ if (
1336
+ /** @noinspection PhpInternalEntityUsedInspection */
1337
+ version_compare( WPSEO_VERSION, '4.8', '>=' )
1338
+ ) {
1339
+ $src_version = self::$version;
1340
+ }
1341
+
1342
+ } else {
1343
+ /**
1344
+ * Start with Yoast SEO Premium.
1345
+ */
1346
+
1347
+ /**
1348
+ * Version of file yoast seo must be latest.
1349
+ */
1350
+ /** @noinspection PhpInternalEntityUsedInspection */
1351
+ $src_version = version_compare( WPSEO_VERSION, '3.9', '>=' ) ? self::$version : $src_version;
1352
+ /** @noinspection PhpInternalEntityUsedInspection */
1353
+ $src_version_premium = version_compare( WPSEO_VERSION, '3.9', '>=' ) ? '39' : $src_version_premium;
1354
+ /**
1355
+ * @since WPGlobus 2.2.17
1356
+ */
1357
+ $src_version_premium = version_compare( WPSEO_VERSION, '12.0', '>=' ) ? $src_version : $src_version_premium;
1358
+
1359
+ }
1360
+
1361
+ if ( $src_version ) :
1362
+
1363
+ $handle = self::$handle_script;
1364
+
1365
+ $src = WPGlobus::$PLUGIN_DIR_URL . 'includes/js/' .
1366
+ $handle . '-' . $src_version .
1367
+ WPGlobus::SCRIPT_SUFFIX() . '.js';
1368
+
1369
+ wp_register_script(
1370
+ $handle,
1371
+ $src,
1372
+ array( 'jquery', 'underscore' ),
1373
+ WPGLOBUS_VERSION,
1374
+ true
1375
+ );
1376
+
1377
+ wp_enqueue_script($handle);
1378
+
1379
+ wp_localize_script(
1380
+ $handle,
1381
+ 'WPGlobusYoastSeo',
1382
+ array(
1383
+ 'version' => WPGLOBUS_VERSION,
1384
+ 'wpseo_version' => WPSEO_VERSION,
1385
+ 'src_version' => $src_version,
1386
+ 'builder_id' => WPGlobus::Config()->builder->get('id'),
1387
+ 'builder_page' => WPGlobus::Config()->builder->is_builder_page() ? 'true' : 'false',
1388
+ 'language' => WPGlobus::Config()->builder->get_language(),
1389
+ 'is_default_language' => WPGlobus::Config()->builder->is_default_language() ? true : false,
1390
+ 'src_version_premium' => $src_version_premium,
1391
+ 'plus_module' => self::$plus_module,
1392
+ 'access_extra' => ( defined( 'WPGLOBUS_YOAST_SEO_ACCESS_EXTRA' ) && WPGLOBUS_YOAST_SEO_ACCESS_EXTRA ) ? 'true' : 'false'
1393
+ )
1394
+ );
1395
+
1396
+ wp_localize_script(
1397
+ $handle,
1398
+ 'WPGlobusVendor',
1399
+ array(
1400
+ 'version' => WPGLOBUS_VERSION,
1401
+ 'vendor' => WPGlobus::O()->vendors_scripts,
1402
+ 'pagenow' => $pagenow,
1403
+ 'i18n' => $i18n
1404
+ )
1405
+ );
1406
+
1407
+ endif;
1408
+ }
1409
+ }
1410
+
1411
+ /**
1412
+ * Check disabled entity.
1413
+ *
1414
+ * @since 1.7.3
1415
+ * @return boolean
1416
+ */
1417
+ public static function disabled_entity() {
1418
+
1419
+ if ( WPGlobus_WP::is_pagenow( array( 'edit-tags.php', 'term.php' ) ) ) :
1420
+ /**
1421
+ * Don't check page when editing taxonomy.
1422
+ */
1423
+ return false;
1424
+ endif;
1425
+
1426
+ /** @global WP_Post $post */
1427
+ global $post;
1428
+
1429
+ $result = false;
1430
+ if ( WPGlobus_WP::is_pagenow( array( 'post.php', 'post-new.php' ) ) ) :
1431
+ if ( empty( $post ) ) {
1432
+ $result = true;
1433
+ } elseif ( WPGlobus::O()->disabled_entity( $post->post_type ) ) {
1434
+ $result = true;
1435
+ }
1436
+ endif;
1437
+ return $result;
1438
+ }
1439
+
1440
+ /**
1441
+ * Filter allows changing graph breadcrumb output.
1442
+ *
1443
+ * @see wordpress-seo\src\generators\schema-generator.php
1444
+ * @see "application/ld+json" in html code on front.
1445
+ *
1446
+ * @since 2.4.7
1447
+ *
1448
+ * @scope front
1449
+ * @param array $graph_piece Array of graph piece.
1450
+ * @param Meta_Tags_Context $context A value object with context variables.
1451
+ * @return array
1452
+ */
1453
+ public static function filter__wpseo_schema_breadcrumb( $graph_piece, $context ) {
1454
+
1455
+ if ( empty( $graph_piece['itemListElement'] ) ) {
1456
+ return $graph_piece;
1457
+ }
1458
+
1459
+ $itemListElement = $graph_piece['itemListElement'];
1460
+
1461
+ foreach( $itemListElement as $_key=>$_item ) {
1462
+ if ( ! empty( $_item['item']['name'] ) && WPGlobus_Core::has_translations( $_item['item']['name'] ) ) {
1463
+ $graph_piece['itemListElement'][$_key]['item']['name'] = WPGlobus_Core::extract_text( $graph_piece['itemListElement'][$_key]['item']['name'], WPGlobus::Config()->language );
1464
+ }
1465
+ }
1466
+
1467
+ return $graph_piece;
1468
+ }
1469
+
1470
+ /**
1471
+ * Filter allows changing output of graph `webpage`.
1472
+ *
1473
+ * @see wordpress-seo\src\generators\schema-generator.php
1474
+ * @see "application/ld+json" in html code on front.
1475
+ *
1476
+ * @since 2.4.14
1477
+ * @since 2.4.15 Localize description.
1478
+ * @since 2.5.1 Added support of taxonomies.
1479
+ *
1480
+ * @scope front
1481
+ * @param array $graph_piece Array of graph piece.
1482
+ * @param Meta_Tags_Context $context A value object with context variables.
1483
+ * @return array
1484
+ */
1485
+ public static function filter__wpseo_schema_webpage( $graph_piece, $context ) {
1486
+
1487
+ if ( 'post' == $context->indexable->object_type ) {
1488
+
1489
+ if ( ! empty( $graph_piece['name'] ) && WPGlobus_Core::has_translations( $graph_piece['name'] ) ) {
1490
+ $graph_piece['name'] = WPGlobus_Core::extract_text( $graph_piece['name'], WPGlobus::Config()->language );
1491
+ }
1492
+
1493
+ /**
1494
+ * @since 2.4.15
1495
+ */
1496
+ if ( ! empty( $graph_piece['description'] ) && WPGlobus_Core::has_translations( $graph_piece['description'] ) ) {
1497
+ $graph_piece['description'] = WPGlobus_Core::extract_text( $graph_piece['description'], WPGlobus::Config()->language );
1498
+ }
1499
+
1500
+ } elseif ( 'term' == $context->indexable->object_type ) {
1501
+
1502
+ /**
1503
+ * Taxonomy.
1504
+ * @since 2.5.1
1505
+ */
1506
+ $graph_piece['description'] = self::get_taxonomy_meta( $context->indexable->object_sub_type, $context->indexable->object_id, 'wpseo_desc' );
1507
+ $graph_piece['url'] = WPGlobus_Utils::localize_url( $graph_piece['url'], WPGlobus::Config()->language );
1508
+ $graph_piece['@id'] = WPGlobus_Utils::localize_url( $graph_piece['@id'], WPGlobus::Config()->language );
1509
+ $graph_piece['breadcrumb']['@id'] = WPGlobus_Utils::localize_url( $graph_piece['breadcrumb']['@id'], WPGlobus::Config()->language );
1510
+ }
1511
+
1512
+ return $graph_piece;
1513
+ }
1514
+
1515
+ /**
1516
+ * Filter for changing the Yoast SEO generated title.
1517
+ *
1518
+ * @see wordpress-seo\src\presenters\title-presenter.php
1519
+ *
1520
+ * @since 2.5.22
1521
+ *
1522
+ * @scope front
1523
+ *
1524
+ * @param string $title The title.
1525
+ * @param Indexable_Presentation $presentation The presentation of an indexable.
1526
+ *
1527
+ * @return string
1528
+ */
1529
+ public static function filter_front__title( $title, $presentation ) {
1530
+
1531
+ if ( 'post' == $presentation->model->object_type ) {
1532
+
1533
+ /**
1534
+ * Post.
1535
+ */
1536
+ $meta_cache = wp_cache_get( $presentation->model->object_id, 'post_meta' );
1537
+
1538
+ if ( ! empty( $meta_cache['_yoast_wpseo_title'][0] ) ) {
1539
+
1540
+ $__title = WPGlobus_Core::text_filter( $meta_cache['_yoast_wpseo_title'][0], WPGlobus::Config()->language );
1541
+
1542
+ if ( $presentation->source instanceof WP_Post ) {
1543
+
1544
+ if ( WPGlobus_Core::has_translations( $presentation->source->post_title ) ) {
1545
+ $presentation->source->post_title = WPGlobus_Core::text_filter( $presentation->source->post_title, WPGlobus::Config()->language );
1546
+ }
1547
+
1548
+ /**
1549
+ * @see wordpress-seo\inc\wpseo-functions.php
1550
+ */
1551
+ $title = wpseo_replace_vars( $__title, $presentation->source );
1552
+ }
1553
+
1554
+ } else {
1555
+
1556
+ /**
1557
+ * @since 2.5.23
1558
+ */
1559
+ if ( WPGlobus_Core::has_translations( $title ) ) {
1560
+ $title = WPGlobus_Core::extract_text( $title, WPGlobus::Config()->language );
1561
+ }
1562
+
1563
+ }
1564
+
1565
+ } elseif ( 'term' == $presentation->model->object_type ) {
1566
+
1567
+ /**
1568
+ * Taxonomy.
1569
+ */
1570
+ $__title = self::get_taxonomy_meta( $presentation->model->object_sub_type, $presentation->model->object_id, 'wpseo_title' );
1571
+
1572
+ if ( empty( $__title ) ) {
1573
+ $__title = self::get_option( 'wpseo_titles', 'title-tax-' . $presentation->model->object_sub_type );
1574
+ }
1575
+
1576
+ $title = wpseo_replace_vars( $__title, $presentation->source );
1577
+
1578
+ }
1579
+
1580
+ return $title;
1581
+ }
1582
+
1583
+ /**
1584
+ * Get wpseo options.
1585
+ *
1586
+ * @since 2.5.22
1587
+ *
1588
+ * @return array|string
1589
+ */
1590
+ public static function get_option( $option = 'wpseo_titles', $key = '' ) {
1591
+
1592
+ /**
1593
+ * @todo Maybe to use WPSEO_Options.
1594
+ * @see wordpress-seo\inc\options\class-wpseo-options.php
1595
+ * @since 2.5.22
1596
+ */
1597
+
1598
+ $options = get_option( $option );
1599
+
1600
+ if ( empty( $key ) ) {
1601
+ return $options;
1602
+ }
1603
+
1604
+ if ( ! isset( $options[$key] ) ) {
1605
+ return null;
1606
+ }
1607
+
1608
+ return $options[$key];
1609
+ }
1610
+
1611
+ } // class WPGlobus_YoastSEO.
1612
+
1613
  # --- EOF
languages/wpglobus.pot CHANGED
@@ -1,8 +1,8 @@
1
- # Copyright (C) 2021 WPGlobus 2.6.8
2
- # This file is distributed under the same license as the WPGlobus 2.6.8 package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: WPGlobus 2.6.8\n"
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
1
+ # Copyright (C) 2021 WPGlobus 2.7.0
2
+ # This file is distributed under the same license as the WPGlobus 2.7.0 package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: WPGlobus 2.7.0\n"
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: tivnetinc, alexgff, tivnet
3
  Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=SLF8M4YNZHNQN
4
  Tags: WPGlobus, localization, multilanguage, multilingual, translate
5
  Requires at least: 5.5
6
- Tested up to: 5.6
7
  Requires PHP: 5.6
8
  Stable tag: trunk
9
  License: GPL-3.0-or-later
@@ -220,6 +220,11 @@ WPGlobus Version 2 supports WordPress 5.x, with Gutenberg.
220
 
221
  == Changelog ==
222
 
 
 
 
 
 
223
  = 2.6.8 =
224
  * (Core) Added HTML entities to convert in JS.
225
 
@@ -237,14 +242,6 @@ WPGlobus Version 2 supports WordPress 5.x, with Gutenberg.
237
  * (Vendor/ACF) Added `WPGlobus_Vendor_Acf` class.
238
  * (Vendor/ACF) Updated JS.
239
 
240
- = 2.6.5 =
241
- * (Core/Plugin Install) Added `WPGlobus Multilingual Popups` info box to the plugins list.
242
- * (Core/Post Types) Added the `Popup Builder` plugin post types to the `"hidden types"` list.
243
-
244
- = 2.6.4 =
245
- * (Core/Plugin Install) Added `WPGlobus for Ultimate Member` info box to the plugins list.
246
- * (Core/Post Types) Added the `Popup Maker` plugin post types to the `"hidden types"` list.
247
-
248
  = Earlier versions and Add-ons =
249
 
250
  * [See the complete changelog here](https://github.com/WPGlobus/WPGlobus/blob/master/CHANGELOG.md)
3
  Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=SLF8M4YNZHNQN
4
  Tags: WPGlobus, localization, multilanguage, multilingual, translate
5
  Requires at least: 5.5
6
+ Tested up to: 5.7
7
  Requires PHP: 5.6
8
  Stable tag: trunk
9
  License: GPL-3.0-or-later
220
 
221
  == Changelog ==
222
 
223
+ = 2.7.0 =
224
+ * (Compatibility) Tested up to WordPress 5.7
225
+ * (Core/Post Types) Added the `SlidersPack` plugin post type to the `"hidden types"` list.
226
+ * (Vendor/Yoast) Fixed issue with empty taxonomy meta description.
227
+
228
  = 2.6.8 =
229
  * (Core) Added HTML entities to convert in JS.
230
 
242
  * (Vendor/ACF) Added `WPGlobus_Vendor_Acf` class.
243
  * (Vendor/ACF) Updated JS.
244
 
 
 
 
 
 
 
 
 
245
  = Earlier versions and Add-ons =
246
 
247
  * [See the complete changelog here](https://github.com/WPGlobus/WPGlobus/blob/master/CHANGELOG.md)
trunk/configs/acf.json DELETED
@@ -1,12 +0,0 @@
1
- {
2
- "post_meta_fields": {
3
- "*":{"file":"vendor/acf/class-wpglobus-acf.php","class":"WPGlobus_Acf_2"}
4
- },
5
- "post_ml_fields": {
6
- "*":{"file":"vendor/acf/class-wpglobus-acf.php","class":"WPGlobus_Acf_2"}
7
- },
8
- "wp_options": {
9
- "blogname": {},
10
- "blogdescription": null
11
- }
12
- }
 
 
 
 
 
 
 
 
 
 
 
 
trunk/configs/all-in-one-seo-pack.json DELETED
@@ -1,16 +0,0 @@
1
- {
2
- "post_meta_fields": {
3
- "_aioseop_title": {},
4
- "_aioseop_description": {},
5
- "_aioseop_keywords": {}
6
- },
7
- "post_ml_fields": {
8
- "aiosp_title": {},
9
- "aiosp_description": {},
10
- "aiosp_keywords": {}
11
- },
12
- "wp_options": {
13
- "blogname": {},
14
- "blogdescription": null
15
- }
16
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/configs/elementor.json DELETED
@@ -1,5 +0,0 @@
1
- {
2
- "post_meta_fields": {
3
- "_elementor_data": {}
4
- }
5
- }
 
 
 
 
 
trunk/configs/pods.json DELETED
@@ -1,12 +0,0 @@
1
- {
2
- "post_meta_fields": {
3
- "*":{"file":"vendor/pods/class-wpglobus-vendor-pods.php","class":"WPGlobus_Vendor_Pods"}
4
- },
5
- "post_ml_fields": {
6
- "*":{"file":"vendor/pods/class-wpglobus-vendor-pods.php","class":"WPGlobus_Vendor_Pods"}
7
- },
8
- "wp_options": {
9
- "blogname": {},
10
- "blogdescription": null
11
- }
12
- }
 
 
 
 
 
 
 
 
 
 
 
 
trunk/configs/rank-math-seo.json DELETED
@@ -1,14 +0,0 @@
1
- {
2
- "post_meta_fields": {
3
- "*":{"file":"vendor/rank-math-seo/class-wpglobus-vendor-rank_math_seo.php","class":"WPGlobus_Vendor_RankMathSEO"}
4
- },
5
- "post_ml_fields": {
6
- "rank_math_title": {},
7
- "rank_math_description": {},
8
- "rank_math_focus_keyword": {}
9
- },
10
- "wp_options": {
11
- "blogname": {},
12
- "blogdescription": null
13
- }
14
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/configs/woocommerce.json DELETED
@@ -1,8 +0,0 @@
1
- {
2
- "post_meta_fields": {
3
- "_purchase_note": {}
4
- },
5
- "post_ml_fields": {
6
- "_purchase_note": {}
7
- }
8
- }
 
 
 
 
 
 
 
 
trunk/configs/wpglobus-seo.json DELETED
@@ -1,5 +0,0 @@
1
- {
2
- "post_meta_fields": {
3
- "_wpglobus_seo_test": {}
4
- }
5
- }
 
 
 
 
 
trunk/configs/wpglobus.json DELETED
@@ -1,5 +0,0 @@
1
- {
2
- "post_meta_fields": {
3
- "_wpglobus_seo_test": {}
4
- }
5
- }
 
 
 
 
 
trunk/configs/yoast-seo.json DELETED
@@ -1,25 +0,0 @@
1
- {
2
- "post_meta_fields": {
3
- "_yoast_wpseo_title": {},
4
- "_yoast_wpseo_metadesc": {},
5
- "_yoast_wpseo_focuskw": {},
6
- "_yoast_wpseo_focuskw_text_input": null,
7
- "_yoast_wpseo_keywordsynonyms": {},
8
- "_yoast_wpseo_focuskeywords": {},
9
- "_yoast_wpseo_opengraph-title": {},
10
- "_yoast_wpseo_opengraph-description": {},
11
- "_yoast_wpseo_opengraph-image": {},
12
- "_yoast_wpseo_opengraph-image-id": {},
13
- "_yoast_wpseo_twitter-title": {},
14
- "_yoast_wpseo_twitter-description": {},
15
- "_yoast_wpseo_twitter-image": {},
16
- "_yoast_wpseo_twitter-image-id": {}
17
- },
18
- "post_ml_fields": {
19
- "focus-keyword-input-metabox": {}
20
- },
21
- "wp_options": {
22
- "blogname": {},
23
- "blogdescription": null
24
- }
25
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/data/paid_plugins.json DELETED
@@ -1,78 +0,0 @@
1
- {
2
- "woocommerce-wpglobus": {
3
- "slug": "woocommerce-wpglobus",
4
- "loader": "woocommerce-wpglobus.php",
5
- "image_file": "woocommerce-wpglobus-logo-300x300.png",
6
- "order": 120
7
- },
8
- "wpglobus-plus": {
9
- "slug": "wpglobus-plus",
10
- "loader": "wpglobus-plus.php",
11
- "image_file": "wpglobus-plus-logo-300x300.png",
12
- "order": 110
13
- },
14
- "wpglobus-revslider": {
15
- "slug": "wpglobus-revslider",
16
- "loader": "wpglobus-revslider.php",
17
- "product_slug": "wpglobus-for-slider-revolution",
18
- "image_file": "wpglobus-revslider-logo-400x400.png",
19
- "order": 100,
20
- "available": false
21
- },
22
- "wpglobus-language-widgets": {
23
- "slug": "wpglobus-language-widgets",
24
- "loader": "wpglobus-language-widgets.php",
25
- "image_file": "wpglobus-lw-logo-400x400.png",
26
- "order": 90
27
- },
28
- "wpglobus-menu-visibility": {
29
- "slug": "wpglobus-menu-visibility",
30
- "loader": "wpglobus-menu-visibility.php",
31
- "image_file": "wpglobus-menu-visibility-logo.png",
32
- "order": 80
33
- },
34
- "wpglobus-header-images": {
35
- "slug": "wpglobus-header-images",
36
- "loader": "wpglobus-header-images.php",
37
- "image_file": "wpglobus-hi-logo-400x400.png",
38
- "order": 70
39
- },
40
- "wpglobus-mobile-menu": {
41
- "slug": "wpglobus-mobile-menu",
42
- "loader": "wpglobus-mobile-menu.php",
43
- "image_file": "wpglobus-mobile-menu-logo-400x400.png",
44
- "order": 60
45
- },
46
- "wpglobus-for-ultimate-member": {
47
- "slug": "wpglobus-for-ultimate-member",
48
- "loader": "wpglobus-for-ultimate-member.php",
49
- "image_file": "https://wpglobus.com/app/uploads/2021/01/wpglobus-for-um-logo-400x400-1.png",
50
- "order": 50
51
- },
52
- "wpglobus-multilingual-popups": {
53
- "slug": "wpglobus-multilingual-popups",
54
- "loader": "wpglobus-multilingual-popups.php",
55
- "image_file": "https://wpglobus.com/app/uploads/2021/02/wpglobus-ml-pop-400x400-1.png",
56
- "order": 40
57
- },
58
- "wpglobus-multilingual-notices": {
59
- "slug": "wpglobus-multilingual-notices",
60
- "loader": "wpglobus-multilingual-notices.php",
61
- "image_file": "wpglobus-multilingual-notices-logo.png",
62
- "order": 30
63
- },
64
- "wpglobus-for-bridge-theme": {
65
- "slug": "wpglobus-for-bridge-theme",
66
- "loader": "wpglobus-for-bridge-theme.php",
67
- "product_slug": "wpglobus-for-bridge-theme",
68
- "image_file": "wpglobus-for-bridge-theme-logo-400x400.png",
69
- "order": 20
70
- },
71
- "woocommerce-nets-netaxept": {
72
- "slug": "woocommerce-nets-netaxept",
73
- "loader": "woocommerce-nets-netaxept.php",
74
- "product_slug": "multilingual-woocommerce-nets-netaxept",
75
- "image_file": "woocommerce-wpglobus-netaxeptcw-logo-300x300.jpg",
76
- "order": 10
77
- }
78
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/data/wpglobus-product-info.json DELETED
@@ -1 +0,0 @@
1
- {"multilingual-woocommerce-nets-netaxept":{"title":"{:en}Multilingual WooCommerce Nets Netaxept{:}{:ru}\u041c\u0443\u043b\u044c\u0442\u0438\u044f\u0437\u044b\u0447\u043d\u043e\u0441\u0442\u044c \u0434\u043b\u044f WooCommerce Nets Netaxept{:}","_api_new_version":"1.0.3","_api_tested_up_to":"4.9.8"},"wpglobus-multi-currency":{"title":"{:en}Multi-Currency for WooCommerce{:}{:ru}WPGlobus - \u041c\u0443\u043b\u044c\u0442\u0438\u0432\u0430\u043b\u044e\u0442\u043d\u043e\u0441\u0442\u044c \u0434\u043b\u044f WooCommerce{:}","_api_new_version":"1.1.1","_api_tested_up_to":"4.9.4"},"wpglobus-mobile-menu":{"title":"{:en}WPGlobus Mobile Menu{:}{:ru}WPGlobus Mobile Menu{:}","_api_new_version":"2.2.0","_api_tested_up_to":"5.6"},"woocommerce-wpglobus":{"title":"{:en}WPGlobus for WooCommerce{:}{:ru}\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 WooCommerce WPGlobus{:}","_api_new_version":"4.3.0","_api_tested_up_to":"5.6"},"wpglobus-header-images":{"title":"{:en}WPGlobus Header Images{:}{:ru}WPGlobus Header Images{:}","_api_new_version":"2.1.0","_api_tested_up_to":"5.5"},"wpglobus-for-bridge-theme":{"title":"{:en}WPGlobus for the \"Bridge\" theme{:}{:ru}WPGlobus \u0434\u043b\u044f \u0442\u0435\u043c\u044b Bridge{:}","_api_new_version":"2.3.0","_api_tested_up_to":"5.5"},"wpglobus-language-widgets":{"title":"{:en}WPGlobus Language Widgets{:}{:ru}\u042f\u0437\u044b\u043a\u0438 WPGlobus \u0434\u043b\u044f \u0432\u0438\u0434\u0436\u0435\u0442\u043e\u0432{:}","_api_new_version":"2.0.0","_api_tested_up_to":"5.6.0"},"wpglobus-for-ultimate-member":{"title":"{:en}WPGlobus for Ultimate Member{:}{:ru}WPGlobus \u0434\u043b\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u0430 Ultimate Member{:}","_api_new_version":"1.1.0","_api_tested_up_to":"5.6"},"wpglobus-multilingual-notices":{"title":"{:en}WPGlobus Multilingual Notices{:}{:ru}WPGlobus - \u043c\u043d\u043e\u0433\u043e\u044f\u0437\u044b\u0447\u043d\u044b\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f{:}","_api_new_version":"2.5.0","_api_tested_up_to":"5.6"},"wpglobus-multilingual-popups":{"title":"{:en}WPGlobus Multilingual Popups{:}{:ru}WPGlobus Multilingual Popups{:}","_api_new_version":"1.3.0","_api_tested_up_to":"5.6"},"wpglobus-menu-visibility":{"title":"WPGlobus Menu Visibility","_api_new_version":"2.0.0","_api_tested_up_to":"5.6"},"wpglobus-plus":{"title":"{:en}WPGlobus Plus multilingual extension{:}{:ru}WPGlobus \u041f\u043b\u044e\u0441{:}","_api_new_version":"1.5.7","_api_tested_up_to":"5.6"}}
 
trunk/flags/ad.alt.png DELETED
Binary file
trunk/flags/ad.png DELETED
Binary file
trunk/flags/ae.png DELETED
Binary file
trunk/flags/af.png DELETED
Binary file
trunk/flags/ag.png DELETED
Binary file
trunk/flags/ai.alt.png DELETED
Binary file
trunk/flags/ai.png DELETED
Binary file
trunk/flags/al.png DELETED
Binary file
trunk/flags/am.png DELETED
Binary file
trunk/flags/an.png DELETED
Binary file
trunk/flags/ao.png DELETED
Binary file
trunk/flags/aq.png DELETED
Binary file
trunk/flags/ar.alt.png DELETED
Binary file
trunk/flags/ar.png DELETED
Binary file
trunk/flags/argm.jpg DELETED
Binary file
trunk/flags/arle.png DELETED
Binary file
trunk/flags/as.png DELETED
Binary file
trunk/flags/asl.gif DELETED
Binary file
trunk/flags/at.alt.png DELETED
Binary file
trunk/flags/at.png DELETED
Binary file
trunk/flags/au.png DELETED
Binary file
trunk/flags/aw.png DELETED
Binary file
trunk/flags/ax.png DELETED
Binary file
trunk/flags/az.png DELETED
Binary file
trunk/flags/ba.png DELETED
Binary file
trunk/flags/bb.png DELETED
Binary file
trunk/flags/bd.png DELETED
Binary file
trunk/flags/be.png DELETED
Binary file
trunk/flags/bf.png DELETED
Binary file
trunk/flags/bg.png DELETED
Binary file
trunk/flags/bh.png DELETED
Binary file
trunk/flags/bi.alt.png DELETED
Binary file
trunk/flags/bi.png DELETED
Binary file
trunk/flags/big/au.png DELETED
Binary file
trunk/flags/big/br.png DELETED
Binary file
trunk/flags/big/ca.png DELETED
Binary file
trunk/flags/big/cn.png DELETED
Binary file
trunk/flags/big/cy.png DELETED
Binary file
trunk/flags/big/de.png DELETED
Binary file
trunk/flags/big/dk.png DELETED
Binary file
trunk/flags/big/es.alt.png DELETED
Binary file
trunk/flags/big/es.png DELETED
Binary file
trunk/flags/big/fi.png DELETED
Binary file
trunk/flags/big/ir.png DELETED
Binary file
trunk/flags/big/it.png DELETED
Binary file
trunk/flags/big/ka.png DELETED
Binary file
trunk/flags/big/ru.png DELETED
Binary file
trunk/flags/big/uk.png DELETED
Binary file
trunk/flags/big/us.png DELETED
Binary file
trunk/flags/bj.png DELETED
Binary file
trunk/flags/bm.png DELETED
Binary file
trunk/flags/bn.png DELETED
Binary file
trunk/flags/bo.png DELETED
Binary file
trunk/flags/br.png DELETED
Binary file
trunk/flags/bs.png DELETED
Binary file
trunk/flags/bt.png DELETED
Binary file
trunk/flags/bv.png DELETED
Binary file
trunk/flags/bw.png DELETED
Binary file
trunk/flags/by.png DELETED
Binary file
trunk/flags/bz.png DELETED
Binary file
trunk/flags/ca.alt.png DELETED
Binary file
trunk/flags/ca.png DELETED
Binary file
trunk/flags/cc.alt.png DELETED
Binary file
trunk/flags/cc.png DELETED
Binary file
trunk/flags/cd.png DELETED
Binary file
trunk/flags/cf.png DELETED
Binary file
trunk/flags/cg.png DELETED
Binary file
trunk/flags/ch.png DELETED
Binary file
trunk/flags/ci.png DELETED
Binary file
trunk/flags/ck.png DELETED
Binary file
trunk/flags/cl.png DELETED
Binary file
trunk/flags/cm.png DELETED
Binary file
trunk/flags/cn.png DELETED
Binary file
trunk/flags/co.png DELETED
Binary file
trunk/flags/cr.alt.png DELETED
Binary file
trunk/flags/cr.png DELETED
Binary file
trunk/flags/cs.png DELETED
Binary file
trunk/flags/cu.png DELETED
Binary file
trunk/flags/cv.png DELETED
Binary file
trunk/flags/cx.png DELETED
Binary file
trunk/flags/cy.png DELETED
Binary file
trunk/flags/cz.png DELETED
Binary file
trunk/flags/de.png DELETED
Binary file
trunk/flags/dj.png DELETED
Binary file
trunk/flags/dk.png DELETED
Binary file
trunk/flags/dm.png DELETED
Binary file
trunk/flags/do.png DELETED
Binary file
trunk/flags/dz.png DELETED
Binary file
trunk/flags/easy_to_read.png DELETED
Binary file
trunk/flags/ec.alt.png DELETED
Binary file
trunk/flags/ec.png DELETED
Binary file
trunk/flags/ee.png DELETED
Binary file
trunk/flags/eg.png DELETED
Binary file
trunk/flags/eh.alt.png DELETED
Binary file
trunk/flags/eh.png DELETED
Binary file
trunk/flags/en.png DELETED
Binary file
trunk/flags/eo.png DELETED
Binary file
trunk/flags/er.png DELETED
Binary file
trunk/flags/es.alt.png DELETED
Binary file
trunk/flags/es.png DELETED
Binary file
trunk/flags/et.alt.png DELETED
Binary file
trunk/flags/et.png DELETED
Binary file
trunk/flags/eu.png DELETED
Binary file
trunk/flags/eus.png DELETED
Binary file
trunk/flags/fi.png DELETED
Binary file
trunk/flags/fj.png DELETED
Binary file
trunk/flags/fk.png DELETED
Binary file
trunk/flags/fm.png DELETED
Binary file
trunk/flags/fo.png DELETED
Binary file
trunk/flags/fr.png DELETED
Binary file
trunk/flags/fr_CA.png DELETED
Binary file
trunk/flags/ga.png DELETED
Binary file
trunk/flags/galego.png DELETED
Binary file
trunk/flags/gb.png DELETED
Binary file
trunk/flags/gd.png DELETED
Binary file
trunk/flags/ge.png DELETED
Binary file
trunk/flags/gf.png DELETED
Binary file
trunk/flags/gg.png DELETED
Binary file
trunk/flags/gh.png DELETED
Binary file
trunk/flags/gi.png DELETED
Binary file
trunk/flags/gl.png DELETED
Binary file
trunk/flags/gm.png DELETED
Binary file
trunk/flags/gn.png DELETED
Binary file
trunk/flags/gp.png DELETED
Binary file
trunk/flags/gq.png DELETED
Binary file
trunk/flags/gr.png DELETED
Binary file
trunk/flags/gs.png DELETED
Binary file
trunk/flags/gt.alt.png DELETED
Binary file
trunk/flags/gt.png DELETED
Binary file
trunk/flags/gu.png DELETED
Binary file
trunk/flags/gw.png DELETED
Binary file
trunk/flags/gy.png DELETED
Binary file
trunk/flags/hk.png DELETED
Binary file
trunk/flags/hm.png DELETED
Binary file
trunk/flags/hn.png DELETED
Binary file
trunk/flags/hr.png DELETED
Binary file
trunk/flags/ht.alt.png DELETED
Binary file
trunk/flags/ht.png DELETED
Binary file
trunk/flags/hu.png DELETED
Binary file
trunk/flags/id.png DELETED
Binary file
trunk/flags/ie.png DELETED
Binary file
trunk/flags/il.png DELETED
Binary file
trunk/flags/im.png DELETED
Binary file
trunk/flags/in.png DELETED
Binary file
trunk/flags/io.png DELETED
Binary file
trunk/flags/iq.png DELETED
Binary file
trunk/flags/ir.png DELETED
Binary file
trunk/flags/is.png DELETED
Binary file
trunk/flags/it.png DELETED
Binary file
trunk/flags/je.png DELETED
Binary file
trunk/flags/jm.png DELETED
Binary file
trunk/flags/jo.png DELETED
Binary file
trunk/flags/jp.png DELETED
Binary file
trunk/flags/ka.png DELETED
Binary file
trunk/flags/ke.png DELETED
Binary file
trunk/flags/kg.png DELETED
Binary file
trunk/flags/kh.png DELETED
Binary file
trunk/flags/ki.png DELETED
Binary file
trunk/flags/km.png DELETED
Binary file
trunk/flags/kn.png DELETED
Binary file
trunk/flags/kp.png DELETED
Binary file
trunk/flags/kr.png DELETED
Binary file
trunk/flags/ku.png DELETED
Binary file
trunk/flags/kw.png DELETED
Binary file
trunk/flags/ky.png DELETED
Binary file
trunk/flags/kz.png DELETED
Binary file
trunk/flags/la.png DELETED
Binary file
trunk/flags/lb.png DELETED
Binary file
trunk/flags/lc.png DELETED
Binary file
trunk/flags/li.png DELETED
Binary file
trunk/flags/lk.png DELETED
Binary file
trunk/flags/lr.png DELETED
Binary file
trunk/flags/ls.png DELETED
Binary file
trunk/flags/lt.png DELETED
Binary file
trunk/flags/lu.png DELETED
Binary file
trunk/flags/lv.png DELETED
Binary file
trunk/flags/ly.png DELETED
Binary file
trunk/flags/ma.png DELETED
Binary file
trunk/flags/mc.png DELETED
Binary file
trunk/flags/md.png DELETED
Binary file
trunk/flags/me.png DELETED
Binary file
trunk/flags/mg.png DELETED
Binary file
trunk/flags/mh.png DELETED
Binary file
trunk/flags/mk.png DELETED
Binary file
trunk/flags/ml.png DELETED
Binary file
trunk/flags/mm.png DELETED
Binary file
trunk/flags/mn.png DELETED
Binary file
trunk/flags/mo.png DELETED
Binary file
trunk/flags/montenegro.gif DELETED
Binary file
trunk/flags/mp.png DELETED
Binary file
trunk/flags/mq.png DELETED
Binary file
trunk/flags/mr.png DELETED
Binary file
trunk/flags/ms.png DELETED
Binary file
trunk/flags/mt.png DELETED
Binary file
trunk/flags/mu.png DELETED
Binary file
trunk/flags/mv.png DELETED
Binary file
trunk/flags/mw.png DELETED
Binary file
trunk/flags/mx.png DELETED
Binary file
trunk/flags/my.png DELETED
Binary file
trunk/flags/my_MM.png DELETED
Binary file
trunk/flags/mz.png DELETED
Binary file
trunk/flags/na.png DELETED
Binary file
trunk/flags/nc.png DELETED
Binary file
trunk/flags/ne.png DELETED
Binary file
trunk/flags/nf.png DELETED
Binary file
trunk/flags/ng.png DELETED
Binary file
trunk/flags/ni.alt.png DELETED
Binary file
trunk/flags/ni.png DELETED
Binary file
trunk/flags/nl.png DELETED
Binary file
trunk/flags/no.png DELETED
Binary file
trunk/flags/np.png DELETED
Binary file
trunk/flags/nr.png DELETED
Binary file
trunk/flags/nu.png DELETED
Binary file
trunk/flags/nz.png DELETED
Binary file
trunk/flags/om.png DELETED
Binary file
trunk/flags/pa.png DELETED
Binary file
trunk/flags/pe.png DELETED
Binary file
trunk/flags/pf.alt.png DELETED
Binary file
trunk/flags/pf.png DELETED
Binary file
trunk/flags/pg.png DELETED
Binary file
trunk/flags/ph.png DELETED
Binary file
trunk/flags/pk.png DELETED
Binary file
trunk/flags/pl.png DELETED
Binary file
trunk/flags/pm.png DELETED
Binary file
trunk/flags/pn.png DELETED
Binary file
trunk/flags/pr.png DELETED
Binary file
trunk/flags/ps.png DELETED
Binary file
trunk/flags/pt.png DELETED
Binary file
trunk/flags/purple.globe.png DELETED
Binary file
trunk/flags/pw.png DELETED
Binary file
trunk/flags/py.png DELETED
Binary file
trunk/flags/qa.png DELETED
Binary file
trunk/flags/re.png DELETED
Binary file
trunk/flags/ro.png DELETED
Binary file
trunk/flags/rs.png DELETED
Binary file
trunk/flags/ru.png DELETED
Binary file
trunk/flags/rw.png DELETED
Binary file
trunk/flags/sa.png DELETED
Binary file
trunk/flags/sb.png DELETED
Binary file
trunk/flags/sc.png DELETED
Binary file
trunk/flags/sd.png DELETED
Binary file
trunk/flags/se.png DELETED
Binary file
trunk/flags/serbska_malka.png DELETED
Binary file
trunk/flags/sg.png DELETED
Binary file
trunk/flags/sh.png DELETED
Binary file
trunk/flags/si.png DELETED
Binary file
trunk/flags/sj.png DELETED
Binary file
trunk/flags/sk.png DELETED
Binary file
trunk/flags/sl.png DELETED
Binary file
trunk/flags/sm.png DELETED
Binary file
trunk/flags/sn.png DELETED
Binary file
trunk/flags/so.png DELETED
Binary file
trunk/flags/sr.png DELETED
Binary file
trunk/flags/st.png DELETED
Binary file
trunk/flags/sv.alt.png DELETED
Binary file
trunk/flags/sv.png DELETED
Binary file
trunk/flags/sy.png DELETED
Binary file
trunk/flags/sz.png DELETED
Binary file
trunk/flags/tc.png DELETED
Binary file
trunk/flags/td.png DELETED
Binary file
trunk/flags/tf.png DELETED
Binary file
trunk/flags/tg.png DELETED
Binary file
trunk/flags/th.png DELETED
Binary file
trunk/flags/tj.png DELETED
Binary file
trunk/flags/tk.png DELETED
Binary file
trunk/flags/tl.png DELETED
Binary file
trunk/flags/tm.png DELETED
Binary file
trunk/flags/tn.png DELETED
Binary file
trunk/flags/to.png DELETED
Binary file
trunk/flags/tr.png DELETED
Binary file
trunk/flags/tt.png DELETED
Binary file
trunk/flags/tv.png DELETED
Binary file
trunk/flags/tw.png DELETED
Binary file
trunk/flags/tz.png DELETED
Binary file
trunk/flags/ua.png DELETED
Binary file
trunk/flags/ug.png DELETED
Binary file
trunk/flags/uk.png DELETED
Binary file
trunk/flags/um.png DELETED
Binary file
trunk/flags/us-uk.png DELETED
Binary file
trunk/flags/us.png DELETED
Binary file
trunk/flags/uy.png DELETED
Binary file
trunk/flags/uz.png DELETED
Binary file
trunk/flags/va.png DELETED
Binary file
trunk/flags/vc.png DELETED
Binary file
trunk/flags/ve.png DELETED
Binary file
trunk/flags/vg.png DELETED
Binary file
trunk/flags/vi.png DELETED
Binary file
trunk/flags/vn.png DELETED
Binary file
trunk/flags/vu.png DELETED
Binary file
trunk/flags/wf.alt.png DELETED
Binary file
trunk/flags/wf.png DELETED
Binary file
trunk/flags/ws.png DELETED
Binary file
trunk/flags/ye.png DELETED
Binary file
trunk/flags/yt.png DELETED
Binary file
trunk/flags/yu.png DELETED
Binary file
trunk/flags/za.png DELETED
Binary file
trunk/flags/zm.png DELETED
Binary file
trunk/flags/zw.png DELETED
Binary file
trunk/flags/zz.png DELETED
Binary file
trunk/includes/admin/central/class-wpglobus-admin-central.php DELETED
@@ -1,172 +0,0 @@
1
- <?php
2
- /**
3
- * File: class-wpglobus-admin-central.php
4
- *
5
- * @since 1.6.6
6
- * @package WPGlobus\Admin\Central
7
- */
8
-
9
- /**
10
- * Class WPGlobus_Admin_Central.
11
- */
12
- if ( ! class_exists( 'WPGlobus_Admin_Central' ) ) :
13
-
14
- class WPGlobus_Admin_Central {
15
-
16
- /**
17
- * Link template.
18
- * @var string
19
- */
20
- public static $link_template;
21
-
22
- /**
23
- * Constructor.
24
- */
25
- public static function construct() {
26
-
27
- self::set_vars();
28
-
29
- add_action( 'admin_menu', array( __CLASS__, 'add_menu' ), PHP_INT_MAX );
30
-
31
- }
32
-
33
- /**
34
- * Set class variables.
35
- */
36
- public static function set_vars() {
37
-
38
- self::$link_template = '<a href="{{href}}" class="{{link_class}}" data-tab-id="{{tab_id}}">';
39
- self::$link_template .= '<span class="{{span_class}}" style="vertical-align: sub;"></span>';
40
- self::$link_template .= '{{title}}';
41
- self::$link_template .= '</a>';
42
-
43
- }
44
-
45
- /**
46
- * Add a hidden admin menu item.
47
- * It serves as a base for several admin tabs, but currently do not have the "root" content.
48
- */
49
- public static function add_menu() {
50
- add_submenu_page(
51
- null,
52
- '',
53
- '',
54
- 'administrator',
55
- WPGlobus::PAGE_WPGLOBUS_ADMIN_CENTRAL,
56
- array( __CLASS__, 'central_page' )
57
- );
58
- }
59
-
60
- /**
61
- * The admin central page.
62
- */
63
- public static function central_page() {
64
-
65
- /**
66
- * Filter tabs.
67
- * Returning array.
68
- * @since 1.6.6
69
- *
70
- * @param array $tabs Array of tabs.
71
- * @param string $link_template The link template.
72
- */
73
- $tabs = apply_filters( 'wpglobus_admin_central_tabs', self::set_tabs(), self::$link_template );
74
-
75
- WPGlobus_Admin_Page::print_header();
76
-
77
- ?>
78
- <h2 class="nav-tab-wrapper"> <?php
79
- foreach ( $tabs as $type=>$tab ) :
80
- $html = str_replace( '{{link_class}}', implode( ' ', $tab['link_class'] ), $tab['link'] );
81
- $html = str_replace( '{{span_class}}', implode( ' ', $tab['span_class'] ), $html );
82
- $html = str_replace( '{{title}}', $tab['title'], $html );
83
- if ( ! empty( $tab['tab_id'] ) ) {
84
- $html = str_replace( '{{href}}', '#' . $tab['tab_id'], $html );
85
- $html = str_replace( '{{tab_id}}', $tab['tab_id'], $html );
86
- } elseif ( ! empty( $tab['href'] ) ) {
87
- $html = str_replace( '{{href}}', $tab['href'], $html );
88
- $html = str_replace( '{{tab_id}}', '', $html );
89
- } else {
90
- $html = str_replace( '{{href}}', '#', $html );
91
- $html = str_replace( '{{tab_id}}', '', $html );
92
- }
93
- echo $html; // WPCS: XSS ok.
94
- endforeach; ?>
95
- </h2> <?php
96
-
97
- /**
98
- * Fires to render a specific tab panel.
99
- *
100
- * @since 1.6.6
101
- *
102
- * @param array $tabs Array of tabs.
103
- */
104
- do_action( 'wpglobus_admin_central_panel', $tabs );
105
-
106
- WPGlobus_Admin_Page::print_footer();
107
-
108
- }
109
-
110
- /**
111
- * Add standard tabs.
112
- * @return array
113
- */
114
- protected static function set_tabs() {
115
-
116
- $tabs = array();
117
-
118
- /**
119
- * WPGlobus Guide tab.
120
- */
121
- $tab = array(
122
- 'title' => __( 'Guide', 'wpglobus' ),
123
- 'link_class' => array( 'nav-tab' ),
124
- 'span_class' => array( 'dashicons', 'dashicons-book-alt' ),
125
- 'link' => self::$link_template,
126
- 'href' => WPGlobus::URL_WPGLOBUS_SITE . 'quick-start/',
127
- 'tab_id' => ''
128
- );
129
- $tabs[ 'guide' ] = $tab;
130
-
131
- /**
132
- * WPGlobus Help Desk tab.
133
- */
134
- $href = add_query_arg(
135
- array(
136
- 'page' => WPGlobus::PAGE_WPGLOBUS_HELPDESK
137
- ),
138
- admin_url( 'admin.php' )
139
- );
140
-
141
- $tab = array(
142
- 'title' => __( 'WPGlobus Help Desk', 'wpglobus' ),
143
- 'link_class' => array( 'nav-tab' ),
144
- 'span_class' => array( 'dashicons', 'dashicons-format-chat' ),
145
- 'link' => self::$link_template,
146
- 'href' => $href,
147
- 'tab_id' => ''
148
- );
149
- $tabs[ 'helpdesk' ] = $tab;
150
-
151
- /**
152
- * WPGlobus Add-ons tab.
153
- */
154
- $href = WPGlobus_Admin_Page::url_addons();
155
-
156
- $tab = array(
157
- 'title' => __( 'Add-ons', 'wpglobus' ),
158
- 'link_class' => array( 'nav-tab' ),
159
- 'span_class' => array( 'dashicons', 'dashicons-admin-plugins' ),
160
- 'link' => self::$link_template,
161
- 'href' => $href,
162
- 'tab_id' => ''
163
- );
164
- $tabs[ 'add_ons' ] = $tab;
165
-
166
- return $tabs;
167
-
168
- }
169
- }
170
-
171
- endif;
172
- /* EOF */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/admin/class-wpglobus-about.php DELETED
@@ -1,178 +0,0 @@
1
- <?php
2
- /**
3
- * @package WPGlobus\Admin
4
- */
5
-
6
- /**
7
- * Class WPGlobus_About
8
- */
9
- class WPGlobus_About {
10
-
11
- /**
12
- * For Google Analytics
13
- */
14
- const QA_CAMPAIGN = '?utm_source=wpglobus-admin-about&utm_medium=link&utm_campaign=activate-plugin';
15
-
16
- /**
17
- * Output the about screen.
18
- */
19
- public static function about_screen() {
20
-
21
- WPGlobus_Admin_Page::print_header();
22
-
23
- ?>
24
- <h2 class="nav-tab-wrapper">
25
- <a href="#" class="nav-tab nav-tab-active">
26
- <?php esc_html_e( 'Quick Start', 'wpglobus' ); ?>
27
- </a>
28
- <a href="<?php echo esc_url( WPGlobus_Admin_Page::url_settings() ); ?>"
29
- class="nav-tab">
30
- <?php WPGlobus_Admin_Page::nav_tab_icon_e( 'Settings' ); ?>
31
- <?php esc_html_e( 'Settings' ); ?>
32
- </a>
33
- <a href="<?php echo esc_url( WPGlobus_Admin_Page::url_addons() ); ?>"
34
- class="nav-tab">
35
- <?php WPGlobus_Admin_Page::nav_tab_icon_e( 'Add-ons' ); ?>
36
- <?php esc_html_e( 'Add-ons', 'wpglobus' ); ?>
37
- </a>
38
- <a href="<?php echo esc_url( WPGlobus_Utils::url_wpglobus_site() . 'quick-start/' . self::QA_CAMPAIGN ); ?>"
39
- target="_blank"
40
- class="nav-tab">
41
- <?php WPGlobus_Admin_Page::nav_tab_icon_e( 'Guide' ); ?>
42
- <?php esc_html_e( 'Guide', 'wpglobus' ); ?>
43
- </a>
44
- <a href="<?php echo esc_url( WPGlobus_Utils::url_wpglobus_site() . 'faq/' . self::QA_CAMPAIGN ); ?>"
45
- target="_blank"
46
- class="nav-tab">
47
- <?php WPGlobus_Admin_Page::nav_tab_icon_e( 'FAQ' ); ?>
48
- <?php esc_html_e( 'FAQ', 'wpglobus' ); ?>
49
- </a>
50
- <a href="<?php echo esc_url( WPGlobus_Admin_Page::url_helpdesk() ); ?>"
51
- class="nav-tab">
52
- <?php WPGlobus_Admin_Page::nav_tab_icon_e( 'Helpdesk' ); ?>
53
- <?php echo esc_html( WPGlobus_Admin_HelpDesk::$page_title ); ?>
54
- </a>
55
- </h2>
56
-
57
- <?php if ( ! extension_loaded( 'mbstring' ) ) : ?>
58
- <div style="background: #fff;border-left: 4px solid #dc3232;margin: 15px 15px 2px;padding: 1px 12px;">
59
- <h4><?php esc_html_e( 'Attention: the Multibyte String PHP extension (`mbstring`) is not loaded!', 'wpglobus' ); ?></h4>
60
- <p><?php esc_html_e( 'The mbstring extension is required for the full UTF-8 compatibility and better performance. Without it, some parts of WordPress and WPGlobus may function incorrectly. Please contact your hosting company or systems administrator.', 'wpglobus' ); ?></p>
61
- </div>
62
- <?php endif; ?>
63
-
64
- <div class="feature-main feature-section col two-col">
65
- <div class="col">
66
- <?php self::easy_1_2_3(); ?>
67
- </div>
68
- <div class="col last-feature">
69
- <?php self::translation_help(); ?>
70
- </div>
71
- </div>
72
-
73
- <div class="feature-main feature-section col two-col">
74
- <div class="col">
75
- <?php self::important_notes(); ?>
76
- </div>
77
- <div class="col last-feature">
78
- <?php self::links(); ?>
79
- </div>
80
- </div>
81
-
82
- <hr />
83
-
84
- <div class="return-to-dashboard">
85
- <a class="button button-primary"
86
- href="<?php echo esc_url( WPGlobus_Admin_Page::url_settings() ); ?>">
87
- <?php esc_html_e( 'Go to WPGlobus Settings', 'wpglobus' ); ?>
88
- </a>
89
- </div>
90
-
91
- <?php
92
- WPGlobus_Admin_Page::print_footer();
93
- }
94
-
95
- protected static function easy_1_2_3() {
96
- ?>
97
- <h4 class="dashicons-before dashicons-admin-settings bar">
98
- <?php esc_html_e( 'Easy as 1-2-3:', 'wpglobus' ); ?>
99
- </h4>
100
- <ul class="wpglobus-checkmarks">
101
- <li><?php esc_html_e( 'Go to WPGlobus admin menu and choose the countries / languages;', 'wpglobus' ); ?></li>
102
- <li><?php esc_html_e( 'Enter the translations to the posts, pages, categories, tags and menus using a clean and simple interface.', 'wpglobus' ); ?></li>
103
- <li><?php esc_html_e( 'Switch languages at the front-end using a drop-down menu with language names and country flags.', 'wpglobus' ); ?></li>
104
- </ul>
105
- <?php
106
- }
107
-
108
- protected static function links() {
109
- ?>
110
- <h4 class="dashicons-before dashicons-admin-links bar">
111
- <?php esc_html_e( 'Links:', 'wpglobus' ); ?>
112
- </h4>
113
- <ul>
114
- <li>&bull; <a href="<?php echo esc_url( WPGlobus_Utils::url_wpglobus_site() . self::QA_CAMPAIGN ); ?>"
115
- target="_blank">WPGlobus.com</a></li>
116
- <li>&bull; <a href="<?php echo esc_url( WPGlobus_Utils::url_wpglobus_site() . 'quick-start/' . self::QA_CAMPAIGN ); ?>"
117
- target="_blank"><?php esc_html_e( 'Guide', 'wpglobus' ); ?></a></li>
118
- <li>&bull; <a href="<?php echo esc_url( WPGlobus_Utils::url_wpglobus_site() . 'faq/' . self::QA_CAMPAIGN ); ?>"
119
- target="_blank"><?php esc_html_e( 'FAQs', 'wpglobus' ); ?></a></li>
120
- <li>&bull; <a href="<?php echo esc_url( WPGlobus_Admin_Page::url_helpdesk() ); ?>"
121
- target="_blank"><?php esc_html_e( 'Contact Us', 'wpglobus' ); ?></a></li>
122
- <li>&bull; <a href="https://wordpress.org/support/plugin/wpglobus/reviews/?filter=5"
123
- target="_blank"><?php esc_html_e( 'Please give us 5 stars!', 'wpglobus' ); ?></a>
124
- <span class="wpglobus-stars">&#x2606;&#x2606;&#x2606;&#x2606;&#x2606;</span></li>
125
-
126
- </ul>
127
- <?php
128
- }
129
-
130
- protected static function translation_help() {
131
- ?>
132
- <h4 class="dashicons-before dashicons-translation highlight">
133
- <?php esc_html_e( 'WPGlobus does not translate texts automatically!', 'wpglobus' ); ?>
134
- </h4>
135
- <p>
136
- <?php esc_html_e( 'There are many translation companies and individual translators who can help you write and proofread the texts.', 'wpglobus' ); ?>
137
- <?php esc_html_e( 'When you choose a translator, please look at their native language, country of residence, specialization and knowledge of WordPress.', 'wpglobus' ); ?>
138
- </p>
139
- <p>
140
- <?php
141
- printf(
142
- // translators: %s are used to insert HTML link. Keep them in place.
143
- esc_html__( 'We are planning to maintain a %s list of translators %s on the WPGlobus website. This is not an endorsement, just a courtesy. Please contact them directly and let us know how did it work for you!', 'wpglobus' ),
144
- '<a href="' . esc_url( WPGlobus_Utils::url_wpglobus_site() . 'translator/' . self::QA_CAMPAIGN ) . '">',
145
- '</a>'
146
- ); ?>
147
- </p>
148
- <?php
149
- }
150
-
151
- protected static function important_notes() {
152
- ?>
153
- <h4 class="dashicons-before dashicons-info highlight">
154
- <?php esc_html_e( 'Important notes:', 'wpglobus' ); ?>
155
- </h4>
156
- <ul class="wpglobus-important">
157
-
158
- <li>
159
- <?php _e( 'WPGlobus only supports the localization URLs in the form of <code>example.com/xx/page/</code>. We do not plan to support subdomains <code>xx.example.com</code> and language queries <code>example.com?lang=xx</code>.', 'wpglobus' ); // WPCS: XSS ok. ?>
160
- </li>
161
- <li>
162
- <?php _e( 'Some themes and plugins are <strong>not multilingual-ready</strong>.', 'wpglobus' ); // WPCS: XSS ok. ?>
163
- <?php esc_html_e( 'They might display some texts with no translation, or with all languages mixed together.', 'wpglobus' ); ?>
164
- <?php
165
- printf(
166
- // translators: %s are used to insert HTML link. Keep them in place.
167
- esc_html__( 'Please contact the theme / plugin author. If they are unable to assist, consider %s hiring the WPGlobus Team %s to write a custom code for you.', 'wpglobus' ),
168
- '<a href="' . esc_url( WPGlobus_Utils::url_wpglobus_site() . 'professional-support/' . self::QA_CAMPAIGN ) . '">',
169
- '</a>'
170
- ); ?>
171
- </li>
172
-
173
- </ul>
174
- <?php
175
- }
176
- } //class
177
-
178
- /*EOF*/
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/admin/class-wpglobus-admin-bar-menu.php DELETED
@@ -1,213 +0,0 @@
1
- <?php
2
- /**
3
- * Show WPGlobus menu in admin bar.
4
- *
5
- * @since 2.2.7
6
- * @package WPGlobus\Admin
7
- */
8
-
9
- if ( ! class_exists( 'WPGlobus_Admin_Bar_Menu' ) ) :
10
-
11
- /**
12
- * Class WPGlobus_Admin_Bar_Menu.
13
- */
14
- class WPGlobus_Admin_Bar_Menu {
15
-
16
- /**
17
- * Available languages.
18
- *
19
- * @var array
20
- */
21
- protected static $available_languages = array();
22
-
23
- /**
24
- * @since 2.2.8
25
- */
26
- protected static $run_script = true;
27
-
28
- /**
29
- * Static constructor.
30
- *
31
- * @param WP_Admin_Bar $wp_admin_bar Admin bar.
32
- */
33
- public static function construct( $wp_admin_bar ) {
34
-
35
- $user_id = get_current_user_id();
36
-
37
- if ( ! $user_id ) {
38
- return;
39
- }
40
-
41
- self::$available_languages = get_available_languages();
42
-
43
- $user_locale = get_user_meta( $user_id, 'locale', true );
44
-
45
- add_action( 'admin_footer', array( __CLASS__, 'on__admin_footer' ), 1000 );
46
-
47
- if ( empty( $user_locale ) ) {
48
- self::add_language_menu( $wp_admin_bar );
49
- } else {
50
- if ( ! self::add_info_menu( $wp_admin_bar, $user_locale ) ) {
51
- self::$run_script = false;
52
- }
53
- }
54
-
55
- }
56
-
57
- /**
58
- * @since 2.2.8
59
- */
60
- public static function on__admin_footer() {
61
-
62
- if ( ! self::$run_script ) {
63
- return;
64
- }
65
-
66
- ?>
67
- <!--suppress AnonymousFunctionJS, JSUnusedLocalSymbols -->
68
- <script type="text/javascript">
69
- //<![CDATA[
70
- jQuery(document).ready(function ($) {
71
- wpglobus_select_lang = function (locale) {
72
- $.post(ajaxurl, {
73
- action: 'WPGlobus_process_ajax',
74
- order: {action: 'wpglobus_select_lang', locale: locale}
75
- }, function (d) {
76
- })
77
- .done(function () {
78
- window.location.reload();
79
- });
80
- }
81
- $('#wpglobus-default-locale').on('click', function (e) {
82
- wpglobus_select_lang('<?php echo esc_js( WPGlobus::Config()->locale[ WPGlobus::Config()->language ] ); ?>');
83
- });
84
-
85
- });
86
- //]]>
87
- </script>
88
- <?php
89
- }
90
-
91
- /**
92
- * Language menu with link to `profile.php` page.
93
- *
94
- * @param WP_Admin_Bar $wp_admin_bar Admin bar.
95
- * @param string[] $user_locale User locale.
96
- */
97
- public static function add_info_menu( $wp_admin_bar, $user_locale ) {
98
-
99
- $user_profile_language = array_search( $user_locale, WPGlobus::Config()->locale, true );
100
-
101
- if ( ! $user_profile_language ) {
102
- return false;
103
- }
104
-
105
- if ( empty( WPGlobus::Config()->language_name[ $user_profile_language ] ) ) {
106
- return false;
107
- }
108
-
109
- $img = '';
110
- if ( ! empty( WPGlobus::Config()->flag[ $user_profile_language ] ) ) {
111
- $img = '<span class="ab-icon"><img src="' . WPGlobus::Config()->flags_url . WPGlobus::Config()->flag[ $user_profile_language ] . '" alt=""/></span>';
112
- }
113
-
114
- $wp_admin_bar->add_menu(
115
- array(
116
- 'id' => 'wpglobus-language-select',
117
- 'parent' => 'top-secondary',
118
- 'title' => $img . '<span class="ab-label">' .
119
- WPGlobus::Config()->language_name[ $user_profile_language ] .
120
- '</span>',
121
- )
122
- );
123
-
124
- $title = esc_html__( 'Language was set on your profile page', 'wpglobus' );
125
- $wp_admin_bar->add_menu(
126
- array(
127
- 'parent' => 'wpglobus-language-select',
128
- 'id' => 'wpglobus-add-languages',
129
- 'title' => $title,
130
- 'href' => admin_url( 'profile.php' ),
131
- 'meta' => array(
132
- 'tabindex' => -1,
133
- ),
134
- )
135
- );
136
-
137
- return true;
138
- }
139
-
140
- /**
141
- * Language menu in admin bar.
142
- *
143
- * @param WP_Admin_Bar $wp_admin_bar Admin bar.
144
- */
145
- public static function add_language_menu( $wp_admin_bar ) {
146
-
147
- $available_languages = self::$available_languages;
148
-
149
- $wp_admin_bar->add_menu(
150
- array(
151
- 'id' => 'wpglobus-language-select',
152
- 'parent' => 'top-secondary',
153
- 'title' => '<span class="ab-icon">' .
154
- '<img alt="" src="' . WPGlobus::Config()->flags_url .
155
- WPGlobus::Config()->flag[ WPGlobus::Config()->language ] . '"/>' .
156
- '</span><span class="ab-label">' .
157
- WPGlobus::Config()->language_name[ WPGlobus::Config()->language ] .
158
- '</span>',
159
- )
160
- );
161
-
162
- $add_more_languages = array();
163
- foreach ( WPGlobus::Config()->enabled_languages as $language ) :
164
-
165
- if ( WPGlobus::Config()->language === $language ) {
166
- continue;
167
- }
168
-
169
- $locale = WPGlobus::Config()->locale[ $language ];
170
-
171
- if ( 'en_US' !== $locale ) {
172
- if ( ! in_array( $locale, $available_languages, true ) ) {
173
- $add_more_languages[] = WPGlobus::Config()->language_name[ $language ];
174
- continue;
175
- }
176
- }
177
-
178
- $wp_admin_bar->add_menu(
179
- array(
180
- 'parent' => 'wpglobus-language-select',
181
- 'id' => 'wpglobus-' . $language,
182
- 'title' => '<span><img alt="" src="' . WPGlobus::Config()->flags_url . WPGlobus::Config()->flag[ $language ] . '" /></span>&nbsp;&nbsp;' . WPGlobus::Config()->language_name[ $language ],
183
- 'href' => admin_url( 'options-general.php' ),
184
- 'meta' => array(
185
- 'tabindex' => -1,
186
- 'onclick' => 'wpglobus_select_lang("' . $locale . '");return false;',
187
- ),
188
- )
189
- );
190
-
191
- endforeach;
192
-
193
- if ( ! empty( $add_more_languages ) ) {
194
- $title = esc_html__( 'Add', 'wpglobus' ) . ' (' . implode( ', ', $add_more_languages ) . ')';
195
- $wp_admin_bar->add_menu(
196
- array(
197
- 'parent' => 'wpglobus-language-select',
198
- 'id' => 'wpglobus-add-languages',
199
- 'title' => $title,
200
- 'href' => admin_url( 'options-general.php' ),
201
- 'meta' => array(
202
- 'tabindex' => -1,
203
- ),
204
- )
205
- );
206
- }
207
-
208
- return;
209
-
210
- }
211
- }
212
-
213
- endif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/admin/class-wpglobus-admin-menu.php DELETED
@@ -1,34 +0,0 @@
1
- <?php
2
- /**
3
- * Show a sidebar menu item.
4
- *
5
- * @since 1.7.8
6
- */
7
-
8
- /**
9
- * Class WPGlobus_Admin_Menu
10
- */
11
- class WPGlobus_Admin_Menu {
12
-
13
- /**
14
- * Static constructor.
15
- */
16
- public static function construct() {
17
- add_action( 'admin_menu', array( __CLASS__, 'add_menu' ), PHP_INT_MAX );
18
- }
19
-
20
- public static function add_menu() {
21
- $icon_class = 'dashicons dashicons-before dashicons-admin-plugins';
22
- $menu_title = __( 'Add-ons', 'wpglobus' );
23
- add_submenu_page(
24
- WPGlobus::OPTIONS_PAGE_SLUG,
25
- $menu_title,
26
- '<span class="' . esc_attr( $icon_class )
27
- . '" style="vertical-align:middle"></span> '
28
- . $menu_title,
29
- 'administrator',
30
- WPGlobus_Admin_Page::url_addons(true)
31
- );
32
-
33
- }
34
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/admin/class-wpglobus-admin-page.php DELETED
@@ -1,208 +0,0 @@
1
- <?php
2
- /**
3
- * File: class-wpglobus-admin-page.php
4
- *
5
- * @package WPGlobus\Admin
6
- */
7
-
8
- /**
9
- * Helpers for building admin pages.
10
- */
11
- class WPGlobus_Admin_Page {
12
-
13
- /**
14
- * Print page header.
15
- */
16
- public static function print_header() {
17
- $url_wpglobus_logo = WPGlobus::internal_images_url() . '/wpglobus-logo-180x180.png';
18
- ?>
19
- <style>
20
- .wp-badge.wpglobus-badge {
21
- background: #ffffff url(<?php echo esc_url( $url_wpglobus_logo ); ?>) no-repeat;
22
- background-size: contain;
23
- }
24
- </style>
25
-
26
- <?php echo '<div class="wrap about-wrap wpglobus-about-wrap">'; ?>
27
-
28
- <h1 class="wpglobus"><span class="wpglobus-wp">WP</span>Globus
29
- <span class="wpglobus-version"><?php echo esc_html( WPGLOBUS_VERSION ); ?></span>
30
- </h1>
31
-
32
- <div class="wpglobus-motto"><?php esc_html_e( 'Multilingual Everything!', 'wpglobus' ); ?></div>
33
- <div class="about-text">
34
- <?php esc_html_e( 'WPGlobus is a family of WordPress plugins assisting you in making multilingual WordPress blogs and sites.', 'wpglobus' ); ?>
35
- </div>
36
-
37
- <div class="wp-badge wpglobus-badge"></div>
38
- <?php
39
- }
40
-
41
- /**
42
- * Print page header.
43
- */
44
- public static function print_footer() {
45
- echo '</div>';
46
- }
47
-
48
- /**
49
- * URL of the WPGlobus Add-ons page.
50
- *
51
- * @param bool $relative Set it to true to get the URL relative to the admin.
52
- *
53
- * @return string
54
- */
55
- public static function url_addons( $relative = false ) {
56
-
57
- $url = add_query_arg(
58
- array(
59
- 'tab' => 'search',
60
- 's' => 'WPGlobus',
61
- 'source' => 'WPGlobus',
62
- ),
63
- self_admin_url( 'plugin-install.php' )
64
- );
65
-
66
- if ( $relative ) {
67
- $url = str_replace( self_admin_url(), '', $url );
68
- }
69
-
70
- return $url;
71
-
72
- }
73
-
74
- /**
75
- * URL of the WPGlobus Settings page.
76
- *
77
- * @since 2.4.8 Added $tab parameter.
78
- *
79
- * @return string
80
- */
81
- public static function url_settings( $tab = '' ) {
82
- if ( empty($tab) ) {
83
- return add_query_arg( 'page', WPGlobus::OPTIONS_PAGE_SLUG, admin_url( 'admin.php' ) );
84
- }
85
- return add_query_arg( array('page'=>WPGlobus::OPTIONS_PAGE_SLUG, 'tab'=>$tab), admin_url( 'admin.php' ) );
86
- }
87
-
88
- /**
89
- * URL of the WPGlobus Helpdesk page.
90
- *
91
- * @return string
92
- * @since 1.9.10
93
- */
94
- public static function url_helpdesk() {
95
- return add_query_arg( 'page', WPGlobus::PAGE_WPGLOBUS_HELPDESK, admin_url( 'admin.php' ) );
96
- }
97
-
98
- /**
99
- * URL of the Clean-up Tool page.
100
- *
101
- * @return string
102
- * @since 1.9.10
103
- */
104
- public static function url_clean_up_tool() {
105
- return add_query_arg( 'page', WPGlobus::PAGE_WPGLOBUS_CLEAN, admin_url( 'admin.php' ) );
106
- }
107
-
108
- /**
109
- * URL of the About page.
110
- *
111
- * @return string
112
- * @since 1.9.10
113
- */
114
- public static function url_about() {
115
- return add_query_arg( 'page', WPGlobus::PAGE_WPGLOBUS_ABOUT, admin_url( 'admin.php' ) );
116
- }
117
-
118
- /**
119
- * URL of the Admin Central page.
120
- *
121
- * @param string $central_tab_id Tab on the page.
122
- *
123
- * @return string
124
- * @since 1.9.10
125
- */
126
- public static function url_admin_central( $central_tab_id = '' ) {
127
- return add_query_arg( 'page', WPGlobus::PAGE_WPGLOBUS_ADMIN_CENTRAL . '#' . $central_tab_id, admin_url( 'admin.php' ) );
128
- }
129
-
130
- /**
131
- * URL of the Options Panel.
132
- *
133
- * @param string $tab Tab on the page.
134
- *
135
- * @return string
136
- * @since 1.9.10
137
- */
138
- public static function url_options_panel( $tab = WPGlobus_Options::DEFAULT_TAB ) {
139
-
140
- return add_query_arg( array(
141
- 'page' => WPGlobus::OPTIONS_PAGE_SLUG,
142
- 'tab' => $tab,
143
- ), admin_url( 'admin.php' ) );
144
- }
145
-
146
- /**
147
- * URL of the WPGlobus-Plus Panel.
148
- *
149
- * @param string $tab Tab on the page.
150
- *
151
- * @return string
152
- * @since 1.9.10
153
- */
154
- public static function url_wpglobus_plus_panel( $tab = 'modules' ) {
155
- if ( class_exists( 'WPGlobusPlus', false ) ) {
156
- return add_query_arg( array(
157
- 'page' => WPGlobusPlus::WPGLOBUS_PLUS_OPTIONS_PAGE,
158
- 'tab' => $tab,
159
- ), admin_url( 'admin.php' ) );
160
- } else {
161
- return admin_url();
162
- }
163
- }
164
-
165
- /**
166
- * Icon for navigation tab item.
167
- *
168
- * @param string $icon_class A Dashicon CSS class or our internal alias.
169
- * @param boolean $add_dashicons_class Add "dashicons" class before icon class.
170
- *
171
- * @link https://developer.wordpress.org/resource/dashicons/
172
- * @return string
173
- */
174
- public static function nav_tab_icon( $icon_class, $add_dashicons_class = true ) {
175
-
176
- static $aliases = array(
177
- 'faq' => 'dashicons-editor-help',
178
- 'settings' => 'dashicons-admin-settings',
179
- 'add-ons' => 'dashicons-admin-plugins',
180
- 'guide' => 'dashicons-book-alt',
181
- 'helpdesk' => 'dashicons-format-chat',
182
- 'globe' => 'dashicons-admin-site',
183
- );
184
-
185
- $icon_class = strtolower( $icon_class );
186
-
187
- if ( isset( $aliases[ $icon_class ] ) ) {
188
- // An alias passed.
189
- $icon_class = $aliases[ $icon_class ];
190
- }
191
-
192
- if ( $add_dashicons_class ) {
193
- $icon_class = 'dashicons dashicons-before ' . $icon_class;
194
- }
195
-
196
- return $icon_class;
197
-
198
- }
199
-
200
- /**
201
- * Print icon for navigation tab item.
202
- *
203
- * @param string $icon_class A Dashicon CSS class or our internal alias.
204
- */
205
- public static function nav_tab_icon_e( $icon_class ) {
206
- echo '<span class="' . esc_attr( self::nav_tab_icon( $icon_class ) ) . '"></span>';
207
- }
208
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/admin/class-wpglobus-admin-post.php DELETED
@@ -1,57 +0,0 @@
1
- <?php
2
- /**
3
- * File: class-wpglobus-admin-post.php
4
- * Class for post.php page.
5
- *
6
- * @package WPGlobus\Admin
7
- * @author Alex Gor(alexgff)
8
- * @since 2.4
9
- */
10
- if ( ! class_exists( 'WPGlobus_Admin_Post' ) ) :
11
-
12
- /**
13
- * Class WPGlobus_Admin_Menu.
14
- */
15
- class WPGlobus_Admin_Post {
16
-
17
- /**
18
- * Static constructor.
19
- */
20
- public static function construct() {
21
-
22
- if ( ! WPGlobus_WP::is_pagenow('post.php') ) {
23
- return;
24
- }
25
-
26
- if ( 'off' == WPGlobus::Config()->toggle ) {
27
- return;
28
- }
29
-
30
- add_filter( 'preview_post_link', array( __CLASS__, 'filter__preview_post_link' ), 5, 2 );
31
- }
32
-
33
- /**
34
- * Filters the URL used for a post preview in builder mode.
35
- * @see wp-includes/link-template.php
36
- *
37
- * @param string $preview_link URL used for the post preview.
38
- * @param WP_Post $post Post object.
39
- */
40
- public static function filter__preview_post_link( $preview_link, $post ) {
41
-
42
- if ( ! WPGlobus::Config()->builder->is_builder_page() ) {
43
- return $preview_link;
44
- }
45
-
46
- if ( WPGlobus::Config()->builder->is_default_language() ) {
47
- return $preview_link;
48
-
49
- }
50
-
51
- return WPGlobus_Utils::localize_url( $preview_link, WPGlobus::Config()->builder->get_language() );
52
- }
53
- }
54
-
55
- endif;
56
-
57
- # --- EOF
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/admin/class-wpglobus-clean.php DELETED
@@ -1,743 +0,0 @@
1
- <?php
2
- /**
3
- * @package WPGlobus/Admin
4
- * @since 1.4.3
5
- */
6
-
7
- if ( ! class_exists( 'WPGlobus_Clean' ) ) :
8
-
9
- /**
10
- * Class WPGlobus_Clean
11
- */
12
- class WPGlobus_Clean {
13
-
14
- const LOG_BASENAME = 'wpglobus-clean';
15
-
16
- protected static $tables = array();
17
-
18
- protected static $log_file = '';
19
-
20
- /**
21
- * Controller
22
- */
23
- public static function controller() {
24
-
25
- self::_set_log_file();
26
-
27
- self::get_table();
28
-
29
- self::screen();
30
-
31
- add_action( 'admin_footer', array(
32
- 'WPGlobus_Clean',
33
- 'action__admin_print_scripts'
34
- ),
35
- 99
36
- );
37
-
38
- }
39
-
40
- /**
41
- * Initialize the class variable `log_file`.
42
- * Note: 'wp-content' can be set to a different path, so we are using the standard WP method.
43
- * @todo Check if the folder exists and file is writeable.
44
- */
45
- protected static function _set_log_file() {
46
- $upload_dir = wp_upload_dir();
47
- $wpglobus_logs_dir = $upload_dir['basedir'] . '/' . 'wpglobus-logs';
48
-
49
- wp_mkdir_p( $wpglobus_logs_dir );
50
- // Protect the folder from reading via URL
51
- if ( ! file_exists( $wpglobus_logs_dir . '/.htaccess' ) ) {
52
- file_put_contents( $wpglobus_logs_dir . '/.htaccess', 'deny from all' );
53
- }
54
- if ( ! file_exists( $wpglobus_logs_dir . '/index.php' ) ) {
55
- file_put_contents( $wpglobus_logs_dir . '/index.php', '' );
56
- }
57
-
58
- self::$log_file = $wpglobus_logs_dir . '/' . self::LOG_BASENAME . '.log';
59
- }
60
-
61
- /**
62
- * Get table
63
- *
64
- * @param string $table Table name to set data.
65
- *
66
- * @return void
67
- */
68
- public static function get_table( $table = '' ) {
69
-
70
- $get_all = false;
71
- if ( '' === $table ) {
72
- $get_all = true;
73
- }
74
-
75
- if ( 'posts' === $table || $get_all ) {
76
-
77
- /**
78
- * table posts
79
- */
80
- $posts = new stdClass();
81
- $posts->include_fields = array(
82
- 'post_content',
83
- 'post_title',
84
- 'post_excerpt',
85
- 'post_content_filtered'
86
- );
87
- $posts->id_field = 'ID';
88
- $posts->post_status = array(
89
- 'publish',
90
- 'draft'
91
- );
92
-
93
- self::$tables['posts'] = $posts;
94
-
95
- }
96
-
97
- if ( 'postmeta' === $table || $get_all ) {
98
-
99
- /**
100
- * table postmeta
101
- */
102
- $postmeta = new stdClass();
103
- $postmeta->include_fields = array(
104
- 'meta_value'
105
- );
106
- $postmeta->id_field = 'meta_id';
107
-
108
- self::$tables['postmeta'] = $postmeta;
109
-
110
- }
111
-
112
- if ( 'options' === $table || $get_all ) {
113
-
114
- /**
115
- * table options
116
- */
117
- $options = new stdClass();
118
- $options->include_fields = array(
119
- 'option_value'
120
- );
121
- $options->id_field = 'option_id';
122
-
123
- self::$tables['options'] = $options;
124
-
125
- }
126
-
127
- if ( 'terms' === $table || $get_all ) {
128
-
129
- /**
130
- * table terms
131
- */
132
- $terms = new stdClass();
133
- $terms->include_fields = array(
134
- 'name'
135
- );
136
- $terms->id_field = 'term_id';
137
-
138
- self::$tables['terms'] = $terms;
139
-
140
- }
141
-
142
- if ( 'term_taxonomy' === $table || $get_all ) {
143
-
144
- /**
145
- * table term_taxonomy
146
- */
147
- $term_taxonomy = new stdClass();
148
- $term_taxonomy->include_fields = array(
149
- 'description'
150
- );
151
- $term_taxonomy->id_field = 'term_taxonomy_id';
152
-
153
- self::$tables['term_taxonomy'] = $term_taxonomy;
154
-
155
- }
156
-
157
- if ( 'usermeta' === $table || $get_all ) {
158
-
159
- /**
160
- * table usermeta
161
- */
162
- $usermeta = new stdClass();
163
- $usermeta->include_fields = array(
164
- 'meta_value'
165
- );
166
-
167
- $usermeta->id_field = 'umeta_id';
168
-
169
- self::$tables['usermeta'] = $usermeta;
170
-
171
- }
172
-
173
-
174
- if ( class_exists( 'WooCommerce' ) ) :
175
-
176
- /**
177
- * WooCommerce tables
178
- */
179
- if ( 'woocommerce_attribute_taxonomies' === $table || $get_all ) {
180
- /**
181
- * table woocommerce_attribute_taxonomies
182
- */
183
- $woocommerce_attribute_taxonomies = new stdClass();
184
- $woocommerce_attribute_taxonomies->include_fields = array(
185
- 'attribute_label'
186
- );
187
- $woocommerce_attribute_taxonomies->id_field = 'attribute_id';
188
-
189
- self::$tables['woocommerce_attribute_taxonomies'] = $woocommerce_attribute_taxonomies;
190
- }
191
-
192
- if ( 'woocommerce_order_items' === $table || $get_all ) {
193
- /**
194
- * table woocommerce_order_items
195
- */
196
- $woocommerce_order_items = new stdClass();
197
- $woocommerce_order_items->include_fields = array(
198
- 'order_item_name'
199
- );
200
- $woocommerce_order_items->id_field = 'order_item_id';
201
-
202
- self::$tables['woocommerce_order_items'] = $woocommerce_order_items;
203
- }
204
-
205
- endif;
206
-
207
- }
208
-
209
- /**
210
- * Get table list
211
- */
212
- public static function get_table_list() {
213
-
214
- $spinner = WPGlobus::$PLUGIN_DIR_URL . 'includes/css/images/spinner.gif';
215
-
216
- $list = '<ul>';
217
- foreach ( self::$tables as $table => $data ) {
218
-
219
- $list .= '<li id="' . $table . '">';
220
- /** @noinspection DisconnectedForeachInstructionInspection */
221
- $list .= '<span class="wpglobus-spinner" style="float:left;margin-right:10px;"><img src="' . $spinner . '" /></span>';
222
- $list .= '<span class="wpglobus-result" style="float:left;width:20px;height:20px;"></span>';
223
- $list .= '<span class=""><input type="checkbox" id="cb-' . $table . '" checked disabled /></span>';
224
- $list .= $table;
225
- $list .= '</li>';
226
-
227
- }
228
- $list .= '<li id="wpglobus_options">';
229
- $list .= '<span class="wpglobus-spinner" style="float:left;margin-right:10px;"><img src="' . $spinner . '" /></span>';
230
- $list .= '<span class="wpglobus-result" style="float:left;width:20px;height:20px;"></span>';
231
- $list .= '<span class=""><input type="checkbox" id="cb-wpglobus_options" name="cb-wpglobus_options" /></span>';
232
- $list .= esc_html( __( 'Remove the WPGlobus settings (not recommended)', 'wpglobus' ) );
233
- $list .= '</li>';
234
- $list .= '</ul>';
235
-
236
- return $list;
237
-
238
- }
239
-
240
- /**
241
- * Ajax action handler
242
- *
243
- * @param string[] $order
244
- */
245
- public static function process_ajax( $order ) {
246
-
247
- self::_set_log_file();
248
-
249
- $_log = false;
250
-
251
- if ( 'true' === $order['log'] ) {
252
- $_log = true;
253
- }
254
-
255
- if ( $order['action'] === 'die' ) {
256
- wp_send_json_success( $order );
257
- }
258
-
259
- if ( $order['action'] === 'wpglobus-reset' ) {
260
-
261
- /**
262
- * SELECT * FROM `wp_options` WHERE `option_name` REGEXP 'wpglobus'
263
- */
264
-
265
- global $wpdb;
266
-
267
- /**
268
- * Make table with prefix
269
- */
270
- $table = $wpdb->prefix . 'options';
271
-
272
- $query = "SELECT `option_id`, `option_name` FROM `$table` WHERE `option_name` REGEXP 'wpglobus'";
273
-
274
- $ids = $wpdb->get_results( $query, ARRAY_A );
275
-
276
- $records = array();
277
- $fields = array();
278
-
279
- foreach ( $ids as $data ) {
280
- foreach ( $data as $field_id => $record_id ) {
281
- if ( 'option_id' === $field_id ) {
282
- $records[] = $record_id;
283
- } else if ( 'option_name' === $field_id ) {
284
- $fields[] = $record_id;
285
- }
286
- }
287
- }
288
-
289
- $result = true;
290
- if ( ! empty( $records ) ) {
291
-
292
- if ( $_log ) {
293
- self::_log( $table, '', $fields, '' );
294
- }
295
-
296
- $set = implode( ',', $records );
297
- $query = "DELETE FROM $table WHERE `option_id` IN ($set)";
298
- $result = $wpdb->query( $query );
299
- }
300
-
301
- if ( false === $result ) {
302
- wp_send_json_error( $order );
303
- }
304
-
305
- wp_send_json_success( $order );
306
-
307
- }
308
-
309
- if ( $order['action'] !== 'clean' ) {
310
- wp_send_json_error( $order );
311
- }
312
-
313
- self::get_table( $order['table'] );
314
-
315
- /**
316
- * Set of examples of sql queries
317
- * @see http://dev.mysql.com/doc/refman/5.7/en/pattern-matching.html
318
- * @see http://dev.mysql.com/doc/refman/5.7/en/regexp.html
319
- */
320
-
321
- /**
322
- * SELECT * FROM `wp_posts` WHERE 1=1 AND `post_status` REGEXP 'publish|draft' AND (
323
- * `post_content` REGEXP '{:[a-z]{2}|[[.[.]]:[a-z]{2}|<!--:[a-z]{2}' OR
324
- * `post_title` REGEXP '{:[a-z]{2}|[[.[.]]:[a-z]{2}|<!--:[a-z]{2}' OR
325
- * `post_excerpt` REGEXP '{:[a-z]{2}|[[.[.]]:[a-z]{2}|<!--:[a-z]{2}' OR
326
- * `post_content_filtered` REGEXP '{:[a-z]{2}|[[.[.]]:[a-z]{2}|<!--:[a-z]{2}' )
327
- */
328
-
329
- /**
330
- * SELECT * FROM `wp_postmeta` WHERE `meta_value` REGEXP '{:[a-z]{2}|[[.[.]]:[a-z]{2}|<!--:[a-z]{2}'
331
- */
332
-
333
- /**
334
- * SELECT * FROM `wp_options` WHERE `option_value` REGEXP '{:[a-z]{2}|[[.[.]]:[a-z]{2}|<!--:[a-z]{2}'
335
- */
336
-
337
- /**
338
- * SELECT * FROM `wp_terms` WHERE `name` REGEXP '{:[a-z]{2}|[[.[.]]:[a-z]{2}|<!--:[a-z]{2}'
339
- */
340
-
341
- /**
342
- * SELECT * FROM `wp_term_taxonomy` WHERE `description` REGEXP '{:[a-z]{2}|[[.[.]]:[a-z]{2}|<!--:[a-z]{2}'
343
- */
344
-
345
- /**
346
- * SELECT * FROM `wp_usermeta` WHERE `meta_value` REGEXP '{:[a-z]{2}|[[.[.]]:[a-z]{2}|<!--:[a-z]{2}'
347
- */
348
-
349
- /**
350
- * SELECT * FROM `wp_woocommerce_attribute_taxonomies` WHERE `attribute_label` REGEXP '{:[a-z]{2}|[[.[.]]:[a-z]{2}|<!--:[a-z]{2}'
351
- */
352
-
353
- /**
354
- * SELECT * FROM `wp_woocommerce_order_items` WHERE `order_item_name` REGEXP '{:[a-z]{2}|[[.[.]]:[a-z]{2}|<!--:[a-z]{2}'
355
- */
356
-
357
- global $wpdb;
358
-
359
- /**
360
- * Make table with prefix
361
- */
362
- $table = $wpdb->prefix . $order['table'];
363
-
364
- /**
365
- * Standard regexp
366
- */
367
- $wpg_regexp = '{:[a-z]{2}|[[.[.]]:[a-z]{2}|<!--:[a-z]{2}';
368
-
369
- /**
370
- * Post status
371
- */
372
- $post_status = '';
373
- if ( ! empty( self::$tables[ $order['table'] ]->post_status ) ) {
374
- /**
375
- * Example: AND `post_status` REGEXP 'publish|draft'
376
- */
377
- $post_status = "AND post_status REGEXP '" . implode( '|', self::$tables[ $order['table'] ]->post_status ) . "' ";
378
- }
379
-
380
- /**
381
- * Set condition
382
- */
383
- $condition = false;
384
- if ( count( self::$tables[ $order['table'] ]->include_fields ) === 0 ) {
385
- /** do nothing */
386
- } else if ( count( self::$tables[ $order['table'] ]->include_fields ) === 1 ) {
387
- /**
388
- * one field
389
- */
390
- $field = self::$tables[ $order['table'] ]->include_fields[0];
391
- $condition = "AND $field REGEXP '$wpg_regexp'";
392
-
393
- } else {
394
- /**
395
- * multiple fields
396
- */
397
- $temp = array();
398
- foreach ( self::$tables[ $order['table'] ]->include_fields as $field ) {
399
- $temp[] = "$field REGEXP '$wpg_regexp'";
400
- }
401
-
402
- $condition = 'AND ( ' . implode( ' OR ', $temp ) . ' )';
403
-
404
- }
405
-
406
- /**
407
- * Set record ID
408
- */
409
- $id = false;
410
- if ( ! empty( self::$tables[ $order['table'] ]->id_field ) ) {
411
- $id = self::$tables[ $order['table'] ]->id_field;
412
- }
413
-
414
- if ( ! $id ) {
415
- wp_send_json_error( $order );
416
- }
417
-
418
- if ( ! $condition ) {
419
- wp_send_json_error( $order );
420
- }
421
-
422
- $query = "SELECT $id FROM $table WHERE 1=1 $post_status $condition";
423
-
424
- $ids = $wpdb->get_results( $query, ARRAY_A );
425
-
426
- $result = true;
427
-
428
- foreach ( $ids as $data ) {
429
-
430
- foreach ( $data as $field_id => $record_id ) {
431
-
432
- /** @noinspection DisconnectedForeachInstructionInspection */
433
- $ifields = implode( ', ', self::$tables[ $order['table'] ]->include_fields );
434
-
435
- $query1 = "SELECT $ifields FROM $table WHERE $field_id = '$record_id'";
436
-
437
- /** @var array $record */
438
- $record = $wpdb->get_results( $query1 );
439
-
440
- $update_fields = array();
441
-
442
- foreach ( self::$tables[ $order['table'] ]->include_fields as $include_field ) {
443
-
444
- $value = $record[0]->$include_field;
445
-
446
- $value = trim( $value );
447
- if ( empty( $value ) ) {
448
- continue;
449
- }
450
-
451
- $serialized = false;
452
- if ( is_serialized( $value ) ) {
453
- $serialized = true;
454
- $value = maybe_unserialize( $value );
455
- }
456
-
457
- $converted = self::convert( $value );
458
-
459
- if ( $_log ) {
460
- self::_log( $table, $record_id, $value, $converted );
461
- }
462
-
463
- if ( $serialized ) {
464
- $converted = maybe_serialize( $converted );
465
- }
466
-
467
- $update_fields[] = $include_field . "='" . $converted . "'";
468
-
469
- } // endforeach;
470
-
471
- if ( ! empty( $update_fields ) ) {
472
- /**
473
- * UPDATE record
474
- */
475
- $updates = implode( ', ', $update_fields );
476
- $upd_query = "UPDATE `$table` SET $updates WHERE `$field_id` = $record_id";
477
-
478
- $res = $wpdb->query( $upd_query );
479
-
480
- if ( false === $res ) {
481
- $result = false;
482
- }
483
-
484
- }
485
-
486
- } // endforeach
487
-
488
- } // endforeach
489
-
490
- if ( false === $result ) {
491
- wp_send_json_error( $order );
492
- }
493
-
494
- wp_send_json_success( $order );
495
-
496
- }
497
-
498
- /**
499
- * Logger
500
- *
501
- * @param string $table
502
- * @param string $id
503
- * @param string $initial
504
- * @param string $converted
505
- */
506
- public static function _log( $table = '', $id = '', $initial = '', $converted = '' ) {
507
- error_log( date( DATE_ATOM ) . "\n", 3, self::$log_file );
508
- error_log( 'TABLE: ' . $table . "\n", 3, self::$log_file );
509
- error_log( 'ID: ' . $id . "\n", 3, self::$log_file );
510
- error_log( "BEFORE: \n" . print_r( $initial, true ) . "\n", 3, self::$log_file );
511
- if ( empty($converted) ) {
512
- error_log( "AFTER: \n(empty)\n", 3, self::$log_file );
513
- } else {
514
- error_log( "AFTER: \n" . print_r( $converted, true ) . "\n", 3, self::$log_file );
515
- }
516
- error_log( '=================' . "\n\n", 3, self::$log_file );
517
- }
518
-
519
- /**
520
- * Enqueue js
521
- *
522
- * @return void
523
- */
524
- public static function action__admin_print_scripts() {
525
-
526
- $src = WPGlobus::$PLUGIN_DIR_URL . 'includes/js/wpglobus-clean' . WPGlobus::SCRIPT_SUFFIX() . '.js';
527
-
528
- $result_icons['success'] = WPGlobus::$PLUGIN_DIR_URL . 'includes/css/images/success.png';
529
- $result_icons['error'] = WPGlobus::$PLUGIN_DIR_URL . 'includes/css/images/error.png';
530
-
531
- wp_enqueue_script(
532
- 'wpglobus-clean',
533
- $src,
534
- array( 'jquery' ),
535
- WPGLOBUS_VERSION,
536
- true
537
- );
538
-
539
- wp_localize_script(
540
- 'wpglobus-clean',
541
- 'WPGlobusClean',
542
- array(
543
- 'version' => WPGLOBUS_VERSION,
544
- 'icons' => $result_icons,
545
- 'data' => array_merge( self::$tables, array( 'wpglobus_options' => new stdClass() ) )
546
- )
547
- );
548
-
549
-
550
- }
551
-
552
- /**
553
- * Output the clean screen.
554
- *
555
- * @return void
556
- */
557
- public static function screen() {
558
-
559
- /**
560
- * For Google Analytics
561
- */
562
- $ga_campaign = '?utm_source=wpglobus-admin-clean&utm_medium=link&utm_campaign=clean-up-tool';
563
-
564
- $url_wpglobus_site = WPGlobus_Utils::url_wpglobus_site();
565
- // $url_wpglobus_site_home = $url_wpglobus_site . $ga_campaign;
566
- $url_wpglobus_site_contact = $url_wpglobus_site . 'pg/contact-us/' . $ga_campaign;
567
- $url_wpglobus_site_quick_start = $url_wpglobus_site . 'quick-start/' . $ga_campaign;
568
- // $url_wpglobus_site_faq = $url_wpglobus_site . 'faq/' . $ga_campaign;
569
- // $url_wpglobus_site_pro_support = $url_wpglobus_site . 'professional-support/' . $ga_campaign;
570
-
571
- $url_wpglobus_logo = WPGlobus::$PLUGIN_DIR_URL . 'includes/css/images/wpglobus-logo-180x180.png';
572
-
573
- ?>
574
- <style>
575
- .wp-badge.wpglobus-badge {
576
- background: #ffffff url(<?php echo esc_url( $url_wpglobus_logo ); ?>) no-repeat;
577
- background-size: contain;
578
- }
579
- </style>
580
- <div class="wrap about-wrap wpglobus-about-wrap clean-wrap wpglobus-clean">
581
- <h1 class="wpglobus"><span class="wpglobus-wp">WP</span>Globus
582
- <span class="wpglobus-version"><?php echo esc_html( WPGLOBUS_VERSION ); ?></span>
583
- </h1>
584
-
585
- <div class="wpglobus-motto"><?php esc_html_e( 'Multilingual Everything!', 'wpglobus' ); ?></div>
586
-
587
- <div class="about-text">
588
- <?php esc_html_e( 'WPGlobus is a family of WordPress plugins assisting you in making multilingual WordPress blogs and sites.', 'wpglobus' ); ?>
589
- </div>
590
-
591
- <div class="wp-badge wpglobus-badge"></div>
592
-
593
- <h2 class="nav-tab-wrapper">
594
- <a href="#" class="nav-tab nav-tab-active">
595
- <?php esc_html_e( 'Clean-up Tool', 'wpglobus' ); ?>
596
- </a>
597
- <a href="<?php echo esc_url( $url_wpglobus_site_quick_start ); ?>"
598
- target="_blank"
599
- class="nav-tab">
600
- <?php esc_html_e( 'Guide', 'wpglobus' ); ?>
601
- </a>
602
- <a href="<?php echo esc_url( WPGlobus_Admin_Page::url_settings() ); ?>" class="nav-tab">
603
- <?php esc_html_e( 'Settings' ); ?>
604
- </a>
605
- <a href="<?php echo esc_url( WPGlobus_Admin_Page::url_addons() ); ?>" class="nav-tab">
606
- <?php esc_html_e( 'Add-ons', 'wpglobus' ); ?>
607
- </a>
608
- <a href="<?php echo esc_url( $url_wpglobus_site_contact ); ?>" class="nav-tab">
609
- <?php esc_html_e( 'Support', 'wpglobus' ); ?>
610
- </a>
611
- </h2>
612
-
613
- <div style="color: white; background-color: red; padding: .5em; margin-top: 1em;">
614
- <?php esc_html_e( 'WARNING: this operation is non-reversible. It is strongly recommended that you backup your database before proceeding.', 'wpglobus' ); ?>
615
- </div>
616
-
617
- <div style="padding: .5em">
618
- <p><strong>
619
- 1. <?php esc_html_e( 'This tool should be used only if you plan to completely uninstall WPGlobus. By running it, you will remove ALL translations you have entered to your post, pages, etc., keeping only the MAIN language texts. Please make sure that all entries have some content in the main language. Otherwise, you might end up with empty titles, no content, no excerpts, blank comments and so on.', 'wpglobus' ); ?>
620
- </strong></p>
621
- <p><strong>
622
- 2. <?php esc_html_e( 'Make sure that your active theme does not have any code related to WPGlobus. Such code could be added by you or by a 3rd party developer. If that code runs without first verifying that WPGlobus is active, WordPress may die with a fatal error.', 'wpglobus' ); ?>
623
- </strong></p>
624
- </div>
625
-
626
- <div style="color:red; background-color: white; padding: .5em">
627
- <?php
628
- $_message = esc_html( sprintf(
629
- // translators: %1$s - language name, %2$s - language code. Do not remove.
630
- __( 'The main language is currently set to %1$s (%2$s). ALL TEXTS THAT ARE NOT IN %1$s WILL BE DELETED! To change the main language, please go to {{settings}}.', 'wpglobus' ),
631
- WPGlobus::Config()->en_language_name[ WPGlobus::Config()->default_language ],
632
- WPGlobus::Config()->default_language )
633
- );
634
- $_settings_link = '<a href="'.esc_url( WPGlobus_Admin_Page::url_settings('languages') ).'">' . esc_html( 'Settings', 'wpglobus' ) . '</a>';
635
- echo str_replace( '{{settings}}', $_settings_link, $_message );
636
- ?>
637
- </div>
638
-
639
- <hr />
640
- <h3 id="about-to-clean">
641
- <?php esc_html_e( 'You are about to clean the content of the following database tables:', 'wpglobus' ); ?>
642
- </h3>
643
-
644
- <?php echo self::get_table_list(); // WPCS: XSS ok. ?>
645
-
646
- <hr />
647
-
648
- <h3>
649
- <?php esc_html_e( 'The operations log', 'wpglobus' ); ?>
650
- </h3>
651
- <div>
652
- <?php esc_html_e( 'We are going to write a detailed log of all the database changes performed. It should help in the case you need to restore something important. The log will be written to the file:', 'wpglobus' ); ?>
653
- </div>
654
- <br />
655
- <code>
656
- <?php echo self::$log_file; // WPCS: XSS ok. ?>
657
- </code>
658
- <br />
659
- <br />
660
- <label>
661
- <input type="checkbox" name="wpglobus-clean-log" id="wpglobus-clean-log" checked="checked" />
662
- <?php esc_html_e( 'Uncheck if you do not want to write the operations log (we recommend to keep it checked)', 'wpglobus' ); ?>
663
-
664
- </label>
665
- <hr />
666
- <h3>
667
- <?php esc_html_e( 'You have been warned...', 'wpglobus' ); ?>
668
- </h3>
669
- <?php esc_html_e( 'Please confirm by checking the box below:', 'wpglobus' ); ?>
670
- <div style="color:red; background-color: white; padding: .5em; margin: 1em 0;">
671
- <?php esc_html_e( 'I have read and understood everything written on this page. I am aware that by using this tool I may loose some content of my website. I have made a database backup and know how to restore it if necessary. I am fully responsible for the results.', 'wpglobus' ); ?>
672
- </div>
673
-
674
- <label><input type="checkbox" name="wpglobus-clean-activate" id="wpglobus-clean-activate" /><?php esc_html_e( 'YES, I CONFIRM', 'wpglobus' ); ?>
675
- </label>
676
- <div class="return-to-dashboard">
677
- <a id="wpglobus-clean-button" class="button button-primary hidden" href="#about-to-clean">
678
- <?php esc_html_e( 'Process with the Clean-up', 'wpglobus' ); ?>
679
- </a>
680
- </div>
681
-
682
- </div>
683
-
684
- <?php
685
- }
686
-
687
- /**
688
- * Convert string to text with default language
689
- *
690
- * @param mixed $data
691
- *
692
- * @return mixed $data
693
- */
694
- public static function convert( $data ) {
695
-
696
- if ( empty( $data ) ) {
697
- return '';
698
- }
699
-
700
- if ( is_null( $data ) ) {
701
- return $data;
702
- }
703
-
704
- if ( is_bool( $data ) ) {
705
- return $data;
706
- }
707
-
708
- if ( is_float( $data ) ) {
709
- return $data;
710
- }
711
-
712
- if ( is_int( $data ) ) {
713
- return $data;
714
- }
715
-
716
- if ( is_string( $data ) ) {
717
- $data = WPGlobus_Core::text_filter( $data, WPGlobus::Config()->default_language, WPGlobus::RETURN_EMPTY );
718
-
719
- /**
720
- * Set double apostrophe for mySQL UPDATE
721
- */
722
- return str_replace( "'", "''", $data );
723
- }
724
-
725
- foreach ( $data as $key => $value ) {
726
- if ( is_array( $data ) ) {
727
- /** @noinspection AlterInForeachInspection */
728
- $data[ $key ] = self::convert( $value );
729
- } else if ( is_object( $data ) ) {
730
- $data->$key = self::convert( $value );
731
- }
732
- }
733
-
734
- return $data;
735
-
736
- }
737
-
738
-
739
- } //class
740
-
741
- endif;
742
-
743
- # --- EOF
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/admin/class-wpglobus-customize-options.php DELETED
@@ -1,1588 +0,0 @@
1
- <?php
2
- /**
3
- * File: class-wpglobus-customize-options.php
4
- *
5
- * WPGlobus_Customize_Options
6
- *
7
- * @package WPGlobus\Admin\Customizer
8
- * @since 1.4.6
9
- *
10
- * @see http://www.narga.net/comprehensive-guide-wordpress-theme-options-with-customization-api/
11
- * @see https://developer.wordpress.org/themes/advanced-topics/customizer-api/#top
12
- * @see https://codex.wordpress.org/Theme_Customization_API
13
- * @see #customize-controls
14
- */
15
-
16
- /**
17
- * wpglobus_option
18
- * wpglobus_option_flags
19
- * wpglobus_option_locale
20
- * wpglobus_option_en_language_names
21
- * wpglobus_option_language_names
22
- * wpglobus_option_post_meta_settings
23
- */
24
-
25
- /**
26
- * WPGlobus option Customizer setting @see $wp_customize->add_setting
27
- *
28
- * wpglobus_option[last_tab] => are not used in customizer
29
- *
30
- * wpglobus_option[enabled_languages] => wpglobus_customize_enabled_languages
31
- *
32
- * wpglobus_option[more_languages] => are not used in customizer
33
- *
34
- * wpglobus_option[show_flag_name] => wpglobus_customize_language_selector_mode
35
- *
36
- * wpglobus_option[use_nav_menu] => wpglobus_customize_language_selector_menu
37
- *
38
- * wpglobus_option[selector_wp_list_pages]
39
- * => Array
40
- * (
41
- * [show_selector] => 1 => wpglobus_customize_selector_wp_list_pages
42
- * )
43
- *
44
- * wpglobus_option[css_editor] => wpglobus_customize_css_editor
45
- *
46
- */
47
- if ( ! class_exists( 'WPGlobus_Customize_Options' ) ) :
48
-
49
-
50
- if ( ! class_exists( 'WP_Customize_Control' ) ) {
51
- require_once( ABSPATH . WPINC . '/class-wp-customize-control.php' );
52
- }
53
-
54
- /**
55
- * Class WPGlobusTextBox.
56
- * Adds textbox support to the theme customizer.
57
- *
58
- * @see wp-includes\class-wp-customize-control.php
59
- */
60
- class WPGlobusTextBox extends WP_Customize_Control {
61
-
62
- public $type = 'textbox';
63
-
64
- public $content = '';
65
-
66
- /**
67
- * Constructor.
68
- *
69
- * @param WP_Customize_Manager $manager Customizer bootstrap instance.
70
- * @param string $id Control ID.
71
- * @param array $args Optional. Arguments to override class property defaults.
72
- */
73
- public function __construct( $manager, $id, $args = array() ) {
74
- $this->content = empty( $args['content'] ) ? '' : $args['content'];
75
- $this->statuses = array( '' => esc_html__( 'Default', 'wpglobus' ) );
76
- parent::__construct( $manager, $id, $args );
77
- }
78
-
79
- public function render_content() {
80
-
81
- echo $this->content;
82
-
83
- }
84
-
85
- }
86
-
87
- /**
88
- * Adds checkbox with title support to the theme customizer.
89
- *
90
- * @see wp-includes\class-wp-customize-control.php
91
- */
92
- class WPGlobusCheckBox extends WP_Customize_Control {
93
-
94
- public $type = 'wpglobus_checkbox';
95
-
96
- public $title = '';
97
-
98
- public function __construct( $manager, $id, $args = array() ) {
99
-
100
- $this->title = empty( $args['title'] ) ? '' : $args['title'];
101
-
102
- $this->statuses = array( '' => esc_html__( 'Default', 'wpglobus' ) );
103
-
104
- parent::__construct( $manager, $id, $args );
105
-
106
- }
107
-
108
- public function render_content() {
109
-
110
- ?>
111
-
112
- <label>
113
- <?php if ( ! empty( $this->title ) ) : ?>
114
- <span class="customize-control-title"><?php echo esc_html( $this->title ); ?></span>
115
- <?php endif; ?>
116
- <div style="display:flex;">
117
- <div style="flex:1">
118
- <input type="checkbox" value="<?php echo esc_attr( $this->value() ); ?>" <?php $this->link(); checked( $this->value() ); ?> />
119
- </div>
120
- <div style="flex:8">
121
- <?php echo esc_html( $this->label ); ?>
122
- </div>
123
- </div>
124
- <?php if ( ! empty( $this->description ) ) : ?>
125
- <span class="description customize-control-description"><?php echo esc_html($this->description); ?></span>
126
- <?php endif; ?>
127
- </label> <?php
128
-
129
- }
130
- }
131
-
132
- /**
133
- * Adds link support to the theme customizer.
134
- *
135
- * @see wp-includes\class-wp-customize-control.php
136
- */
137
- class WPGlobusLink extends WP_Customize_Control {
138
-
139
- public $type = 'wpglobus_link';
140
-
141
- public $args = array();
142
-
143
- public function __construct( $manager, $id, $args = array() ) {
144
-
145
- $this->args = $args;
146
-
147
- $this->statuses = array( '' => esc_html__( 'Default', 'wpglobus' ) );
148
-
149
- parent::__construct( $manager, $id, $args );
150
-
151
- }
152
-
153
- public function render_content() {
154
-
155
- ?>
156
-
157
- <label>
158
- <?php if ( ! empty( $this->args['title'] ) ) : ?>
159
- <span class="customize-control-title"><?php echo esc_html( $this->args['title'] ); ?></span>
160
- <?php endif; ?>
161
- <a href="<?php echo $this->args['href']; // WPCS: XSS ok. ?>" target="_blank"><?php echo $this->args['text']; // WPCS: XSS ok. ?></a>
162
- <?php if ( ! empty( $this->description ) ) : ?>
163
- <span class="description customize-control-description"><?php echo esc_html($this->description); ?></span>
164
- <?php endif; ?>
165
- </label> <?php
166
-
167
- }
168
- }
169
-
170
- /**
171
- * Adds CheckBoxSet support to the theme customizer.
172
- *
173
- * @see wp-includes\class-wp-customize-control.php
174
- */
175
- class WPGlobusCheckBoxSet extends WP_Customize_Control {
176
-
177
- public $type = 'checkbox_set';
178
-
179
- public $skeleton = '';
180
-
181
- public $args = array();
182
-
183
- public function __construct( $manager, $id, $args = array() ) {
184
- $this->args = $args;
185
- $this->statuses = array( '' => esc_html__( 'Default', 'wpglobus' ) );
186
-
187
- $this->skeleton =
188
- '<a href="{{edit-link}}" target="_blank"><span style="cursor:pointer;">Edit</span></a>&nbsp;' .
189
- '<img style="cursor:move;" {{flag}} />&nbsp;' .
190
- '<input name="wpglobus_item_{{name}}" id="wpglobus_item_{{id}}" type="checkbox" checked="{{checked}}" ' .
191
- ' class="{{class}}" ' .
192
- ' data-order="{{order}}" data-language="{{language}}" disabled="{{disabled}}" />' .
193
- '<span style="cursor:move;">{{item}}</span>';
194
-
195
- parent::__construct( $manager, $id, $args );
196
-
197
- }
198
-
199
- public function render_content() { ?>
200
-
201
- <label>
202
- <?php if ( ! empty( $this->label ) ) : ?>
203
- <span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
204
- <?php endif;
205
- if ( ! empty( $this->description ) ) : ?>
206
- <span class="description customize-control-description"><?php echo esc_html($this->description); ?></span>
207
- <?php endif;
208
-
209
- $new_item = str_replace( '{{class}}', 'wpglobus-checkbox ' . $this->args['checkbox_class'], $this->skeleton );
210
- echo '<div style="display:none;" id="wpglobus-item-skeleton">' . $new_item . '</div>'; // WPCS: XSS ok.
211
-
212
- echo '<ul id="wpglobus-sortable" style="margin-top:10px;margin-left:20px;">';
213
-
214
- foreach ( $this->args['items'] as $order => $item ) {
215
-
216
- $disabled = $order == 0 ? ' disabled="disabled" ' : '';
217
-
218
- $li_item = str_replace(
219
- '{{flag}}',
220
- 'src="' . WPGlobus::Config()->flags_url . WPGlobus::Config()->flag[ $item ] . '"',
221
- $this->skeleton
222
- );
223
- $li_item = str_replace( '{{name}}', $item, $li_item );
224
- $li_item = str_replace( '{{id}}', $item, $li_item );
225
- $li_item = str_replace( 'checked="{{checked}}"', 'checked="checked"', $li_item );
226
- $li_item = str_replace( 'disabled="{{disabled}}"', $disabled, $li_item );
227
- $li_item = str_replace( '{{class}}', 'wpglobus-checkbox ' . $this->args['checkbox_class'], $li_item );
228
- $li_item = str_replace( '{{item}}', WPGlobus::Config()->en_language_name[ $item ] . ' (' . $item . ')', $li_item );
229
- $li_item = str_replace( '{{order}}', $order, $li_item );
230
- $li_item = str_replace( '{{language}}', $item, $li_item );
231
- $li_item = str_replace(
232
- '{{edit-link}}',
233
- admin_url() . 'admin.php?page=' . WPGlobus::LANGUAGE_EDIT_PAGE . '&action=edit&lang=' . $item . '"', $li_item
234
- );
235
-
236
- echo '<li>' . $li_item . '</li>'; // WPCS: XSS ok.
237
-
238
- }
239
-
240
- echo '</ul>'; ?>
241
-
242
- </label> <hr /> <?php
243
-
244
- }
245
-
246
- }
247
-
248
- /**
249
- * Adds Fields Settings Control support to the theme customizer.
250
- *
251
- * @see wp-includes\class-wp-customize-control.php
252
- */
253
- class WPGlobusFieldsSettingsControl extends WP_Customize_Control {
254
-
255
- public $type = 'wpglobus_fields_settings_control';
256
-
257
- public $args = array();
258
-
259
- public $section_template = '';
260
-
261
- public function __construct( $manager, $id, $args = array() ) {
262
-
263
- $this->args = $args;
264
-
265
- $this->section_template = "<div id='wpglobus-settings-{{section}}' style='border-bottom:1px solid black;margin-bottom:5px;padding:5px;' class='items-box' data-section='{{section}}'>";
266
- $this->section_template .= esc_html__( 'Section', 'wpglobus' ) . ": <a href='#' onclick='wp.customize.section({{section_id}}).expand();'><b>{{section_title}}</b></a>";
267
- $this->section_template .= "<div class='items' style='padding-top:10px;'>{{items}}</div>";
268
- $this->section_template .= "</div>";
269
-
270
- parent::__construct( $manager, $id, $args );
271
-
272
- }
273
-
274
- public function render_content() {
275
- ?>
276
- <div class="wpglobus-fields_settings_control_box" data-section-template="<?php echo $this->section_template; // WPCS: XSS ok. ?>">
277
- <?php if ( $this->args['start_section'] ) : ?>
278
- <div style="border-bottom:1px solid black;margin: 0 0 5px;padding-left:5px;">
279
- <a href="#" onclick="jQuery('.wpglobus-fields_settings_control_box .items-box' ).css('display','block');"><b><?php esc_html_e( 'Show all sections', 'wpglobus' ); ?></b></a>
280
- </div>
281
- <input type="submit" style="float:right;" name="<?php echo WPGlobus_Customize_Options::$controls_save_button; // WPCS: XSS ok. ?>" id="<?php echo WPGlobus_Customize_Options::$controls_save_button; // WPCS: XSS ok. ?>" class="button button-primary save" value="<?php esc_html_e( 'Save &amp; Reload', 'wpglobus' ); ?>">
282
- <?php else: ?>
283
- <div>
284
- <?php if ( ! empty( $this->args['message'] ) ) {
285
- echo $this->args['message']; // WPCS: XSS ok.
286
- } ?>
287
- </div>
288
- <?php endif; ?>
289
- </div> <!-- .wpglobus-fields_settings_control_box --> <?php
290
- }
291
- }
292
-
293
- /**
294
- * Class WPGlobus_Customize_Options
295
- */
296
- class WPGlobus_Customize_Options {
297
-
298
- /**
299
- * Array of sections
300
- */
301
- public static $sections = array();
302
-
303
- /**
304
- * Array of settings
305
- */
306
- public static $settings = array();
307
-
308
- /**
309
- * Set transient key
310
- */
311
- public static $enabled_post_types_key = 'wpglobus_customize_enabled_post_types';
312
-
313
- /**
314
- * Set option key for customizer
315
- */
316
- public static $options_key = 'wpglobus_customize_options';
317
-
318
- /**
319
- * Save button ID
320
- */
321
- public static $controls_save_button = 'wpglobus-user-controls-save';
322
-
323
- /**
324
- * Current theme.
325
- *
326
- * @var WP_Theme
327
- */
328
- public static $theme;
329
-
330
- /**
331
- * Current theme name.
332
- *
333
- * @var string
334
- */
335
- public static $theme_name = '';
336
-
337
- /**
338
- * Array of disabled themes.
339
- * @var string[]
340
- */
341
- public static $disabled_themes = array();
342
-
343
- public static function controller() {
344
-
345
- self::$theme = wp_get_theme();
346
- self::$theme_name = self::get_theme( 'name' );
347
-
348
- self::$disabled_themes = array(
349
- 'customizr',
350
- 'customizr pro'
351
- );
352
-
353
- /**
354
- * @since 1.7.7
355
- * Don't standard loading of the option 'theme_mods_experon'. Theme uses redux.
356
- * Don't standard behavior in customizer.
357
- * @see https://wordpress.org/themes/experon/
358
- */
359
- self::$disabled_themes[] = 'experon';
360
-
361
- /**
362
- * @since 2.3.12
363
- * Don't standard behavior with links in Appearance section (requires installing an additional module).
364
- * @see https://gwangi-theme.com/
365
- */
366
- self::$disabled_themes[] = 'gwangi';
367
-
368
- /**
369
- * @since 2.5.21
370
- * Is not correct saving the `Items Content` fields in some site configuration.
371
- * @see https://wordpress.org/themes/newyork-city/
372
- */
373
- self::$disabled_themes[] = 'newyork city';
374
-
375
- add_action( 'wp_loaded', array( __CLASS__, 'init' ) );
376
-
377
- /**
378
- * @see \WP_Customize_Manager::wp_loaded
379
- * It calls the `customize_register` action first,
380
- * and then - the `customize_preview_init` action
381
- */
382
- add_action( 'customize_register', array(
383
- 'WPGlobus_Customize_Options',
384
- 'action__customize_register'
385
- ) );
386
-
387
- /**
388
- * @since 1.6.0
389
- */
390
- add_action( 'customize_register', array(
391
- 'WPGlobus_Customize_Options',
392
- 'action__customize_fields_settings'
393
- ) );
394
-
395
- add_action( 'customize_preview_init', array(
396
- 'WPGlobus_Customize_Options',
397
- 'action__customize_preview_init'
398
- ), 11 );
399
-
400
- /**
401
- * This is called by wp-admin/customize.php
402
- */
403
-
404
- add_action( 'customize_controls_enqueue_scripts', array(
405
- 'WPGlobus_Customize_Options',
406
- 'action__customize_controls_enqueue_scripts'
407
- ), 1010 );
408
-
409
- add_action( 'wp_ajax_' . __CLASS__ . '_process_ajax', array(
410
- 'WPGlobus_Customize_Options',
411
- 'action__process_ajax'
412
- ) );
413
-
414
- /**
415
- * @since 1.9.8
416
- */
417
- add_filter( 'wpglobus_customize_disabled_setting_mask', array(
418
- __CLASS__,
419
- 'filter__disabled_setting_mask'
420
- ) );
421
-
422
- }
423
-
424
- /**
425
- * Delayed processes.
426
- * @since 1.6.0
427
- */
428
- public static function init() {
429
-
430
- /**
431
- * Hook to modify the `$disabled_themes` array.
432
- *
433
- * @param string[] self ::$disabled_themes
434
- * Enter the lowercase theme name (not slug, no dashes).
435
- * For example, to disable the "Parallax One" theme,
436
- * enter 'parallax one'.
437
- *
438
- * @see second param.
439
- *
440
- * @param string self::$theme_name Name of current theme.
441
- * @param WP_Theme Object self::$theme Current theme.
442
- */
443
- self::$disabled_themes = apply_filters( 'wpglobus_customizer_disabled_themes', self::$disabled_themes, self::$theme_name, self::$theme );
444
- }
445
-
446
- /**
447
- * Ajax handler.
448
- */
449
- public static function action__process_ajax() {
450
-
451
- $result = true;
452
- $ajax_return = array();
453
-
454
- $post_order = isset( $_POST['order'] ) ? $_POST['order'] : null; // WPCS: input var ok, sanitization ok.
455
-
456
- $order = array();
457
- if ( $post_order ) {
458
- $order['action'] = sanitize_text_field( $post_order['action'] );
459
- $order['options'] = isset($post_order['options']) ? $post_order['options'] : array();
460
- $order['controls'] = isset($post_order['controls']) ? $post_order['controls'] : array();
461
- }
462
-
463
- switch ( $order['action'] ) {
464
- case 'wpglobus_customize_save':
465
- /**
466
- * Options array.
467
- *
468
- * @var array
469
- */
470
- $options = get_option( WPGlobus::Config()->option );
471
-
472
- foreach ( $order['options'] as $key => $value ) {
473
-
474
- switch ( $key ) :
475
- case 'show_selector':
476
- $options['selector_wp_list_pages'][ $key ] = $value;
477
- break;
478
- case 'redirect_by_language':
479
- // @todo check this option which do we really need?
480
- $options['browser_redirect'][ $key ] = $value;
481
- $options[ $key ] = $value;
482
- break;
483
- case 'use_nav_menu':
484
- if ( '0' == $value ) {
485
- $value = '';
486
- } else {
487
- $value = sanitize_text_field( $value );
488
- }
489
- $options[ $key ] = $value;
490
- break;
491
- case 'js_editor':
492
- $value = trim($value);
493
- if ( ! empty( $value ) ) {
494
- $value = str_replace( '\"', '"', $value );
495
- $value = str_replace( "\'", "'", $value );
496
- $value = esc_html( $value );
497
- }
498
- $options[ $key ] = $value;
499
- break;
500
- default:
501
- $options[ $key ] = $value;
502
- endswitch;
503
-
504
- }
505
-
506
- update_option( WPGlobus::Config()->option, $options );
507
- break;
508
-
509
- case 'cb-controls-save':
510
- $options = get_option( self::$options_key );
511
-
512
- if ( empty( $order['controls'] ) ) {
513
- if ( ! empty( $options['customize_user_control'][ self::$theme_name ] ) ) {
514
- unset( $options['customize_user_control'][ self::$theme_name ] );
515
- }
516
- } else {
517
-
518
- $cntrls = array();
519
- foreach ( $order['controls'] as $cntr => $status ) {
520
- $cntr = str_replace( '{{', '[', $cntr );
521
- $cntr = str_replace( '}}', ']', $cntr );
522
-
523
- $cntrls[ $cntr ] = $status;
524
- }
525
-
526
- $options['customize_user_control'][ self::$theme_name ] = $cntrls;
527
- }
528
-
529
- if ( empty( $options['customize_user_control'] ) ) {
530
- unset( $options['customize_user_control'] );
531
- }
532
-
533
- if ( empty( $options ) ) {
534
- delete_option( self::$options_key );
535
- } else {
536
- $result = update_option( self::$options_key, $options, false );
537
-
538
- }
539
-
540
- break;
541
- }
542
-
543
- if ( false === $result ) {
544
- wp_send_json_error( $ajax_return );
545
- }
546
-
547
- wp_send_json_success( $ajax_return );
548
- }
549
-
550
- /**
551
- * Section for message about unsupported theme.
552
- *
553
- * @param WP_Customize_Manager $wp_customize
554
- * @param WP_Theme $theme
555
- */
556
- public static function sorry_section( $wp_customize, $theme ) {
557
-
558
- /**
559
- * Sorry section
560
- */
561
- $wp_customize->add_section( 'wpglobus_sorry_section', array(
562
- 'title' => esc_html__( 'WPGlobus', 'wpglobus' ),
563
- 'priority' => 0,
564
- 'panel' => 'wpglobus_settings_panel'
565
- ) );
566
-
567
- $wp_customize->add_setting( 'sorry_message', array(
568
- 'type' => 'option',
569
- 'capability' => 'manage_options',
570
- 'transport' => 'postMessage'
571
- ) );
572
- $wp_customize->add_control( new WPGlobusTextBox( $wp_customize,
573
- 'sorry_message', array(
574
- 'section' => 'wpglobus_sorry_section',
575
- 'settings' => 'sorry_message',
576
- 'priority' => 0,
577
- 'content' => self::get_content( 'sorry_message', $theme )
578
-
579
- )
580
- ) );
581
-
582
- }
583
-
584
- /**
585
- * Callback for register fields settings section.
586
- *
587
- * @since 1.6.0
588
- *
589
- * @param WP_Customize_Manager $wp_customize
590
- */
591
- public static function action__customize_fields_settings( WP_Customize_Manager $wp_customize ) {
592
-
593
- if ( ! self::is_theme_enabled() ) {
594
- return;
595
- }
596
-
597
- /**
598
- * SECTION: fields settings
599
- */
600
- if ( 1 ) {
601
-
602
- /**
603
- * @since WP 4.5
604
- * @see https://make.wordpress.org/core/2016/03/10/customizer-improvements-in-4-5/
605
- */
606
-
607
- global $wp_version;
608
-
609
- $start_section = true;
610
- $message = '';
611
- if ( version_compare( $wp_version, '4.5-RC1', '<' ) ) :
612
- $start_section = false;
613
- $message = esc_html__( 'You need to update WordPress to 4.5 or later to get Fields Settings section', 'wpglobus' );
614
- endif;
615
-
616
- self::$sections['wpglobus_fields_settings_section'] = 'wpglobus_fields_settings_section';
617
-
618
- /**
619
- * CSS tweak for the `description` field.
620
- * @since 2.5.21
621
- */
622
- $wp_customize->add_section( self::$sections['wpglobus_fields_settings_section'], array(
623
- 'title' => esc_html__( 'Fields Settings', 'wpglobus' ),
624
- 'priority' => 500,
625
- 'panel' => 'wpglobus_settings_panel',
626
- 'description' => '<div class="inner" style="background-color:#00669b;padding:5px 10px;border-radius:5px;font-size:14px;color:#fff;border:3px solid #00669b;">' .
627
- self::get_content( 'settings_section_help' ) .
628
- '</div>'
629
- ) );
630
-
631
- /** setting */
632
- $wp_customize->add_setting( 'wpglobus_fields_settings_setting', array(
633
- 'type' => 'option',
634
- 'capability' => 'manage_options',
635
- 'transport' => 'postMessage'
636
- ) );
637
-
638
- /** control */
639
- $wp_customize->add_control( new WPGlobusFieldsSettingsControl( $wp_customize,
640
- self::$sections['wpglobus_fields_settings_section'], array(
641
- 'section' => self::$sections['wpglobus_fields_settings_section'],
642
- 'settings' => 'wpglobus_fields_settings_setting',
643
- 'priority' => 0,
644
- 'start_section' => $start_section,
645
- 'message' => $message
646
-
647
- )
648
- ) );
649
-
650
- }
651
-
652
- }
653
-
654
- /**
655
- * Callback for customize_register.
656
- *
657
- * @param WP_Customize_Manager $wp_customize
658
- */
659
- public static function action__customize_register( WP_Customize_Manager $wp_customize ) {
660
-
661
- /**
662
- * WPGlobus panel
663
- */
664
- $wp_customize->add_panel( 'wpglobus_settings_panel', array(
665
- 'priority' => 1010,
666
- 'capability' => 'edit_theme_options',
667
- 'theme_supports' => '',
668
- 'title' => esc_html__( 'WPGlobus Settings', 'wpglobus' ),
669
- 'description' => '<div style="background-color:#eee;padding:10px 5px;">' .
670
- self::get_content( 'welcome_message' ) .
671
- '</div>' . self::get_content( 'deactivate_message' ),
672
- ) );
673
-
674
- if ( ! self::is_theme_enabled() ) {
675
-
676
- self::sorry_section( $wp_customize, self::$theme );
677
-
678
- return;
679
-
680
- }
681
-
682
- /**
683
- * Updating options for customizer accordingly with WPGlobus::Config().
684
- */
685
- /** wpglobus_customize_language_selector_mode <=> wpglobus_option[show_flag_name] */
686
- update_option( 'wpglobus_customize_language_selector_mode', WPGlobus::Config()->show_flag_name );
687
-
688
- /** */
689
- if ( empty( WPGlobus::Config()->nav_menu ) ) {
690
- /**
691
- * Menu item '--- select navigation menu ---' has value 0.
692
- * It is used when 'Language Selector Menu' setting is not selected.
693
- */
694
- update_option( 'wpglobus_customize_language_selector_menu', '0' );
695
- } else {
696
- update_option( 'wpglobus_customize_language_selector_menu', WPGlobus::Config()->nav_menu );
697
- }
698
-
699
- /** wpglobus_customize_selector_wp_list_pages <=> wpglobus_option[selector_wp_list_pages][show_selector] */
700
- update_option( 'wpglobus_customize_selector_wp_list_pages', WPGlobus::Config()->selector_wp_list_pages );
701
-
702
- /** wpglobus_customize_css_editor <=> wpglobus_option[css_editor] */
703
- update_option( 'wpglobus_customize_css_editor', WPGlobus::Config()->css_editor );
704
-
705
- /** wpglobus_customize_redirect_by_language <=> wpglobus_option[browser_redirect][redirect_by_language] */
706
- if ( empty( WPGlobus::Config()->browser_redirect['redirect_by_language'] ) || (int) WPGlobus::Config()->browser_redirect['redirect_by_language'] == 0 ) {
707
- update_option( 'wpglobus_customize_redirect_by_language', '' );
708
- } else {
709
- update_option( 'wpglobus_customize_redirect_by_language', WPGlobus::Config()->browser_redirect['redirect_by_language'] );
710
- }
711
-
712
- /** wpglobus_customize_js_editor <=> wpglobus_option[js_editor] */
713
- if ( empty( WPGlobus::Config()->js_editor ) ) {
714
- update_option( 'wpglobus_customize_js_editor', '' );
715
- } else {
716
- update_option( 'wpglobus_customize_js_editor', WPGlobus::Config()->js_editor );
717
- }
718
-
719
-
720
- /** end updating options */
721
-
722
- /**
723
- * Init section priority.
724
- */
725
- $section_priority = 0;
726
-
727
- /**
728
- * SECTION: Help.
729
- */
730
- if ( 0 ) {
731
-
732
- $section_priority = $section_priority + 0;
733
-
734
- self::$sections['wpglobus_help_section'] = 'wpglobus_help_section';
735
- $wp_customize->add_section( self::$sections['wpglobus_help_section'], array(
736
- 'title' => esc_html__( 'Help', 'wpglobus' ),
737
- 'priority' => $section_priority,
738
- 'panel' => 'wpglobus_settings_panel',
739
- ) );
740
-
741
- $wp_customize->add_control( 'wpglobus_customize_add_onsZZZ', array(
742
- 'section' => self::$sections['wpglobus_help_section'],
743
- 'settings' => array(),
744
- 'type' => 'button',
745
- )
746
- );
747
- }
748
- /** end SECTION: Help */
749
-
750
- /**
751
- * SECTION: Language.
752
- */
753
- if ( 1 ) {
754
-
755
- $section_priority = $section_priority + 10;
756
-
757
- $wp_customize->add_section( 'wpglobus_languages_section', array(
758
- 'title' => esc_html__( 'Languages', 'wpglobus' ),
759
- 'priority' => $section_priority,
760
- 'panel' => 'wpglobus_settings_panel'
761
- ) );
762
- self::$sections['wpglobus_languages_section'] = 'wpglobus_languages_section';
763
-
764
- /**
765
- * Setting: Enabled languages.
766
- */
767
- $wp_customize->add_setting( 'wpglobus_customize_enabled_languages', array(
768
- 'type' => 'option',
769
- 'capability' => 'manage_options',
770
- 'transport' => 'postMessage'
771
- ) );
772
- $wp_customize->add_control( new WPGlobusCheckBoxSet( $wp_customize,
773
- 'wpglobus_customize_enabled_languages', array(
774
- 'section' => 'wpglobus_languages_section',
775
- 'settings' => 'wpglobus_customize_enabled_languages',
776
- 'priority' => 0,
777
- 'items' => WPGlobus::Config()->enabled_languages,
778
- 'label' => esc_html__( 'Enabled Languages', 'wpglobus' ),
779
- 'checkbox_class' => 'wpglobus-listen-change wpglobus-language-item',
780
- 'description' => esc_html__( 'These languages are currently enabled on your site.', 'wpglobus' )
781
-
782
- )
783
- ) );
784
- self::$settings['wpglobus_languages_section']['wpglobus_customize_enabled_languages']['type'] = 'checkbox_set';
785
- /** @see option wpglobus_option['enabled_languages'] */
786
- self::$settings['wpglobus_languages_section']['wpglobus_customize_enabled_languages']['option'] = 'enabled_languages';
787
-
788
- /**
789
- * Setting: Add languages.
790
- */
791
- /** Generate array $more_languages */
792
- /** @var array $more_languages */
793
- $more_languages = array();
794
- $more_languages['select'] = '---- select ----';
795
-
796
- foreach ( WPGlobus::Config()->flag as $code => $file ) {
797
- if ( ! in_array( $code, WPGlobus::Config()->enabled_languages ) ) {
798
- $lang_in_en = '';
799
- if ( ! empty( WPGlobus::Config()->en_language_name[ $code ] ) ) {
800
- $lang_in_en = ' (' . WPGlobus::Config()->en_language_name[ $code ] . ')';
801
- }
802
- // '<img src="' . WPGlobus::Config()->flags_url . $file . '" />'
803
- $more_languages[ $code ] = WPGlobus::Config()->language_name[ $code ] . $lang_in_en;
804
- }
805
- }
806
-
807
- $desc_add_languages =
808
- esc_html__( 'Choose a language you would like to enable.', 'wpglobus' ).
809
- '<br />'.
810
- esc_html__( 'Press the [Save & Publish] button to confirm.', 'wpglobus' ).
811
- '<br />';
812
- $desc_add_languages .= sprintf(
813
- // translators: %1$s and %2$s - placeholders to insert HTML link around 'here'
814
- esc_html__( 'or Add new Language %1$s here %2$s', 'wpglobus' ),
815
- '<a style="text-decoration:underline;" href="' . admin_url() . 'admin.php?page=' . WPGlobus::LANGUAGE_EDIT_PAGE . '&action=add" target="_blank">',
816
- '</a>'
817
- );
818
-
819
- $wp_customize->add_setting( 'wpglobus_customize_add_language', array(
820
- 'type' => 'option',
821
- 'capability' => 'manage_options',
822
- 'transport' => 'postMessage'
823
- ) );
824
- $wp_customize->add_control( 'wpglobus_add_languages_select_box', array(
825
- 'settings' => 'wpglobus_customize_add_language',
826
- 'label' => esc_html__( 'Add Languages', 'wpglobus' ),
827
- 'section' => 'wpglobus_languages_section',
828
- 'type' => 'select',
829
- 'priority' => 10,
830
- 'choices' => $more_languages,
831
- 'description' => $desc_add_languages
832
- ) );
833
- //self::$settings[ 'wpglobus_languages_section' ][ 'wpglobus_customize_add_language' ] = 'select';
834
-
835
- /**
836
- * Setting: Language Selector Mode.
837
- */
838
- $wp_customize->add_setting( 'wpglobus_customize_language_selector_mode', array(
839
- 'type' => 'option',
840
- 'capability' => 'manage_options',
841
- 'transport' => 'refresh'
842
- #'transport' => 'postMessage'
843
- ) );
844
- $wp_customize->add_control( 'wpglobus_customize_language_selector_mode', array(
845
- 'settings' => 'wpglobus_customize_language_selector_mode',
846
- 'label' => esc_html__( 'Language Selector Mode', 'wpglobus' ),
847
- 'section' => 'wpglobus_languages_section',
848
- 'type' => 'select',
849
- 'priority' => 20,
850
- 'choices' => array(
851
- 'code' => esc_html__( 'Two-letter Code with flag (en, ru, it, etc.)', 'wpglobus' ),
852
- 'full_name' => esc_html__( 'Full Name (English, Russian, Italian, etc.)', 'wpglobus' ),
853
- /* @since 1.2.1 */
854
- 'name' => esc_html__( 'Full Name with flag (English, Russian, Italian, etc.)', 'wpglobus' ),
855
- 'empty' => esc_html__( 'Flags only', 'wpglobus' )
856
- ),
857
- 'description' => esc_html__( 'Choose the way language name and country flag are shown in the drop-down menu', 'wpglobus' )
858
- ) );
859
- self::$settings['wpglobus_languages_section']['wpglobus_customize_language_selector_mode']['type'] = 'select';
860
- /** @see option wpglobus_option['show_flag_name'] */
861
- self::$settings['wpglobus_languages_section']['wpglobus_customize_language_selector_mode']['option'] = 'show_flag_name';
862
-
863
- /**
864
- * @see https://make.wordpress.org/core/2016/03/22/implementing-selective-refresh-support-for-widgets/
865
- * @see https://make.wordpress.org/core/2016/03/10/customizer-improvements-in-4-5/
866
- *
867
- * $wp_customize->selective_refresh->add_partial( 'wpglobus_customize_language_selector_mode', array(
868
- * 'selector' => '#site-navigation',
869
- * 'render_callback' => function() {
870
- * wp_nav_menu();
871
- * },
872
- * ) );
873
- * // */
874
-
875
- /**
876
- * Setting: Language Selector Menu.
877
- */
878
- /** @var array $nav_menus */
879
- $nav_menus = WPGlobus::_get_nav_menus();
880
-
881
- $menus = array();
882
-
883
- foreach ( $nav_menus as $menu ) {
884
- $menus[ $menu->slug ] = $menu->name;
885
- }
886
- if ( ! empty( $nav_menus ) && count( $nav_menus ) > 1 ) {
887
- $menus['all'] = 'All';
888
- }
889
- if ( ! empty( $nav_menus ) ) {
890
- array_unshift(
891
- $menus,
892
- '--- ' . esc_html__('select navigation menu', 'wpglobus'). ' ---'
893
- );
894
- }
895
-
896
- if ( empty( $menus ) ) {
897
-
898
- $wp_customize->add_control( new WPGlobusLink( $wp_customize,
899
- 'wpglobus_customize_language_selector_menu', array(
900
- 'section' => 'wpglobus_languages_section',
901
- 'title' => esc_html__( 'Language Selector Menu', 'wpglobus' ),
902
- 'settings' => array(),
903
- 'priority' => 30,
904
- 'type' => 'wpglobus_link',
905
- /**
906
- * We are in Customizer, so we can "focus" to the menus and not go to menus in admin.
907
- * The JS code and the message below are copied from
908
- * @see WP_Nav_Menu_Widget::form
909
- */
910
- 'href' => esc_attr( 'javascript: wp.customize.panel( "nav_menus" ).focus();' ),
911
- 'text' => esc_html__( 'No menus have been created yet. Create some.', 'wpglobus' ),
912
- 'description' => esc_html__( 'Choose the navigation menu where the language selector will be shown', 'wpglobus' ),
913
- )
914
- ) );
915
-
916
- self::$settings['wpglobus_languages_section']['wpglobus_customize_language_selector_menu']['type'] = 'wpglobus_link';
917
- self::$settings['wpglobus_languages_section']['wpglobus_customize_language_selector_menu']['option'] = array();
918
-
919
- } else {
920
-
921
- $wp_customize->add_setting( 'wpglobus_customize_language_selector_menu', array(
922
- 'type' => 'option',
923
- 'capability' => 'manage_options',
924
- 'transport' => 'postMessage'
925
- ) );
926
- $wp_customize->add_control( 'wpglobus_customize_language_selector_menu', array(
927
- 'settings' => 'wpglobus_customize_language_selector_menu',
928
- 'label' => esc_html__( 'Language Selector Menu', 'wpglobus' ),
929
- 'section' => 'wpglobus_languages_section',
930
- 'type' => 'select',
931
- 'priority' => 30,
932
- 'choices' => $menus,
933
- 'description' => esc_html__( 'Choose the navigation menu where the language selector will be shown', 'wpglobus' ),
934
- ) );
935
-
936
- self::$settings['wpglobus_languages_section']['wpglobus_customize_language_selector_menu']['type'] = 'select';
937
- /** @see option wpglobus_option['use_nav_menu'] */
938
- self::$settings['wpglobus_languages_section']['wpglobus_customize_language_selector_menu']['option'] = 'use_nav_menu';
939
-
940
- }
941
-
942
- /**
943
- * Setting: "All Pages" menus Language selector.
944
- */
945
- $wp_customize->add_setting( 'wpglobus_customize_selector_wp_list_pages', array(
946
- 'type' => 'option',
947
- 'capability' => 'manage_options',
948
- 'transport' => 'postMessage'
949
- ) );
950
- $wp_customize->add_control( new WPGlobusCheckBox( $wp_customize,
951
- 'wpglobus_customize_selector_wp_list_pages', array(
952
- 'settings' => 'wpglobus_customize_selector_wp_list_pages',
953
- 'title' => esc_html__( '"All Pages" menus Language selector', 'wpglobus' ),
954
- 'section' => 'wpglobus_languages_section',
955
- 'priority' => 40,
956
- 'label' => esc_html__( 'Adds language selector to the menus that automatically list all existing pages (using `wp_list_pages`)', 'wpglobus' ),
957
- )
958
- ) );
959
- self::$settings['wpglobus_languages_section']['wpglobus_customize_selector_wp_list_pages']['type'] = 'wpglobus_checkbox';
960
- /** @see option wpglobus_option['selector_wp_list_pages']['show_selector'] */
961
- self::$settings['wpglobus_languages_section']['wpglobus_customize_selector_wp_list_pages']['option'] = 'show_selector';
962
-
963
- /**
964
- * Setting: Custom CSS.
965
- */
966
- $wp_customize->add_setting( 'wpglobus_customize_css_editor', array(
967
- 'type' => 'option',
968
- 'capability' => 'manage_options',
969
- 'transport' => 'postMessage'
970
- ) );
971
- $wp_customize->add_control( 'wpglobus_customize_css_editor', array(
972
- 'settings' => 'wpglobus_customize_css_editor',
973
- 'label' => esc_html__( 'Custom CSS', 'wpglobus' ),
974
- 'section' => 'wpglobus_languages_section',
975
- 'type' => 'textarea',
976
- 'priority' => 50,
977
- 'description' => esc_html__( 'Here you can enter the CSS rules to adjust the language selector menu for your theme. Look at the examples in the `style-samples.css` file.', 'wpglobus' ),
978
- ) );
979
- self::$settings['wpglobus_languages_section']['wpglobus_customize_css_editor']['type'] = 'textarea';
980
- /** @see option wpglobus_option['css_editor'] */
981
- self::$settings['wpglobus_languages_section']['wpglobus_customize_css_editor']['option'] = 'css_editor';
982
-
983
- }
984
- /** end SECTION: Language */
985
-
986
- /**
987
- * SECTION: Post types.
988
- */
989
- if ( 1 ) {
990
-
991
- $section_priority = $section_priority + 10;
992
-
993
- $section = 'wpglobus_post_types_section';
994
-
995
- $wp_customize->add_section( $section, array(
996
- 'title' => esc_html__( 'Post types', 'wpglobus' ),
997
- 'priority' => $section_priority,
998
- 'panel' => 'wpglobus_settings_panel'
999
- ) );
1000
- self::$sections[ $section ] = $section;
1001
-
1002
- if ( false === ( $enabled_post_types = get_transient( self::$enabled_post_types_key ) ) ) {
1003
-
1004
- $post_types = get_post_types();
1005
-
1006
- $enabled_post_types = array();
1007
-
1008
- foreach ( $post_types as $post_type ) {
1009
- /**
1010
- * @see "SECTION: Post types" in includes\options\class-wpglobus-options.php for complete post type array.
1011
- */
1012
- if ( ! in_array( $post_type, WPGlobus_Post_Types::hidden_types(), true ) ) {
1013
-
1014
- /**
1015
- * Obsolete from 1.9.10.
1016
- * @todo Remove after testing.
1017
- */
1018
- /**
1019
-
1020
- if ( in_array( $post_type, array( 'post', 'page' ) ) ) {
1021
- $enabled_post_types[ $post_type ] = $post_type;
1022
- continue;
1023
- }
1024
-
1025
- foreach ( WPGlobus::O()->vendors_scripts as $script => $status ) {
1026
-
1027
- if ( empty( $status ) ) {
1028
- continue;
1029
- }
1030
-
1031
- if ( $script == 'ACF' || $script == 'ACFPRO' ) {
1032
- if ( in_array( $post_type, array( 'acf-field-group', 'acf-field', 'acf' ) ) ) {
1033
- continue 2;
1034
- }
1035
- }
1036
-
1037
- if ( $script == 'WOOCOMMERCE' ) {
1038
- if ( in_array(
1039
- $post_type,
1040
- array(
1041
- 'product',
1042
- 'product_tag',
1043
- 'product_cat',
1044
- 'shop_order',
1045
- 'shop_coupon',
1046
- 'product_variation',
1047
- 'shop_order_refund',
1048
- 'shop_webhook'
1049
- )
1050
- ) ) {
1051
- continue 2;
1052
- }
1053
- }
1054
-
1055
- if ( $script == 'WPCF7' ) {
1056
- if ( in_array( $post_type, array( 'wpcf7_contact_form' ) ) ) {
1057
- continue 2;
1058
- }
1059
- }
1060
-
1061
- }
1062
- // */
1063
-
1064
- $enabled_post_types[ $post_type ] = $post_type;
1065
-
1066
- }
1067
- }
1068
-
1069
- set_transient( self::$enabled_post_types_key, $enabled_post_types, 60 );
1070
-
1071
- }
1072
-
1073
- foreach ( $enabled_post_types as $post_type ) :
1074
-
1075
- $status = '';
1076
-
1077
- if ( isset( WPGlobus::Config()->extended_options['post_type'][ $post_type ] ) ) {
1078
-
1079
- if ( WPGlobus::Config()->extended_options['post_type'][ $post_type ] == 1 ) {
1080
- $status = '1';
1081
- }
1082
-
1083
- } else {
1084
- $status = '1';
1085
- }
1086
-
1087
- update_option( 'wpglobus_customize_post_type_' . $post_type, $status );
1088
-
1089
- endforeach;
1090
-
1091
- $i = 0;
1092
- foreach ( $enabled_post_types as $post_type ) :
1093
-
1094
- $pst = 'wpglobus_customize_post_type_' . $post_type;
1095
-
1096
- $wp_customize->add_setting( $pst, array(
1097
- 'type' => 'option',
1098
- 'capability' => 'manage_options',
1099
- 'transport' => 'postMessage'
1100
- ) );
1101
-
1102
- $title = '';
1103
- if ( $i == 0 ) {
1104
- $title = esc_html__( 'Uncheck to disable WPGlobus', 'wpglobus' );
1105
- }
1106
-
1107
- $wp_customize->add_control( new WPGlobusCheckBox( $wp_customize,
1108
- $pst, array(
1109
- 'settings' => $pst,
1110
- 'title' => $title,
1111
- 'label' => $post_type,
1112
- 'section' => $section,
1113
- #'default' => '1',
1114
- 'priority' => 10,
1115
- )
1116
- ) );
1117
-
1118
- $i ++;
1119
- self::$settings[ $section ][ $pst ]['type'] = 'wpglobus_checkbox';
1120
- /** @see option wpglobus_option['post_type'] */
1121
- self::$settings[ $section ][ $pst ]['option'] = 'post_type';
1122
-
1123
- endforeach;
1124
-
1125
- };
1126
- /** end SECTION: Post types */
1127
-
1128
- /**
1129
- * SECTION: Redirect.
1130
- */
1131
- if ( 1 ) {
1132
-
1133
- $section_priority = $section_priority + 10;
1134
-
1135
- self::$sections['wpglobus_redirect_section'] = 'wpglobus_redirect_section';
1136
-
1137
- $wp_customize->add_section( self::$sections['wpglobus_redirect_section'], array(
1138
- 'title' => esc_html__( 'Redirect', 'wpglobus' ),
1139
- 'priority' => $section_priority,
1140
- 'panel' => 'wpglobus_settings_panel',
1141
- ) );
1142
-
1143
- /**
1144
- * Option
1145
- * [browser_redirect] => Array
1146
- * (
1147
- * [redirect_by_language] => 0
1148
- * )
1149
- */
1150
-
1151
- /**
1152
- * Setting wpglobus_customize_redirect_by_language.
1153
- */
1154
- $wp_customize->add_setting( 'wpglobus_customize_redirect_by_language', array(
1155
- 'type' => 'option',
1156
- 'capability' => 'manage_options',
1157
- 'transport' => 'postMessage'
1158
- ) );
1159
- $wp_customize->add_control( new WPGlobusCheckBox( $wp_customize,
1160
- 'wpglobus_customize_redirect_by_language', array(
1161
- 'section' => self::$sections['wpglobus_redirect_section'],
1162
- 'settings' => 'wpglobus_customize_redirect_by_language',
1163
- 'title' => esc_html__( 'Choose the language automatically, based on:', 'wpglobus' ),
1164
- 'priority' => 10,
1165
- 'label' => esc_html__( 'Preferred language set in the browser', 'wpglobus' ),
1166
- 'description' => esc_html__('When a user comes to the site for the first time, try to find the best matching language version of the page.', 'wpglobus')
1167
- )
1168
- ) );
1169
-
1170
- self::$settings[ self::$sections['wpglobus_redirect_section'] ]['wpglobus_customize_redirect_by_language']['type'] = 'wpglobus_checkbox';
1171
- /** @see option wpglobus_option[browser_redirect][redirect_by_language] */
1172
- self::$settings[ self::$sections['wpglobus_redirect_section'] ]['wpglobus_customize_redirect_by_language']['option'] = 'redirect_by_language';
1173
-
1174
- }
1175
- /** end SECTION: Redirect */
1176
-
1177
- /**
1178
- * SECTION: Custom JS Code.
1179
- */
1180
- if ( 1 ) {
1181
-
1182
- $section_priority = $section_priority + 10;
1183
-
1184
- self::$sections['wpglobus_js_editor_section'] = 'wpglobus_js_editor_section';
1185
-
1186
- /**
1187
- * Setting 'wpglobus_customize_js_editor'.
1188
- */
1189
-
1190
- /**
1191
- * class WP_Customize_Code_Editor_Control
1192
- * @since WordPress 4.9.0
1193
- * @see https://developer.wordpress.org/reference/classes/wp_customize_code_editor_control/
1194
- */
1195
- if ( ! class_exists('WP_Customize_Code_Editor_Control') ) {
1196
-
1197
- $content = esc_html__( 'To add a Custom JS Code in Customizer, you need to upgrade WordPress to version 4.9 or later.', 'wpglobus' );
1198
- $content .= '<br /><br />' .
1199
- esc_html__( 'With your version of WordPress, please use the', 'wpglobus' ) .
1200
- ' <a style="text-decoration:underline;" target="_blank" href="' . esc_url( admin_url() . 'admin.php?page=' . WPGlobus::OPTIONS_PAGE_SLUG . '&tab=0' ) . '">' .
1201
- esc_html__( 'WPGlobus Settings page', 'wpglobus' ) .
1202
- '.</a>';
1203
-
1204
- $wp_customize->add_section( self::$sections['wpglobus_js_editor_section'], array(
1205
- 'title' => esc_html__( 'Custom JS Code', 'wpglobus' ),
1206
- 'priority' => $section_priority,
1207
- 'panel' => 'wpglobus_settings_panel',
1208
- ) );
1209
-
1210
- $wp_customize->add_setting( 'wpglobus_customize_js_editor', array(
1211
- 'type' => 'option',
1212
- 'capability' => 'manage_options',
1213
- 'transport' => 'postMessage'
1214
- ) );
1215
-
1216
- $wp_customize->add_control( new WPGlobusTextBox( $wp_customize,
1217
- 'wpglobus_customize_js_editor', array(
1218
- 'section' => self::$sections['wpglobus_js_editor_section'],
1219
- 'settings' => 'wpglobus_customize_js_editor',
1220
- 'content' => $content
1221
- )
1222
- ) );
1223
-
1224
- } else {
1225
-
1226
- $wp_customize->add_section( self::$sections['wpglobus_js_editor_section'], array(
1227
- 'title' => esc_html__( 'Custom JS Code', 'wpglobus' ),
1228
- 'priority' => $section_priority,
1229
- 'panel' => 'wpglobus_settings_panel',
1230
- ) );
1231
-
1232
-
1233
- $wp_customize->add_setting( 'wpglobus_customize_js_editor', array(
1234
- 'type' => 'option',
1235
- 'capability' => 'manage_options',
1236
- 'transport' => 'postMessage'
1237
- ) );
1238
- $wp_customize->add_control( new WP_Customize_Code_Editor_Control( $wp_customize,
1239
- 'wpglobus_customize_js_editor', array(
1240
- 'code_type' => 'javascript',
1241
- #'mode' => 'javascript',
1242
- 'input_attrs' => array('rows'=>80),
1243
- 'section' => self::$sections['wpglobus_js_editor_section'],
1244
- 'settings' => 'wpglobus_customize_js_editor',
1245
- 'title' => esc_html__( 'Title', 'wpglobus' ),
1246
- 'priority' => 10,
1247
- 'label' => esc_html__( 'Custom JS Code', 'wpglobus' ),
1248
- 'description' => esc_html__( '(Paste your JS code here.)', 'wpglobus' )
1249
- )
1250
- ) );
1251
-
1252
- self::$settings[ self::$sections['wpglobus_js_editor_section'] ]['wpglobus_customize_js_editor']['type'] = 'code_editor';
1253
- /** @see option wpglobus_option['css_editor'] */
1254
- self::$settings[ self::$sections['wpglobus_js_editor_section'] ]['wpglobus_customize_js_editor']['option'] = 'js_editor';
1255
-
1256
- }
1257
- }
1258
- /** end SECTION: Custom JS Code */
1259
-
1260
- /**
1261
- * SECTION: Add ons.
1262
- */
1263
- if ( 1 ) {
1264
-
1265
- $section_priority = $section_priority + 10;
1266
-
1267
- global $wp_version;
1268
-
1269
- self::$sections['wpglobus_addons_section'] = 'wpglobus_addons_section';
1270
-
1271
- if ( version_compare( $wp_version, '4.5-RC1', '<' ) ) {
1272
-
1273
- $wp_customize->add_section( self::$sections['wpglobus_addons_section'], array(
1274
- 'title' => esc_html__( 'Add-ons', 'wpglobus' ),
1275
- 'priority' => $section_priority,
1276
- 'panel' => 'wpglobus_settings_panel',
1277
- ) );
1278
-
1279
- /** Add ons setting */
1280
- $wp_customize->add_setting( 'wpglobus_customize_add_ons', array(
1281
- 'type' => 'option',
1282
- 'capability' => 'manage_options',
1283
- 'transport' => 'postMessage',
1284
- ) );
1285
-
1286
- $wp_customize->add_control( new WPGlobusCheckBox( $wp_customize,
1287
- 'wpglobus_customize_add_ons', array(
1288
- 'settings' => 'wpglobus_customize_add_ons',
1289
- 'title' => esc_html__( 'Title', 'wpglobus' ),
1290
- 'label' => esc_html__( 'Label', 'wpglobus' ),
1291
- 'section' => self::$sections['wpglobus_addons_section'],
1292
- 'type' => 'checkbox',
1293
- 'priority' => 10,
1294
- 'description' => esc_html__( 'Description', 'wpglobus' ),
1295
- )
1296
- ) );
1297
-
1298
- } else {
1299
-
1300
- /**
1301
- * Changes in WP 4.5
1302
- * @link https://make.wordpress.org/core/2016/03/10/customizer-improvements-in-4-5/
1303
- */
1304
-
1305
- $wp_customize->add_section( self::$sections['wpglobus_addons_section'], array(
1306
- 'title' => esc_html__( 'Add-ons', 'wpglobus' ),
1307
- 'priority' => $section_priority,
1308
- 'panel' => 'wpglobus_settings_panel',
1309
- ) );
1310
-
1311
- $wp_customize->add_control( 'wpglobus_customize_add_ons', array(
1312
- 'section' => self::$sections['wpglobus_addons_section'],
1313
- 'settings' => array(),
1314
- 'type' => 'button',
1315
- )
1316
- );
1317
- }
1318
- }
1319
- /** end SECTION: Add ons */
1320
-
1321
- /**
1322
- * Fires to add customize settings.
1323
- *
1324
- * @since 1.4.6
1325
- *
1326
- * @param WP_Customize_Manager $wp_customize The WP Customize Manager.
1327
- */
1328
- do_action( 'wpglobus_customize_register', $wp_customize );
1329
-
1330
- /** @var array $res */
1331
- $res = apply_filters( 'wpglobus_customize_data', array(
1332
- 'sections' => self::$sections,
1333
- 'settings' => self::$settings,
1334
- ) );
1335
-
1336
- self::$sections = $res['sections'];
1337
- self::$settings = $res['settings'];
1338
-
1339
- }
1340
-
1341
- /**
1342
- * Get content for WPGlobusTextBox element.
1343
- *
1344
- * @param string $control
1345
- * @param mixed $attrs
1346
- *
1347
- * @return string
1348
- */
1349
- public static function get_content( $control = '', $attrs = null ) {
1350
-
1351
- if ( '' == $control ) {
1352
- return '';
1353
- }
1354
-
1355
- $content = '';
1356
- switch ( $control ) :
1357
- case 'settings_section_help' :
1358
- $content = sprintf(
1359
- esc_html__( 'Here you can specify which fields should be considered multilingual by WPGlobus. To exclude a field, uncheck it and then press the button %s below.', 'wpglobus'),
1360
- '<strong>' . esc_html__( 'Save &amp; Reload', 'wpglobus' ) . '</strong>'
1361
- );
1362
-
1363
- break;
1364
- case 'welcome_message' :
1365
-
1366
- $content = '<div style="width:100%;">' .
1367
- esc_html__( 'Thank you for installing WPGlobus!', 'wpglobus' ) .
1368
- '<br/>' .
1369
- '&bull; ' .
1370
- '<a style="text-decoration:underline;" target="_blank" href="' . admin_url() . 'admin.php?page=' . WPGlobus::PAGE_WPGLOBUS_ABOUT . '">' .
1371
- esc_html__( 'Read About WPGlobus', 'wpglobus' ) .
1372
- '</a>' .
1373
- '<br/>' .
1374
- '&bull; ' . esc_html__( 'Click the <strong>[Languages]</strong> tab at the left to setup the options.', 'wpglobus' ) .
1375
- #'<br/>' .
1376
- #'&bull; ' . esc_html__( 'Use the <strong>[Languages Table]</strong> section to add a new language or to edit the language attributes: name, code, flag icon, etc.', 'wpglobus' ) .
1377
- '<br/>' .
1378
- '<br/>' .
1379
- esc_html__( 'Should you have any questions or comments, please do not hesitate to contact us.', 'wpglobus' ) .
1380
- '<br/>' .
1381
- '<br/>' .
1382
- '<em>' .
1383
- esc_html__( 'Sincerely Yours,', 'wpglobus' ) .
1384
- '<br/>' .
1385
- esc_html__( 'The WPGlobus Team', 'wpglobus' ) .
1386
- '</em>' .
1387
- '</div>';
1388
-
1389
- break;
1390
- case 'deactivate_message' :
1391
-
1392
- /**
1393
- * For Google Analytics
1394
- */
1395
- $ga_campaign = '?utm_source=wpglobus-admin-clean&utm_medium=link&utm_campaign=talk-to-us';
1396
-
1397
- $url_wpglobus_site = WPGlobus_Utils::url_wpglobus_site();
1398
- $url_wpglobus_site_submit_ticket = $url_wpglobus_site . 'support/submit-ticket/' . $ga_campaign;
1399
-
1400
- $content = '<p><em>' .
1401
- sprintf(
1402
- esc_html(
1403
- // translators: %?$s: HTML codes for hyperlink. Do not remove.
1404
- __( 'We would hate to see you go. If something goes wrong, do not uninstall WPGlobus yet. Please %1$stalk to us%2$s and let us help!', 'wpglobus' ) ),
1405
- '<a href="' . $url_wpglobus_site_submit_ticket . '" target="_blank" style="text-decoration:underline;">',
1406
- '</a>'
1407
- ) .
1408
- '</em></p>' .
1409
- '<hr/>' .
1410
- '<p><i class="el el-exclamation-sign" style="color:red"></i> <strong>' .
1411
- esc_html( __( 'Please note that if you deactivate WPGlobus, your site will show all the languages together, mixed up. You will need to remove all translations, keeping only one language.', 'wpglobus' ) ) .
1412
- '</strong></p>' .
1413
- '<p>' .
1414
- sprintf(
1415
- // translators: %s: link to the Clean-up Tool
1416
- esc_html__( 'If there are just a few places, you should edit them manually. To automatically remove all translations at once, you can use the %s. WARNING: The clean-up operation is irreversible, so use it only if you need to completely uninstall WPGlobus.', 'wpglobus' ),
1417
- sprintf(
1418
- // translators: %?$s: HTML codes for hyperlink. Do not remove.
1419
- esc_html__( '%1$sClean-up Tool%2$s', 'wpglobus' ),
1420
- '<a style="text-decoration:underline;" target="_blank" href="' . admin_url() . 'admin.php?page=' . WPGlobus::PAGE_WPGLOBUS_CLEAN . '">',
1421
- '</a>'
1422
- ) ) .
1423
- '</p>';
1424
-
1425
- break;
1426
- case 'sorry_message' :
1427
-
1428
- $content = '<p><strong>' .
1429
- sprintf(
1430
- // translators: %s: name of current theme
1431
- esc_html__( 'Sorry, WPGlobus customizer doesn\'t support current theme %s.', 'wpglobus' ),
1432
- '<em>' . $attrs->__get( 'name' ) . '</em>'
1433
- ) .
1434
- '<br />' .
1435
- sprintf(
1436
- // translators: %?$s: HTML codes for hyperlink. Do not remove.
1437
- esc_html__( 'Please use %1$sWPGlobus options page%2$s instead.', 'wpglobus' ),
1438
- '<a style="text-decoration:underline;" target="_blank" href="' . admin_url() . 'admin.php?page=' . WPGlobus::OPTIONS_PAGE_SLUG . '&tab=0">',
1439
- '</a>'
1440
- ) .
1441
- '</strong></p>';
1442
-
1443
- break;
1444
- endswitch;
1445
-
1446
- return $content;
1447
-
1448
- }
1449
-
1450
- /**
1451
- * Load Customize Preview JS.
1452
- *
1453
- * Used by hook: 'customize_preview_init'
1454
- * @see 'customize_preview_init'
1455
- */
1456
- public static function action__customize_preview_init() {
1457
-
1458
- /*
1459
- wp_enqueue_script(
1460
- 'wpglobus-customize-options-preview',
1461
- WPGlobus::$PLUGIN_DIR_URL . 'includes/js/wpglobus-customize-options-preview' .
1462
- WPGlobus::SCRIPT_SUFFIX() . '.js',
1463
- array( 'jquery' ),
1464
- WPGLOBUS_VERSION,
1465
- true
1466
- );
1467
- // */
1468
- /*
1469
- wp_localize_script(
1470
- 'wpglobus-customize-options-preview',
1471
- 'WPGlobusCustomize',
1472
- array(
1473
- 'version' => WPGLOBUS_VERSION,
1474
- #'blogname' => WPGlobus_Core::text_filter( get_option( 'blogname' ), WPGlobus::Config()->language ),
1475
- #'blogdescription' => WPGlobus_Core::text_filter( get_option( 'blogdescription' ), WPGlobus::Config()->language )
1476
- )
1477
- ); // */
1478
-
1479
- }
1480
-
1481
- /**
1482
- * Load Customize Control JS.
1483
- */
1484
- public static function action__customize_controls_enqueue_scripts() {
1485
-
1486
- /**
1487
- * Get customize_user_control options which there are specifically for every theme.
1488
- */
1489
- $options = get_option( self::$options_key );
1490
- if ( $options == '' ) {
1491
- $options = null;
1492
- } else {
1493
- if ( empty( $options['customize_user_control'] ) ) {
1494
- $options = null;
1495
- } else {
1496
- $options = $options['customize_user_control'];
1497
- }
1498
- }
1499
-
1500
- $i18n = array();
1501
- $i18n['expandShrink'] = esc_html__('Expand/Shrink', 'wpglobus');
1502
-
1503
- wp_register_script(
1504
- 'wpglobus-customize-options',
1505
- WPGlobus::$PLUGIN_DIR_URL . 'includes/js/wpglobus-customize-options' . WPGlobus::SCRIPT_SUFFIX() . '.js',
1506
- array( 'jquery', 'jquery-ui-draggable' ),
1507
- WPGLOBUS_VERSION,
1508
- true
1509
- );
1510
- wp_enqueue_script( 'wpglobus-customize-options' );
1511
- wp_localize_script(
1512
- 'wpglobus-customize-options',
1513
- 'WPGlobusCustomizeOptions',
1514
- array(
1515
- 'version' => WPGLOBUS_VERSION,
1516
- 'i18n' => $i18n,
1517
- 'config' => WPGlobus::Config(),
1518
- 'ajaxurl' => admin_url( 'admin-ajax.php' ),
1519
- 'process_ajax' => __CLASS__ . '_process_ajax',
1520
- 'editLink' => admin_url() . 'admin.php?page=' . WPGlobus::LANGUAGE_EDIT_PAGE . '&action=edit&lang={{language}}"',
1521
- 'settings' => self::$settings,
1522
- 'sections' => self::$sections,
1523
- 'addonsPage' => admin_url() . 'plugin-install.php?tab=search&s=WPGlobus&source=WPGlobus',
1524
- 'themeName' => self::$theme_name,
1525
- 'themeEnabled' => self::is_theme_enabled() ? 'true' : 'false',
1526
- 'helpButton' => '<span style="float:right;cursor:pointer;" class="wpglobus-customize-icon-help customize-help-toggle dashicons dashicons-editor-help" tabindex="0" aria-expanded="false"></span>',
1527
- 'userControl' => $options,
1528
- 'userControlSaveButton' => self::$controls_save_button,
1529
- 'userControlIcon' => WPGlobus::$PLUGIN_DIR_URL . 'includes/css/images/checkbox-icon.png',
1530
- 'userControlIconClass' => 'wpglobus-customize-user-control-icon',
1531
- 'userControlBoxSelector' => '.wpglobus-fields_settings_control_box .items-box'
1532
- # @see WPGlobusFieldsSettingsControl class
1533
- )
1534
- );
1535
-
1536
- }
1537
-
1538
- /**
1539
- * Get current theme or its property.
1540
- *
1541
- * @since 1.6.0
1542
- *
1543
- * @param string $param
1544
- *
1545
- * @return string|WP_Theme
1546
- */
1547
- public static function get_theme( $param = '' ) {
1548
-
1549
- if ( 'name' === $param ) {
1550
- return strtolower( self::$theme->name );
1551
- }
1552
-
1553
- return self::$theme;
1554
-
1555
- }
1556
-
1557
- /**
1558
- * Check for enabled theme.
1559
- *
1560
- * @since 1.6.0
1561
- * @return boolean
1562
- */
1563
- public static function is_theme_enabled() {
1564
-
1565
- if ( in_array( self::$theme_name, self::$disabled_themes ) ) {
1566
- return false;
1567
- }
1568
-
1569
- return true;
1570
- }
1571
-
1572
-
1573
- /**
1574
- * Filter to disable the making multilingual our own settings.
1575
- *
1576
- * @since 1.9.8
1577
- * @return array
1578
- */
1579
- public static function filter__disabled_setting_mask($disabled_setting_mask) {
1580
- $disabled_setting_mask[] = 'wpglobus_customize_js_editor';
1581
- return $disabled_setting_mask;
1582
- }
1583
-
1584
- } // class WPGlobus_Customize_Options.
1585
-
1586
- endif;
1587
-
1588
- # --- EOF
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/admin/class-wpglobus-dashboard-news.php DELETED
@@ -1,67 +0,0 @@
1
- <?php
2
-
3
- /**
4
- * Class WPGlobus_Dashboard_News
5
- * @since 1.7.7
6
- */
7
- class WPGlobus_Dashboard_News {
8
-
9
- /**
10
- * WPGlobus_Dashboard_News constructor.
11
- */
12
- public function __construct() {
13
- add_action( 'wp_dashboard_setup', array(
14
- $this,
15
- 'action__wp_dashboard_setup'
16
- ) );
17
-
18
- add_filter( 'wpglobus_localize_feed_url', array(
19
- $this,
20
- 'filter__wpglobus_localize_feed_url'
21
- ), 0, 2 );
22
-
23
- }
24
-
25
- /**
26
- * Do not localize feed URL because we have news only in English.
27
- *
28
- * @param bool $need_to_localize
29
- * @param SimplePie $feed
30
- *
31
- * @return bool
32
- */
33
- public function filter__wpglobus_localize_feed_url( $need_to_localize, $feed ) {
34
-
35
- return $need_to_localize && WPGlobus::URL_WPGLOBUS_SITE . 'feed/' !== $feed->feed_url;
36
- }
37
-
38
- /**
39
- * Setup the dashboard widget.
40
- */
41
- public function action__wp_dashboard_setup() {
42
- add_meta_box( 'wpglobus_dashboard_news',
43
- esc_html__( 'WPGlobus News', 'wpglobus' ),
44
- array(
45
- $this,
46
- 'dashboard_widget'
47
- ),
48
- 'dashboard', 'side', 'high'
49
- );
50
- }
51
-
52
- /**
53
- * Output the widget content.
54
- */
55
- public function dashboard_widget() {
56
- echo '<div class="rss-widget">';
57
- wp_widget_rss_output( array(
58
- 'url' => WPGlobus::URL_WPGLOBUS_SITE . 'feed/',
59
- 'title' => esc_html__( 'WPGlobus News', 'wpglobus' ),
60
- 'items' => 3,
61
- 'show_summary' => 1,
62
- 'show_author' => 0,
63
- 'show_date' => 1
64
- ) );
65
- echo '</div>';
66
- }
67
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/admin/class-wpglobus-language-edit-request.php DELETED
@@ -1,255 +0,0 @@
1
- <?php
2
- /**
3
- * WPGlobus / Admin / Language Edit / Request
4
- * plugins/wpglobus/includes/admin/class-wpglobus-language-edit-request.php
5
- *
6
- * @package WPGlobus\Admin
7
- * @since 1.9.7.1
8
- */
9
-
10
- /**
11
- * Class WPGlobus_Language_Edit_Request
12
- */
13
- class WPGlobus_Language_Edit_Request {
14
-
15
- const NONCE_ACTION = 'wpglobus-language-edit';
16
-
17
- const ACTION_NONE = '';
18
-
19
- const ACTION_EDIT = 'edit';
20
-
21
- const ACTION_DELETE = 'delete';
22
-
23
- const ACTION_ADD = 'add';
24
-
25
- const ACTION_DONE = 'done';
26
-
27
- /**
28
- * GET['action']
29
- *
30
- * @var string
31
- */
32
- protected $action = self::ACTION_NONE;
33
-
34
- /**
35
- * GET['lang']
36
- *
37
- * @var string
38
- */
39
- protected $lang = '';
40
-
41
- /**
42
- * POST['submit']
43
- *
44
- * @var bool
45
- */
46
- protected $is_submit = false;
47
-
48
- /**
49
- * POST['delete']
50
- *
51
- * @var bool
52
- */
53
- protected $is_delete = false;
54
-
55
-
56
- /**
57
- * POST['wpglobus_language_code']
58
- *
59
- * @var string
60
- */
61
- protected $wpglobus_language_code = '';
62
-
63
- /**
64
- * POST['wpglobus_flags']
65
- *
66
- * @var string
67
- */
68
- protected $wpglobus_flags = '';
69
-
70
- /**
71
- * POST['wpglobus_language_name']
72
- *
73
- * @var string
74
- */
75
- protected $wpglobus_language_name = '';
76
-
77
- /**
78
- * POST['wpglobus_en_language_name']
79
- *
80
- * @var string
81
- */
82
- protected $wpglobus_en_language_name = '';
83
-
84
- /**
85
- * POST['wpglobus_locale']
86
- *
87
- * @var string
88
- */
89
- protected $wpglobus_locale = '';
90
-
91
- /**
92
- * WPGlobus_Language_Edit_Request constructor.
93
- */
94
- public function __construct() {
95
- $this->parse_request();
96
- }
97
-
98
- /**
99
- * Parse GET and POST.
100
- */
101
- protected function parse_request() {
102
-
103
- check_admin_referer( self::NONCE_ACTION );
104
-
105
- if ( isset( $_GET['action'] ) && is_string( $_GET['action'] ) ) { // WPCS: input var ok, sanitization ok.
106
- $action = sanitize_text_field( wp_unslash( $_GET['action'] ) ); // Input var okay.
107
- if ( in_array( $action, array(
108
- self::ACTION_ADD,
109
- self::ACTION_EDIT,
110
- self::ACTION_DELETE,
111
- self::ACTION_DONE,
112
- ), true ) ) {
113
- $this->action = $action;
114
- } else {
115
- $this->action = self::ACTION_NONE;
116
- }
117
- }
118
-
119
- if ( isset( $_GET['lang'] ) && is_string( $_GET['lang'] ) ) { // WPCS: input var ok, sanitization ok.
120
- $this->lang = sanitize_text_field( wp_unslash( $_GET['lang'] ) ); // Input var okay.
121
- }
122
-
123
- if ( isset( $_POST['submit'] ) ) { // Input var okay.
124
- $this->is_submit = true;
125
- }
126
-
127
- if ( isset( $_POST['delete'] ) ) { // Input var okay.
128
- $this->is_delete = true;
129
- }
130
-
131
- foreach (
132
- array(
133
- 'wpglobus_language_code',
134
- 'wpglobus_flags',
135
- 'wpglobus_language_name',
136
- 'wpglobus_en_language_name',
137
- 'wpglobus_locale',
138
- ) as $var_name
139
- ) {
140
- if ( isset( $_POST[ $var_name ] ) && is_string( $_POST[ $var_name ] ) ) { // WPCS: input var ok, sanitization ok.
141
- $this->$var_name = sanitize_text_field( wp_unslash( $_POST[ $var_name ] ) ); // Input var okay.
142
- }
143
- }
144
- }
145
-
146
- /**
147
- * Getter.
148
- *
149
- * @return string
150
- */
151
- public function get_action() {
152
- return $this->action;
153
- }
154
-
155
- /**
156
- * Getter.
157
- *
158
- * @return string
159
- */
160
- public function get_lang() {
161
- return $this->lang;
162
- }
163
-
164
- /**
165
- * Getter.
166
- *
167
- * @return bool
168
- */
169
- public function is_submit() {
170
- return $this->is_submit;
171
- }
172
-
173
- /**
174
- * Getter.
175
- *
176
- * @return bool
177
- */
178
- public function is_delete() {
179
- return $this->is_delete;
180
- }
181
-
182
- /**
183
- * Getter.
184
- *
185
- * @return string
186
- */
187
- public function get_wpglobus_language_code() {
188
- return $this->wpglobus_language_code;
189
- }
190
-
191
- /**
192
- * Getter.
193
- *
194
- * @return string
195
- */
196
- public function get_wpglobus_flags() {
197
- return $this->wpglobus_flags;
198
- }
199
-
200
- /**
201
- * Getter.
202
- *
203
- * @return string
204
- */
205
- public function get_wpglobus_language_name() {
206
- return $this->wpglobus_language_name;
207
- }
208
-
209
- /**
210
- * Getter.
211
- *
212
- * @return string
213
- */
214
- public function get_wpglobus_en_language_name() {
215
- return $this->wpglobus_en_language_name;
216
- }
217
-
218
- /**
219
- * Getter.
220
- *
221
- * @return string
222
- */
223
- public function get_wpglobus_locale() {
224
- return $this->wpglobus_locale;
225
- }
226
-
227
- public static function url_language_add() {
228
- $url = add_query_arg( array(
229
- 'page' => WPGlobus::LANGUAGE_EDIT_PAGE,
230
- 'action' => self::ACTION_ADD,
231
- ), admin_url( 'admin.php' ) );
232
-
233
- return wp_nonce_url( $url, self::NONCE_ACTION );
234
- }
235
-
236
- public static function url_language_edit( $language_code ) {
237
- $url = add_query_arg( array(
238
- 'page' => WPGlobus::LANGUAGE_EDIT_PAGE,
239
- 'lang' => $language_code,
240
- 'action' => self::ACTION_EDIT,
241
- ), admin_url( 'admin.php' ) );
242
-
243
- return wp_nonce_url( $url, self::NONCE_ACTION );
244
- }
245
-
246
- public static function url_language_delete( $language_code ) {
247
- $url = add_query_arg( array(
248
- 'page' => WPGlobus::LANGUAGE_EDIT_PAGE,
249
- 'lang' => $language_code,
250
- 'action' => self::ACTION_DELETE,
251
- ), admin_url( 'admin.php' ) );
252
-
253
- return wp_nonce_url( $url, self::NONCE_ACTION );
254
- }
255
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/admin/class-wpglobus-language-edit.php DELETED
@@ -1,494 +0,0 @@
1
- <?php
2
- /**
3
- * WPGlobus / Admin / Language Edit
4
- *
5
- * @package WPGlobus\Admin
6
- */
7
-
8
- // Load the Request class.
9
- require_once dirname( __FILE__ ) . '/class-wpglobus-language-edit-request.php';
10
-
11
- /**
12
- * Class WPGlobus_Language_Edit
13
- */
14
- class WPGlobus_Language_Edit {
15
-
16
- /**
17
- * All flag files.
18
- *
19
- * @var array
20
- */
21
- protected $all_flags = array();
22
-
23
- /**
24
- * Current action
25
- *
26
- * @var string
27
- */
28
- protected $action = WPGlobus_Language_Edit_Request::ACTION_ADD;
29
-
30
- /**
31
- * Language code
32
- *
33
- * @var string
34
- */
35
- protected $language_code = '';
36
-
37
- /**
38
- * Language name
39
- *
40
- * @var string
41
- */
42
- protected $language_name = '';
43
-
44
- /**
45
- * Language name in English
46
- *
47
- * @var string
48
- */
49
- protected $en_language_name = '';
50
-
51
- /**
52
- * Locale
53
- *
54
- * @var string
55
- */
56
- protected $locale = '';
57
-
58
- /**
59
- * Flag for the current language
60
- *
61
- * @var string
62
- */
63
- protected $flag = '';
64
-
65
- /**
66
- * Set to true when the form is submitted
67
- *
68
- * @var bool
69
- */
70
- protected $submit = false;
71
-
72
- /**
73
- * Diagnostic messages
74
- *
75
- * @var string[]
76
- */
77
- protected $submit_messages = array();
78
-
79
- /**
80
- * The Request object
81
- *
82
- * @var WPGlobus_Language_Edit_Request
83
- */
84
- protected $request;
85
-
86
- /**
87
- * Constructor
88
- */
89
- public function __construct() {
90
-
91
- $this->request = new WPGlobus_Language_Edit_Request();
92
-
93
- if ( WPGlobus_Language_Edit_Request::ACTION_DELETE === $this->request->get_action() ) {
94
- $this->action = WPGlobus_Language_Edit_Request::ACTION_DELETE;
95
- } elseif ( WPGlobus_Language_Edit_Request::ACTION_EDIT === $this->request->get_action() ) {
96
- $this->action = WPGlobus_Language_Edit_Request::ACTION_EDIT;
97
- }
98
-
99
- $this->language_code = $this->request->get_lang();
100
-
101
- if ( $this->request->is_submit() ) {
102
- $this->submit = true;
103
- $this->process_submit();
104
- } elseif ( $this->request->is_delete() ) {
105
- $this->process_delete();
106
- $this->action = WPGlobus_Language_Edit_Request::ACTION_DONE;
107
- } else {
108
- $this->get_data();
109
- }
110
-
111
- if ( WPGlobus_Language_Edit_Request::ACTION_DONE !== $this->action ) {
112
- $this->display_table();
113
- }
114
-
115
- add_action( 'admin_footer', array( $this, 'on_print_scripts' ), 99 );
116
-
117
- }
118
-
119
- /**
120
- * Add script in admin footer
121
- */
122
- public function on_print_scripts() {
123
-
124
- if ( WPGlobus_Language_Edit_Request::ACTION_DONE === $this->action ) {
125
- $location = '?page=' . WPGlobus::OPTIONS_PAGE_SLUG;
126
- // @formatter:off
127
- ?>
128
- <script>jQuery(document).ready(function () {window.location = window.location.protocol + '//' + window.location.host + window.location.pathname + '<?php echo $location; // WPCS: XSS ok. ?>'});</script>
129
- <?php
130
- // @formatter:on
131
- }
132
-
133
- wp_enqueue_script(
134
- 'wpglobus-form',
135
- WPGlobus::plugin_dir_url() . 'includes/js/wpglobus-form' . WPGlobus::SCRIPT_SUFFIX() . '.js',
136
- array( 'jquery' ),
137
- WPGLOBUS_VERSION,
138
- true
139
- );
140
-
141
- }
142
-
143
- /**
144
- * Process delete language action
145
- */
146
- protected function process_delete() {
147
-
148
- $config = WPGlobus::Config();
149
-
150
- /**
151
- * Get options
152
- *
153
- * @var array
154
- */
155
- $opts = get_option( $config->option );
156
-
157
- if ( isset( $opts['enabled_languages'][ $this->language_code ] ) ) {
158
-
159
- unset( $opts['enabled_languages'][ $this->language_code ] );
160
-
161
- /** FIX: reset $opts['more_languages'] */
162
- if ( array_key_exists( 'more_languages', $opts ) ) {
163
- $opts['more_languages'] = '';
164
- }
165
- update_option( $config->option, $opts );
166
-
167
- }
168
-
169
- unset( $config->language_name[ $this->language_code ] );
170
- update_option( $config->option_language_names, $config->language_name );
171
-
172
- unset( $config->flag[ $this->language_code ] );
173
- update_option( $config->option_flags, $config->flag );
174
-
175
- unset( $config->en_language_name[ $this->language_code ] );
176
- update_option( $config->option_en_language_names, $config->en_language_name );
177
-
178
- unset( $config->locale[ $this->language_code ] );
179
- update_option( $config->option_locale, $config->locale );
180
-
181
- }
182
-
183
- /**
184
- * Process submit action
185
- */
186
- protected function process_submit() {
187
-
188
- $code = $this->request->get_wpglobus_language_code();
189
- if ( $code && $this->language_code === $code ) {
190
- if ( $this->check_fields( $code, false ) ) {
191
- $this->save();
192
- $this->submit_messages['success'][] = __( 'Options updated', 'wpglobus' );
193
- }
194
- } else {
195
- if ( $this->check_fields( $code ) ) {
196
- $this->save( true );
197
- $this->submit_messages['success'][] = __( 'Options updated', 'wpglobus' );
198
- }
199
- }
200
- $this->get_flags();
201
-
202
- }
203
-
204
- /**
205
- * Save data language to DB
206
- *
207
- * @param bool $update_code If need to change language code.
208
- */
209
- protected function save( $update_code = false ) {
210
-
211
- $config = WPGlobus::Config();
212
-
213
- $old_code = '';
214
- if ( $update_code && WPGlobus_Language_Edit_Request::ACTION_EDIT === $this->action ) {
215
- $old_code = $this->language_code ? $this->language_code : $old_code;
216
- if ( isset( $config->language_name[ $old_code ] ) ) {
217
- unset( $config->language_name[ $old_code ] );
218
- }
219
-
220
- /**
221
- * Get options
222
- *
223
- * @var array
224
- */
225
- $opts = get_option( $config->option );
226
- if ( isset( $opts['enabled_languages'][ $old_code ] ) ) {
227
- unset( $opts['enabled_languages'][ $old_code ] );
228
- update_option( $config->option, $opts );
229
- }
230
- if ( isset( $opts['more_languages'] ) && $old_code === $opts['more_languages'] ) {
231
- unset( $opts['more_languages'] );
232
- update_option( $config->option, $opts );
233
- }
234
- }
235
- $config->language_name[ $this->language_code ] = $this->language_name;
236
- update_option( $config->option_language_names, $config->language_name );
237
-
238
- if ( $update_code && isset( $config->flag[ $old_code ] ) ) {
239
- unset( $config->flag[ $old_code ] );
240
- }
241
- $config->flag[ $this->language_code ] = $this->flag;
242
- update_option( $config->option_flags, $config->flag );
243
-
244
- if ( $update_code && isset( $config->en_language_name[ $old_code ] ) ) {
245
- unset( $config->en_language_name[ $old_code ] );
246
- }
247
- $config->en_language_name[ $this->language_code ] = $this->en_language_name;
248
- update_option( $config->option_en_language_names, $config->en_language_name );
249
-
250
- if ( $update_code && isset( $config->locale[ $old_code ] ) ) {
251
- unset( $config->locale[ $old_code ] );
252
- }
253
- $config->locale[ $this->language_code ] = $this->locale;
254
- update_option( $config->option_locale, $config->locale );
255
-
256
- if ( $update_code ) {
257
- $this->action = WPGlobus_Language_Edit_Request::ACTION_DONE;
258
- }
259
- }
260
-
261
- /**
262
- * Check form fields
263
- *
264
- * @param string $lang_code Language code.
265
- * @param bool $check_code Use for language code existence check.
266
- *
267
- * @return bool True if no errors, false otherwise.
268
- */
269
- protected function check_fields( $lang_code, $check_code = true ) {
270
- $this->submit_messages['errors'] = array();
271
- if ( $check_code && empty( $lang_code ) ) {
272
- $this->submit_messages['errors'][] = __( 'Please enter a language code!', 'wpglobus' );
273
- }
274
-
275
- if ( $check_code && $this->language_exists( $lang_code ) ) {
276
- $this->submit_messages['errors'][] = __( 'Language code already exists!', 'wpglobus' );
277
- }
278
-
279
- if ( ! $this->request->get_wpglobus_flags() ) {
280
- $this->submit_messages['errors'][] = __( 'Please specify the language flag!', 'wpglobus' );
281
- }
282
-
283
- if ( ! $this->request->get_wpglobus_language_name() ) {
284
- $this->submit_messages['errors'][] = __( 'Please enter the language name!', 'wpglobus' );
285
- }
286
-
287
- if ( ! $this->request->get_wpglobus_en_language_name() ) {
288
- $this->submit_messages['errors'][] = __( 'Please enter the language name in English!', 'wpglobus' );
289
- }
290
-
291
- if ( ! $this->request->get_wpglobus_locale() ) {
292
- $this->submit_messages['errors'][] = __( 'Please enter the locale!', 'wpglobus' );
293
- }
294
-
295
- $this->language_code = $lang_code;
296
- $this->flag = $this->request->get_wpglobus_flags();
297
- $this->language_name = $this->request->get_wpglobus_language_name();
298
- $this->en_language_name = $this->request->get_wpglobus_en_language_name();
299
- $this->locale = $this->request->get_wpglobus_locale();
300
-
301
- if ( empty( $this->submit_messages['errors'] ) ) {
302
- return true;
303
- }
304
-
305
- return false;
306
- }
307
-
308
- /**
309
- * Check existing language code in global $WPGlobus_Config
310
- *
311
- * @param string $code Language code.
312
- *
313
- * @return bool true if language code exists
314
- */
315
- protected function language_exists( $code ) {
316
-
317
- if ( array_key_exists( $code, WPGlobus::Config()->language_name ) ) {
318
- return true;
319
- }
320
-
321
- return false;
322
- }
323
-
324
- /**
325
- * Get data for form fields
326
- */
327
- protected function get_data() {
328
-
329
- if ( WPGlobus_Language_Edit_Request::ACTION_EDIT === $this->action
330
- || WPGlobus_Language_Edit_Request::ACTION_DELETE === $this->action ) {
331
-
332
- $config = WPGlobus::Config();
333
-
334
- $this->language_name = $config->language_name[ $this->language_code ];
335
- $this->en_language_name = $config->en_language_name[ $this->language_code ];
336
- $this->locale = $config->locale[ $this->language_code ];
337
- $this->flag = $config->flag[ $this->language_code ];
338
- }
339
- $this->get_flags();
340
- }
341
-
342
- /**
343
- * Display language form
344
- */
345
- protected function display_table() {
346
-
347
- $disabled = '';
348
- if ( WPGlobus_Language_Edit_Request::ACTION_EDIT === $this->action ) {
349
- $header = __( 'Edit Language', 'wpglobus' );
350
- } elseif ( WPGlobus_Language_Edit_Request::ACTION_DELETE === $this->action ) {
351
- $header = __( 'Delete Language', 'wpglobus' );
352
- $disabled = 'disabled';
353
- } else {
354
- $header = __( 'Add Language', 'wpglobus' );
355
- }
356
- ?>
357
- <div class="wrap">
358
- <h1>WPGlobus: <?php echo esc_html( $header ); ?></h1>
359
- <?php
360
- if ( $this->submit ) {
361
- if ( ! empty( $this->submit_messages['errors'] ) ) {
362
- $mess = '';
363
- foreach ( $this->submit_messages['errors'] as $message ) {
364
- $mess .= $message . '<br />';
365
- }
366
- ?>
367
- <div class="error"><p><?php echo wp_kses( $mess, array( 'br' => array() ) ); ?></p></div>
368
- <?php
369
- } elseif ( ! empty( $this->submit_messages['success'] ) ) {
370
- $mess = '';
371
- foreach ( $this->submit_messages['success'] as $message ) {
372
- $mess .= $message . '<br />';
373
- }
374
- ?>
375
- <div class="updated"><p><?php echo wp_kses( $mess, array( 'br' => array() ) ); ?></p></div>
376
- <?php
377
- }
378
- }
379
- ?>
380
- <form id="wpglobus_edit_form" method="post" action="">
381
- <table class="form-table">
382
- <tr>
383
- <th scope="row"><label
384
- for="wpglobus_language_code"><?php esc_html_e( 'Language Code', 'wpglobus' ); ?></label>
385
- </th>
386
- <td>
387
- <input name="wpglobus_language_code" <?php echo esc_attr( $disabled ); ?> type="text"
388
- id="wpglobus_language_code"
389
- value="<?php echo esc_attr( $this->language_code ); ?>" class="regular-text"/>
390
-
391
- <p class="description"><?php esc_html_e( '2-Letter ISO Language Code for the Language you want to insert. (Example: en)', 'wpglobus' ); ?></p>
392
- </td>
393
- </tr>
394
- <tr>
395
- <th scope="row"><label
396
- for="wpglobus_flags"><?php esc_html_e( 'Language flag', 'wpglobus' ); ?></label>
397
- </th>
398
- <td>
399
- <select id="wpglobus_flags" name="wpglobus_flags" style="width:300px;"
400
- class="populate">
401
- <?php
402
- foreach ( $this->all_flags as $file_name ) :
403
- ?>
404
- <option <?php selected( $this->flag === $file_name ); ?>
405
- value="<?php echo esc_attr( $file_name ); ?>"><?php echo esc_html( $file_name ); ?></option>
406
- <?php endforeach; ?>
407
- </select>
408
- </td>
409
- </tr>
410
- <tr>
411
- <th scope="row"><label
412
- for="wpglobus_language_name"><?php esc_html_e( 'Name', 'wpglobus' ); ?></label>
413
- </th>
414
- <td><input name="wpglobus_language_name" type="text" id="wpglobus_language_name"
415
- value="<?php echo esc_attr( $this->language_name ); ?>" class="regular-text"/>
416
-
417
- <p class="description"><?php esc_html_e( 'The name of the language in its native alphabet. (Examples: English, Русский)', 'wpglobus' ); ?></p>
418
- </td>
419
- </tr>
420
- <tr>
421
- <th scope="row"><label
422
- for="wpglobus_en_language_name"><?php esc_html_e( 'Name in English', 'wpglobus' ); ?></label>
423
- </th>
424
- <td><input name="wpglobus_en_language_name" type="text" id="wpglobus_en_language_name"
425
- value="<?php echo esc_attr( $this->en_language_name ); ?>" class="regular-text"/>
426
-
427
- <p class="description"><?php esc_html_e( 'The name of the language in English', 'wpglobus' ); ?></p>
428
- </td>
429
- </tr>
430
- <tr>
431
- <th scope="row"><label
432
- for="wpglobus_locale"><?php esc_html_e( 'Locale', 'wpglobus' ); ?></label></th>
433
- <td><input name="wpglobus_locale" type="text" id="wpglobus_locale"
434
- value="<?php echo esc_attr( $this->locale ); ?>"
435
- class="regular-text"/>
436
-
437
- <p class="description"><?php esc_html_e( 'PHP/WordPress Locale of the language. (Examples: en_US, ru_RU)', 'wpglobus' ); ?></p>
438
- </td>
439
- </tr>
440
- </table>
441
- <?php
442
-
443
- if ( WPGlobus_Language_Edit_Request::ACTION_EDIT === $this->action
444
- || WPGlobus_Language_Edit_Request::ACTION_ADD === $this->action ) {
445
- ?>
446
- <input class="button button-primary" type="submit" name="submit"
447
- value="<?php esc_attr_e( 'Save Changes', 'wpglobus' ); ?>">
448
- <?php
449
-
450
- if ( WPGlobus_Language_Edit_Request::ACTION_EDIT === $this->action ) {
451
- ?>
452
-
453
- <a class="button button-link-delete" style="margin-left: 1em" href="<?php echo esc_url( WPGlobus_Language_Edit_Request::url_language_delete( $this->language_code ) ); ?>">
454
- <i class="dashicons dashicons-trash" style="margin-top: 4px;"></i>
455
- <?php esc_html_e( 'Delete Language', 'wpglobus' ); ?>&hellip;</a>
456
- <?php
457
- }
458
- } elseif ( WPGlobus_Language_Edit_Request::ACTION_DELETE === $this->action ) {
459
- ?>
460
- <div class="notice-large wp-ui-notification"><?php esc_html_e( 'Are you sure you want to delete?', 'wpglobus' ); ?></div>
461
- <p class="submit"><input class="button button-primary" type="submit" name="delete"
462
- value="<?php esc_attr_e( 'Delete Language', 'wpglobus' ); ?>"></p>
463
- <?php } ?>
464
-
465
- </form>
466
-
467
- <hr/>
468
- <span class="dashicons dashicons-admin-site"></span>
469
- <a href="<?php echo esc_url( WPGlobus_Admin_Page::url_settings() ); ?>">
470
- <?php esc_html_e( 'Back to the WPGlobus Settings', 'wpglobus' ); ?>
471
- </a>
472
- </div>
473
- <?php
474
- }
475
-
476
- /**
477
- * Get flag files from directory
478
- */
479
- protected function get_flags() {
480
-
481
- $dir = new DirectoryIterator( WPGlobus::plugin_dir_path() . 'flags/' );
482
-
483
- foreach ( $dir as $file ) {
484
- /**
485
- * File object
486
- *
487
- * @var DirectoryIterator $file
488
- */
489
- if ( $file->isFile() ) {
490
- $this->all_flags[] = $file->getFilename();
491
- }
492
- }
493
- }
494
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/admin/class-wpglobus-plugin-install.php DELETED
@@ -1,367 +0,0 @@
1
- <?php
2
- /**
3
- * File: class-wpglobus-plugin-install.php
4
- *
5
- * @since 1.5.9
6
- * @package WPGlobus\Admin
7
- */
8
-
9
- if ( ! class_exists( 'WPGlobus_Plugin_Install' ) ) :
10
-
11
- /**
12
- * Class WPGlobus_Plugin_Install
13
- */
14
- class WPGlobus_Plugin_Install {
15
-
16
- /**
17
- * Fake version for paid plugins to prevent the "Update Now" button from appearing.
18
- *
19
- * @var string
20
- */
21
- const FAKE_VERSION = '999';
22
-
23
- /**
24
- * Fake active installs for paid plugins.
25
- *
26
- * @var int
27
- */
28
- const FAKE_ACTIVE_INSTALLS = 0;
29
-
30
- /**
31
- * Fake "Compatible with your version of WordPress" for paid plugins.
32
- *
33
- * @var string
34
- */
35
- protected static $fake_compatible_with = '';
36
-
37
- /**
38
- * Array of plugin cards.
39
- *
40
- * @var array
41
- */
42
- static protected $plugin_card = array();
43
-
44
- /**
45
- * Array of paid plugins data.
46
- *
47
- * @var array
48
- */
49
- static protected $paid_plugins = array();
50
-
51
- /**
52
- * Array of free plugins data.
53
- *
54
- * @var array
55
- */
56
- static protected $free_plugins = array();
57
-
58
- /**
59
- * Controller.
60
- */
61
- public static function controller() {
62
-
63
- // phpcs:ignore WordPress.CSRF.NonceVerification.NoNonceVerification
64
- if ( empty( $_GET['s'] ) || 'wpglobus' !== strtolower( $_GET['s'] ) ) {
65
- return;
66
- }
67
-
68
- self::$fake_compatible_with = $GLOBALS['wp_version'];
69
-
70
- self::$plugin_card['free'] = array();
71
- self::$plugin_card['paid'] = array();
72
-
73
- self::setup_paid_plugins();
74
-
75
- // Enqueue the CSS & JS scripts.
76
- add_action( 'admin_enqueue_scripts', array( __CLASS__, 'enqueue_scripts' ) );
77
-
78
- add_filter( 'plugins_api_result', array( __CLASS__, 'filter__plugins_api_result' ), 10, 3 );
79
- }
80
-
81
- /**
82
- * List of the premium WPGlobus extensions.
83
- * This file is created manually.
84
- */
85
- protected static function setup_paid_plugins() {
86
-
87
- self::$paid_plugins = array();
88
-
89
- $data_file = WPGlobus::data_path() . '/paid_plugins.json';
90
-
91
- if ( is_readable( $data_file ) ) {
92
- $_json = file_get_contents( $data_file );
93
- self::$paid_plugins = json_decode( $_json, true );
94
- uasort( self::$paid_plugins, array( __CLASS__, 'sort_paid_plugins' ) );
95
- }
96
- }
97
-
98
- /**
99
- * Callback for sorting the paid_plugins array.
100
- *
101
- * @param array $a First.
102
- * @param array $b Second.
103
- *
104
- * @return int
105
- */
106
- public static function sort_paid_plugins( $a, $b ) {
107
- return ( $a['order'] < $b['order'] ) ? - 1 : 1;
108
- }
109
-
110
- /**
111
- * Filter api results
112
- *
113
- * @param stdClass|WP_Error $res Response object or WP_Error.
114
- * @param string $action The type of information being requested from the Plugin Install API.
115
- * @param stdClass $args Plugin API arguments.
116
- *
117
- * @return stdClass|WP_Error
118
- */
119
- public static function filter__plugins_api_result(
120
- $res,
121
- // @formatter:off
122
- /* @noinspection PhpUnusedParameterInspection */ $action,
123
- /* @noinspection PhpUnusedParameterInspection */ $args
124
- // @formatter:on
125
- ) {
126
-
127
- if ( is_wp_error( $res ) ) {
128
- return $res;
129
- }
130
-
131
- if ( empty( $res->plugins ) ) {
132
- return $res;
133
- }
134
-
135
- foreach ( (array) $res->plugins as $key => $plugin ) {
136
- if ( is_array( $plugin ) ) {
137
- /** @since 2.1.10 */
138
- $plugin = (object) $plugin;
139
- }
140
- if ( false === strpos( $plugin->slug, 'wpglobus' ) ) {
141
- unset( $res->plugins[ $key ] );
142
- } else {
143
-
144
- if ( 'wpglobus-for-black-studio-tinymce-widget' === $plugin->slug ) {
145
-
146
- /**
147
- * Set correct slug for the
148
- * `WPGlobus for Black Studio TinyMCE Widget` plugin.
149
- *
150
- * @since 1.6.3
151
- */
152
- $plugin->slug = 'wpglobus-for-black-studio-widget';
153
-
154
- self::$plugin_card['free'][] = $plugin->slug;
155
-
156
- self::$free_plugins[ $plugin->slug ]['extra_data']['correctLink'] = 'wpglobus-for-black-studio-tinymce-widget';
157
-
158
- } else {
159
- self::$plugin_card['free'][] = $plugin->slug;
160
- }
161
- }
162
- }
163
-
164
- $url_wpglobus_site = WPGlobus_Utils::url_wpglobus_site();
165
-
166
- $all_products = self::get_all_product_info();
167
-
168
- foreach ( self::$paid_plugins as $plugin => $plugin_data ) {
169
-
170
- $plugin_file = implode( '/', array( WP_PLUGIN_DIR, $plugin_data['slug'], $plugin_data['loader'] ) );
171
-
172
- if ( is_readable( $plugin_file ) ) {
173
- // Plugin is installed.
174
- self::$paid_plugins[ $plugin ]['plugin_data'] = get_plugin_data( $plugin_file, false );
175
- } else {
176
- self::$paid_plugins[ $plugin ]['plugin_data'] = null;
177
-
178
- $product_slug = ( isset( $plugin_data['product_slug'] ) ? $plugin_data['product_slug'] : $plugin );
179
-
180
- if ( isset( $all_products[ $product_slug ] ) ) {
181
- $plugin_info = $all_products[ $product_slug ];
182
-
183
- /**
184
- * Titles come as multilingual strings but only in 2 languages ['en','ru']
185
- * because the WPGlobus website has only those.
186
- * So we need to force `en` language code if the admin language
187
- * is out of the list.
188
- */
189
- $language = WPGlobus::Config()->language;
190
- if ( ! in_array( $language, array( 'en', 'ru' ), true ) ) {
191
- $language = 'en';
192
- }
193
- $_plugin_title = WPGlobus_Core::text_filter( $plugin_info['title'], $language );
194
-
195
- self::$paid_plugins[ $plugin ]['plugin_data'] = array(
196
- 'Description' => '', // TODO.
197
- 'Name' => $_plugin_title,
198
- 'Title' => $_plugin_title,
199
- 'Version' => $plugin_info['_api_new_version'],
200
- 'PluginURI' => $url_wpglobus_site . 'product/' .
201
- $product_slug . '/',
202
- );
203
- }
204
- }
205
- }
206
-
207
- /**
208
- * Prepend the premium add-ons to the list of plugins.
209
- */
210
- foreach ( self::$paid_plugins as $slug => $paid_plugin ) {
211
-
212
- $info = self::plugin_info_template();
213
-
214
- $info->slug = $slug;
215
-
216
- /**
217
- * @since 2.6.4
218
- */
219
- $internal_image = true;
220
- foreach( array( 'http://', 'https://' ) as $_scheme ) {
221
- if ( false !== strpos( $paid_plugin['image_file'], $_scheme ) ) {
222
- $internal_image = false;
223
- }
224
- }
225
-
226
- if ( $internal_image ) {
227
- $info->icons['default'] = WPGlobus::internal_images_url() . '/' . $paid_plugin['image_file'];
228
- } else {
229
- $info->icons['default'] = $paid_plugin['image_file'];
230
- }
231
- $info->icons['1x'] = $info->icons['default'];
232
- $info->icons['2x'] = $info->icons['default'];
233
-
234
- if ( ! empty( $paid_plugin['plugin_data'] ) ) {
235
- $info->name = $paid_plugin['plugin_data']['Name'];
236
- $info->short_description = $paid_plugin['plugin_data']['Description'];
237
- $info->homepage = $paid_plugin['plugin_data']['PluginURI'];
238
- } else {
239
- $info->name = $slug;
240
- }
241
-
242
- self::$plugin_card['paid'][] = $slug;
243
-
244
- self::$paid_plugins[ $slug ]['card'] = $info;
245
-
246
- self::$paid_plugins[ $slug ]['extra_data']['product_url'] =
247
- self::$paid_plugins[ $slug ]['extra_data']['details_url'] =
248
- $info->homepage;
249
-
250
- /**
251
- * @since 2.4.2
252
- */
253
- if ( isset( $paid_plugin['available'] ) && ( empty( $paid_plugin['available'] ) || false === $paid_plugin['available'] ) ) {
254
- // Don't add unavailable plugin in response.
255
- } else {
256
- array_unshift( $res->plugins, $info );
257
- }
258
- }
259
-
260
- $res->info['results'] = count( $res->plugins );
261
-
262
- return $res;
263
- }
264
-
265
- /**
266
- * Get information about all premium plugins.
267
- * This file is created automatically at build. Do not edit!
268
- *
269
- * @return array[]
270
- */
271
- protected static function get_all_product_info() {
272
- $all_product_info = array();
273
-
274
- $data_file = WPGlobus::data_path() . '/wpglobus-product-info.json';
275
-
276
- if ( is_readable( $data_file ) ) {
277
- $all_product_info_json = file_get_contents( $data_file );
278
- $all_product_info = json_decode( $all_product_info_json, true );
279
- }
280
-
281
- return $all_product_info;
282
- }
283
-
284
- /**
285
- * Template for plugin info.
286
- *
287
- * @return stdClass
288
- */
289
- protected static function plugin_info_template() {
290
- $url_wpglobus_site = WPGlobus_Utils::url_wpglobus_site();
291
-
292
- $template = new stdClass();
293
- $template->name = '';
294
- $template->short_description = '';
295
- $template->author = '<a href="' . $url_wpglobus_site . '">WPGlobus</a>';
296
- $template->author_profile = $url_wpglobus_site;
297
- $template->homepage = $url_wpglobus_site;
298
- $template->slug = '';
299
- $template->rating = 100;
300
- $template->num_ratings = 0;
301
- $template->active_installs = self::FAKE_ACTIVE_INSTALLS;
302
- $template->version = self::FAKE_VERSION;
303
- $template->tested = self::$fake_compatible_with;
304
- $template->icons['default'] = '';
305
- $template->icons['2x'] = '';
306
- $template->icons['1x'] = '';
307
- $template->last_updated = date( 'c' );
308
-
309
- return $template;
310
- }
311
-
312
- /**
313
- * Enqueue admin JS scripts.
314
- *
315
- * @param string $hook_page The current admin page.
316
- */
317
- public static function enqueue_scripts( $hook_page ) {
318
-
319
- if ( 'plugin-install.php' === $hook_page ) {
320
-
321
- $i18n = array();
322
- $i18n['current_version'] = esc_html__( 'Current Version', 'wpglobus' );
323
- $i18n['card_header'] = esc_html__( 'Premium add-on', 'wpglobus' );
324
- $i18n['installed'] = esc_html__( 'Installed', 'wpglobus' );
325
-
326
- /**
327
- * Fix for '&nbsp;!' in French translation.
328
- *
329
- * @since 2.5.20
330
- */
331
- $i18n['get_it'] = html_entity_decode( __( 'Get it now!', 'wpglobus' ) );
332
-
333
- /**
334
- * Link to the installation instructions.
335
- *
336
- * @since 2.4.3
337
- */
338
- // translators: placeholders are for the HTML tags.
339
- $pre_addons_info = esc_html__( 'If you have already purchased a WPGlobus premium extension, please read %1$sthe installation instructions here%2$s', 'wpglobus' );
340
- $i18n['pre_addons_info'] = sprintf( $pre_addons_info, '<a href="' . WPGlobus::URL_WPGLOBUS_SITE . 'extensions/how-to-install/" target="_blank" style="color:#fff;">', '</a>' );
341
-
342
- wp_register_script(
343
- 'wpglobus-plugin-install',
344
- WPGlobus::$PLUGIN_DIR_URL . '/includes/js/wpglobus-plugin-install' . WPGlobus::SCRIPT_SUFFIX() . '.js',
345
- array( 'jquery' ),
346
- WPGLOBUS_VERSION,
347
- true
348
- );
349
- wp_enqueue_script( 'wpglobus-plugin-install' );
350
- wp_localize_script(
351
- 'wpglobus-plugin-install',
352
- 'WPGlobusPluginInstall',
353
- array(
354
- 'version' => WPGLOBUS_VERSION,
355
- 'hookPage' => $hook_page,
356
- 'pluginCard' => self::$plugin_card,
357
- 'pluginData' => array_merge( self::$paid_plugins, self::$free_plugins ),
358
- 'i18n' => $i18n,
359
- )
360
- );
361
- }
362
- }
363
- }
364
-
365
- endif;
366
-
367
- # --- EOF
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/admin/customize/class-wpglobus-customize-themes.php DELETED
@@ -1,88 +0,0 @@
1
- <?php
2
- /**
3
- * File: class-wpglobus-customize-themes.php
4
- *
5
- * WPGlobus Customize Themes.
6
- *
7
- * @package WPGlobus
8
- * @since 1.9.12
9
- */
10
-
11
- /**
12
- * Class WPGlobus_Customize_Themes.
13
- */
14
- if ( ! class_exists('WPGlobus_Customize_Themes') ) :
15
-
16
- class WPGlobus_Customize_Themes {
17
-
18
- /**
19
- * Current theme.
20
- */
21
- protected static $current_theme = null;
22
-
23
- /**
24
- * Names of disabled themes in lowercase format.
25
- *
26
- * @var string[]
27
- */
28
- protected static $disabled_themes = array(
29
- 'customizr',
30
- 'customizr pro',
31
- 'experon',
32
- 'gwangi', // @since 2.3.12
33
- 'newyork city', // @since 2.5.21
34
- );
35
-
36
- /**
37
- * Get disabled themes.
38
- *
39
- * @return string[]
40
- */
41
- public static function disabled_themes() {
42
- $disabled_themes = self::$disabled_themes;
43
- return $disabled_themes;
44
- }
45
-
46
- /**
47
- * Get current theme name.
48
- */
49
- public static function current_theme() {
50
- if ( is_null(self::$current_theme) ) {
51
- self::$current_theme = wp_get_theme();
52
- }
53
- return self::get_theme( 'name' );
54
- }
55
-
56
- /**
57
- * Get current theme or its property.
58
- *
59
- * @param string $param
60
- *
61
- * @return string|WP_Theme
62
- */
63
- public static function get_theme( $param = '' ) {
64
- if ( is_null(self::$current_theme) ) {
65
- self::$current_theme = wp_get_theme();
66
- }
67
- if ( 'name' === $param ) {
68
- return self::$current_theme->name;
69
- }
70
-
71
- return self::$current_theme;
72
-
73
- }
74
-
75
- /**
76
- * Get current theme in lowercase.
77
- *
78
- * @return string
79
- */
80
- public static function get_theme_name_lc() {
81
- return strtolower( self::get_theme( 'name' ) );
82
- }
83
-
84
- }
85
-
86
- endif;
87
-
88
- # --- EOF
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/admin/customize/class-wpglobus-customize140.php DELETED
@@ -1,282 +0,0 @@
1
- <?php
2
- /**
3
- * Multilingual Customizer
4
- * @package WPGlobus\Admin\Customizer
5
- * @since 1.4.0
6
- */
7
-
8
- if ( ! class_exists( 'WPGlobus_Customize' ) ) :
9
-
10
- /**
11
- * Class WPGlobus_Customize
12
- */
13
- class WPGlobus_Customize {
14
-
15
- public static function controller() {
16
- /**
17
- * @see \WP_Customize_Manager::wp_loaded
18
- * It calls the `customize_register` action first,
19
- * and then - the `customize_preview_init` action
20
- */
21
- /*
22
- add_action( 'customize_register', array(
23
- 'WPGlobus_Customize',
24
- 'action__customize_register'
25
- ) ); */
26
-
27
- /**
28
- * @since 1.5.0
29
- */
30
- if ( WPGlobus_WP::is_pagenow( 'customize.php' ) ) {
31
- require_once 'wpglobus-customize-filters.php';
32
- }
33
-
34
- add_action( 'customize_preview_init', array(
35
- 'WPGlobus_Customize',
36
- 'action__customize_preview_init'
37
- ) );
38
-
39
- /**
40
- * This is called by wp-admin/customize.php
41
- */
42
- add_action( 'customize_controls_enqueue_scripts', array(
43
- 'WPGlobus_Customize',
44
- 'action__customize_controls_enqueue_scripts'
45
- ), 1000 );
46
-
47
- if ( WPGlobus_WP::is_admin_doing_ajax() ) {
48
- add_filter( 'clean_url', array(
49
- 'WPGlobus_Customize',
50
- 'filter__clean_url'
51
- ), 10, 2 );
52
- }
53
-
54
- }
55
-
56
- /**
57
- * Filter a string to check translations for URL.
58
- * // We build multilingual URLs in customizer using the ':::' delimiter.
59
- * We build multilingual URLs in customizer using the '|||' delimiter.
60
- * See wpglobus-customize-control.js
61
- *
62
- * @note To work correctly, value of $url should begin with URL for default language.
63
- * @see esc_url() - the 'clean_url' filter
64
- * @since 1.3.0
65
- *
66
- * @param string $url The cleaned URL.
67
- * @param string $original_url The URL prior to cleaning.
68
- *
69
- * @return string
70
- */
71
- public static function filter__clean_url( $url, $original_url ) {
72
-
73
- if ( false !== strpos( $original_url, '|||' ) ) {
74
- $arr1 = array();
75
- $arr = explode( '|||', $original_url );
76
- foreach ( $arr as $k => $val ) {
77
- // Note: 'null' is a string, not real `null`.
78
- if ( 'null' !== $val ) {
79
- $arr1[ WPGlobus::Config()->enabled_languages[ $k ] ] = $val;
80
- }
81
- }
82
- return WPGlobus_Utils::build_multilingual_string( $arr1 );
83
- }
84
-
85
- return $url;
86
- }
87
-
88
- /**
89
- * Add multilingual controls.
90
- * The original controls will be hidden.
91
- * @param WP_Customize_Manager $wp_customize
92
- */
93
- public static function action__customize_register( WP_Customize_Manager $wp_customize ) {}
94
-
95
- /**
96
- * Load Customize Preview JS
97
- * Used by hook: 'customize_preview_init'
98
- * @see 'customize_preview_init'
99
- */
100
- public static function action__customize_preview_init() {
101
- wp_enqueue_script(
102
- 'wpglobus-customize-preview',
103
- WPGlobus::$PLUGIN_DIR_URL . 'includes/js/wpglobus-customize-preview' .
104
- WPGlobus::SCRIPT_SUFFIX() . '.js',
105
- array( 'jquery', 'customize-preview' ),
106
- WPGLOBUS_VERSION,
107
- true
108
- );
109
- wp_localize_script(
110
- 'wpglobus-customize-preview',
111
- 'WPGlobusCustomize',
112
- array(
113
- 'version' => WPGLOBUS_VERSION,
114
- 'blogname' => WPGlobus_Core::text_filter( get_option( 'blogname' ), WPGlobus::Config()->language ),
115
- 'blogdescription' => WPGlobus_Core::text_filter( get_option( 'blogdescription' ), WPGlobus::Config()->language )
116
- )
117
- );
118
- }
119
-
120
- /**
121
- * Load Customize Control JS
122
- */
123
- public static function action__customize_controls_enqueue_scripts() {
124
-
125
- /**
126
- * @see wp.customize.control elements
127
- * for example wp.customize.control('blogname');
128
- */
129
- $disabled_setting_mask = array();
130
-
131
- /** navigation menu elements */
132
- $disabled_setting_mask[] = 'nav_menu_item';
133
- $disabled_setting_mask[] = 'nav_menu[';
134
- $disabled_setting_mask[] = 'nav_menu_locations';
135
- $disabled_setting_mask[] = 'new_menu_name';
136
-
137
- /** widgets */
138
- $disabled_setting_mask[] = 'widgets';
139
-
140
- /** color elements */
141
- $disabled_setting_mask[] = 'color';
142
-
143
- /** yoast seo */
144
- $disabled_setting_mask[] = 'wpseo';
145
-
146
- /** css elements */
147
- $disabled_setting_mask[] = 'css';
148
-
149
- /** social networks elements */
150
- $disabled_setting_mask[] = 'facebook';
151
- $disabled_setting_mask[] = 'twitter';
152
- $disabled_setting_mask[] = 'linkedin';
153
- $disabled_setting_mask[] = 'behance';
154
- $disabled_setting_mask[] = 'dribbble';
155
- $disabled_setting_mask[] = 'instagram';
156
- /** since 1.4.4 */
157
- $disabled_setting_mask[] = 'tumblr';
158
- $disabled_setting_mask[] = 'flickr';
159
- $disabled_setting_mask[] = 'wordpress';
160
- $disabled_setting_mask[] = 'youtube';
161
- $disabled_setting_mask[] = 'pinterest';
162
- $disabled_setting_mask[] = 'github';
163
- $disabled_setting_mask[] = 'rss';
164
- $disabled_setting_mask[] = 'google';
165
- $disabled_setting_mask[] = 'email';
166
- /** since 1.5.9 */
167
- $disabled_setting_mask[] = 'dropbox';
168
- $disabled_setting_mask[] = 'foursquare';
169
- $disabled_setting_mask[] = 'vine';
170
- $disabled_setting_mask[] = 'vimeo';
171
- /** since 1.6.0 */
172
- $disabled_setting_mask[] = 'yelp';
173
-
174
- /**
175
- * Filter to disable fields in customizer.
176
- * @see wp.customize.control elements
177
- * Returning array.
178
- * @since 1.4.0
179
- *
180
- * @param array $disabled_setting_mask An array of disabled masks.
181
- */
182
- $disabled_setting_mask = apply_filters( 'wpglobus_customize_disabled_setting_mask', $disabled_setting_mask );
183
-
184
- $element_selector = array( 'input[type=text]', 'textarea' );
185
-
186
- /**
187
- * Filter for element selectors.
188
- * Returning array.
189
- * @since 1.4.0
190
- *
191
- * @param array $element_selector An array of selectors.
192
- */
193
- $element_selector = apply_filters( 'wpglobus_customize_element_selector', $element_selector );
194
-
195
- $set_link_by = array( 'link', 'url' );
196
-
197
- /**
198
- * Filter of masks to determine links.
199
- * @see value data-customize-setting-link of element
200
- * Returning array.
201
- * @since 1.4.0
202
- *
203
- * @param array $set_link_by An array of masks.
204
- */
205
- $set_link_by = apply_filters( 'wpglobus_customize_setlinkby', $set_link_by );
206
-
207
- /**
208
- * Filter of disabled sections.
209
- *
210
- * Returning array.
211
- * @since 1.5.0
212
- *
213
- * @param array $disabled_sections An array of sections.
214
- */
215
- $disabled_sections = array();
216
-
217
- $disabled_sections = apply_filters( 'wpglobus_customize_disabled_sections', $disabled_sections );
218
-
219
- /**
220
- * Generate language select button for customizer
221
- * @since 1.6.0
222
- *
223
- * @todo http://stackoverflow.com/questions/9607252/how-to-detect-when-an-element-over-another-element-in-javascript
224
- */
225
- $attributes['href'] = '#';
226
- $attributes['style'] = 'margin-left:48px;';
227
- $attributes['class'] = 'customize-controls-close wpglobus-customize-selector';
228
-
229
- /**
230
- * Filter of attributes to generate language selector button.
231
- * For example @see Divi theme http://www.elegantthemes.com/gallery/divi/ .
232
- *
233
- * Returning array.
234
- * @since 1.6.0
235
- *
236
- * @param array $attributes An array of attributes.
237
- * @param string Name of current theme.
238
- */
239
- $attributes = apply_filters( 'wpglobus_customize_language_selector_attrs', $attributes, WPGlobus_Customize_Options::get_theme( 'name' ) );
240
-
241
- $string = '';
242
-
243
- foreach ( $attributes as $attribute => $value ) {
244
- if ( null !== $value ){
245
- $string .= esc_attr( $attribute ) . '="' . esc_attr( $value ) . '" ';
246
- }
247
- }
248
-
249
- $selector_button = sprintf(
250
- '<a %1$s>%2$s</a>',
251
- trim( $string ),
252
- '<span class="wpglobus-globe"></span>'
253
- );
254
-
255
- wp_enqueue_script(
256
- 'wpglobus-customize-control140',
257
- WPGlobus::$PLUGIN_DIR_URL . 'includes/js/wpglobus-customize-control140' . WPGlobus::SCRIPT_SUFFIX() . '.js',
258
- array( 'jquery' ),
259
- WPGLOBUS_VERSION,
260
- true
261
- );
262
- wp_localize_script(
263
- 'wpglobus-customize-control140',
264
- 'WPGlobusCustomize',
265
- array(
266
- 'version' => WPGLOBUS_VERSION,
267
- 'selectorButton' => $selector_button,
268
- 'languageAdmin' => WPGlobus::Config()->language,
269
- 'disabledSettingMask' => $disabled_setting_mask,
270
- 'elementSelector' => $element_selector,
271
- 'setLinkBy' => $set_link_by,
272
- 'disabledSections' => $disabled_sections,
273
- 'controlClass' => 'wpglobus-customize-control',
274
- )
275
- );
276
-
277
- }
278
-
279
- } // class
280
-
281
- endif;
282
- # --- EOF
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/admin/customize/class-wpglobus-customize170.php DELETED
@@ -1,300 +0,0 @@
1
- <?php
2
- /**
3
- * Multilingual Customizer
4
- * @package WPGlobus\Admin\Customizer
5
- * @since 1.7.0
6
- */
7
-
8
- if ( ! class_exists( 'WPGlobus_Customize' ) ) :
9
-
10
- /**
11
- * Class WPGlobus_Customize
12
- */
13
- class WPGlobus_Customize {
14
-
15
- public static function controller() {
16
- /**
17
- * @see \WP_Customize_Manager::wp_loaded
18
- * It calls the `customize_register` action first,
19
- * and then - the `customize_preview_init` action
20
- */
21
- /*
22
- add_action( 'customize_register', array(
23
- 'WPGlobus_Customize',
24
- 'action__customize_register'
25
- ) ); */
26
-
27
- /**
28
- * @since 1.5.0
29
- */
30
- if ( WPGlobus_WP::is_pagenow( 'customize.php' ) ) {
31
- require_once 'wpglobus-customize-filters.php';
32
- }
33
-
34
- add_action( 'customize_preview_init', array(
35
- 'WPGlobus_Customize',
36
- 'action__customize_preview_init'
37
- ) );
38
-
39
- /**
40
- * This is called by wp-admin/customize.php
41
- */
42
- add_action( 'customize_controls_enqueue_scripts', array(
43
- 'WPGlobus_Customize',
44
- 'action__customize_controls_enqueue_scripts'
45
- ), 1000 );
46
-
47
- if ( WPGlobus_WP::is_admin_doing_ajax() ) {
48
- add_filter( 'clean_url', array(
49
- 'WPGlobus_Customize',
50
- 'filter__clean_url'
51
- ), 10, 2 );
52
- }
53
-
54
- }
55
-
56
- /**
57
- * Filter a string to check translations for URL.
58
- * // We build multilingual URLs in customizer using the ':::' delimiter.
59
- * We build multilingual URLs in customizer using the '|||' delimiter.
60
- * See wpglobus-customize-control.js
61
- *
62
- * @note To work correctly, value of $url should begin with URL for default language.
63
- * @see esc_url() - the 'clean_url' filter
64
- * @since 1.3.0
65
- *
66
- * @param string $url The cleaned URL.
67
- * @param string $original_url The URL prior to cleaning.
68
- *
69
- * @return string
70
- */
71
- public static function filter__clean_url( $url, $original_url ) {
72
-
73
- if ( false !== strpos( $original_url, '|||' ) ) {
74
- $arr1 = array();
75
- $arr = explode( '|||', $original_url );
76
- foreach ( $arr as $k => $val ) {
77
- // Note: 'null' is a string, not real `null`.
78
- if ( 'null' !== $val ) {
79
- $arr1[ WPGlobus::Config()->enabled_languages[ $k ] ] = $val;
80
- }
81
- }
82
- return WPGlobus_Utils::build_multilingual_string( $arr1 );
83
- }
84
-
85
- return $url;
86
- }
87
-
88
- /**
89
- * Add multilingual controls.
90
- * The original controls will be hidden.
91
- * @param WP_Customize_Manager $wp_customize
92
- */
93
- public static function action__customize_register( WP_Customize_Manager $wp_customize ) {}
94
-
95
- /**
96
- * Load Customize Preview JS
97
- * Used by hook: 'customize_preview_init'
98
- * @see 'customize_preview_init'
99
- */
100
- public static function action__customize_preview_init() {
101
- wp_enqueue_script(
102
- 'wpglobus-customize-preview',
103
- WPGlobus::$PLUGIN_DIR_URL . 'includes/js/wpglobus-customize-preview' .
104
- WPGlobus::SCRIPT_SUFFIX() . '.js',
105
- array( 'jquery', 'customize-preview' ),
106
- WPGLOBUS_VERSION,
107
- true
108
- );
109
- wp_localize_script(
110
- 'wpglobus-customize-preview',
111
- 'WPGlobusCustomize',
112
- array(
113
- 'version' => WPGLOBUS_VERSION,
114
- 'blogname' => WPGlobus_Core::text_filter( get_option( 'blogname' ), WPGlobus::Config()->language ),
115
- 'blogdescription' => WPGlobus_Core::text_filter( get_option( 'blogdescription' ), WPGlobus::Config()->language )
116
- )
117
- );
118
- }
119
-
120
- /**
121
- * Load Customize Control JS
122
- */
123
- public static function action__customize_controls_enqueue_scripts() {
124
-
125
- /**
126
- * @see wp.customize.control elements
127
- * for example wp.customize.control('blogname');
128
- */
129
- $disabled_setting_mask = array();
130
-
131
- /** navigation menu elements */
132
- $disabled_setting_mask[] = 'nav_menu_item';
133
- $disabled_setting_mask[] = 'nav_menu[';
134
- $disabled_setting_mask[] = 'nav_menu_locations';
135
- $disabled_setting_mask[] = 'new_menu_name';
136
-
137
- /** widgets */
138
- $disabled_setting_mask[] = 'widgets';
139
-
140
- /** color elements */
141
- $disabled_setting_mask[] = 'color';
142
-
143
- /** yoast seo */
144
- $disabled_setting_mask[] = 'wpseo';
145
-
146
- /** css elements */
147
- $disabled_setting_mask[] = 'css';
148
-
149
- /** social networks elements */
150
- $disabled_setting_mask[] = 'facebook';
151
- $disabled_setting_mask[] = 'twitter';
152
- $disabled_setting_mask[] = 'linkedin';
153
- $disabled_setting_mask[] = 'behance';
154
- $disabled_setting_mask[] = 'dribbble';
155
- $disabled_setting_mask[] = 'instagram';
156
- /** since 1.4.4 */
157
- $disabled_setting_mask[] = 'tumblr';
158
- $disabled_setting_mask[] = 'flickr';
159
- $disabled_setting_mask[] = 'wordpress';
160
- $disabled_setting_mask[] = 'youtube';
161
- $disabled_setting_mask[] = 'pinterest';
162
- $disabled_setting_mask[] = 'github';
163
- $disabled_setting_mask[] = 'rss';
164
- $disabled_setting_mask[] = 'google';
165
- $disabled_setting_mask[] = 'email';
166
- /** since 1.5.9 */
167
- $disabled_setting_mask[] = 'dropbox';
168
- $disabled_setting_mask[] = 'foursquare';
169
- $disabled_setting_mask[] = 'vine';
170
- $disabled_setting_mask[] = 'vimeo';
171
- /** since 1.6.0 */
172
- $disabled_setting_mask[] = 'yelp';
173
-
174
- /**
175
- * Exclude fields from Static Front Page section.
176
- * It may be added to customizer in many themes.
177
- *
178
- * @since 1.7.6
179
- */
180
- $disabled_setting_mask[] = 'page_on_front';
181
- $disabled_setting_mask[] = 'page_for_posts';
182
-
183
- /**
184
- * Filter to disable fields in customizer.
185
- * @see wp.customize.control elements
186
- * Returning array.
187
- * @since 1.4.0
188
- *
189
- * @param array $disabled_setting_mask An array of disabled masks.
190
- */
191
- $disabled_setting_mask = apply_filters( 'wpglobus_customize_disabled_setting_mask', $disabled_setting_mask );
192
-
193
- $element_selector = array( 'input[type=text]', 'textarea' );
194
-
195
- /**
196
- * Filter for element selectors.
197
- * Returning array.
198
- * @since 1.4.0
199
- *
200
- * @param array $element_selector An array of selectors.
201
- */
202
- $element_selector = apply_filters( 'wpglobus_customize_element_selector', $element_selector );
203
-
204
- $set_link_by = array( 'link', 'url' );
205
-
206
- /**
207
- * Filter of masks to determine links.
208
- * @see value data-customize-setting-link of element
209
- * Returning array.
210
- * @since 1.4.0
211
- *
212
- * @param array $set_link_by An array of masks.
213
- */
214
- $set_link_by = apply_filters( 'wpglobus_customize_setlinkby', $set_link_by );
215
-
216
- /**
217
- * Filter of disabled sections.
218
- *
219
- * Returning array.
220
- * @since 1.5.0
221
- *
222
- * @param array $disabled_sections An array of sections.
223
- */
224
- $disabled_sections = array();
225
-
226
- $disabled_sections = apply_filters( 'wpglobus_customize_disabled_sections', $disabled_sections );
227
-
228
- /**
229
- * Generate language select button for customizer
230
- * @since 1.6.0
231
- *
232
- * @todo http://stackoverflow.com/questions/9607252/how-to-detect-when-an-element-over-another-element-in-javascript
233
- */
234
- $attributes['href'] = '#';
235
- $attributes['style'] = 'margin-left:48px;';
236
- $attributes['class'] = 'customize-controls-close wpglobus-customize-selector';
237
-
238
- /**
239
- * Filter of attributes to generate language selector button.
240
- * For example @see Divi theme http://www.elegantthemes.com/gallery/divi/ .
241
- *
242
- * Returning array.
243
- * @since 1.6.0
244
- *
245
- * @param array $attributes An array of attributes.
246
- * @param string Name of current theme.
247
- */
248
- $attributes = apply_filters( 'wpglobus_customize_language_selector_attrs', $attributes, WPGlobus_Customize_Options::get_theme( 'name' ) );
249
-
250
- $string = '';
251
-
252
- foreach ( $attributes as $attribute => $value ) {
253
- if ( null !== $value ){
254
- $string .= esc_attr( $attribute ) . '="' . esc_attr( $value ) . '" ';
255
- }
256
- }
257
-
258
- $selector_button = sprintf(
259
- '<a %1$s>%2$s</a>',
260
- trim( $string ),
261
- '<span class="wpglobus-globe"></span>'
262
- );
263
-
264
- /**
265
- * Since 1.7.9
266
- */
267
- $changeset_uuid = null;
268
- if ( ! empty( $_GET['changeset_uuid'] ) ) { // WPCS: input var ok, sanitization ok.
269
- $changeset_uuid = sanitize_text_field( wp_unslash( $_GET['changeset_uuid'] ) ); // WPCS: input var ok.
270
- }
271
-
272
- wp_enqueue_script(
273
- 'wpglobus-customize-control170',
274
- WPGlobus::$PLUGIN_DIR_URL . 'includes/js/wpglobus-customize-control170' . WPGlobus::SCRIPT_SUFFIX() . '.js',
275
- array( 'jquery' ),
276
- WPGLOBUS_VERSION,
277
- true
278
- );
279
- wp_localize_script(
280
- 'wpglobus-customize-control170',
281
- 'WPGlobusCustomize',
282
- array(
283
- 'version' => WPGLOBUS_VERSION,
284
- 'selectorButton' => $selector_button,
285
- 'languageAdmin' => WPGlobus::Config()->language,
286
- 'disabledSettingMask' => $disabled_setting_mask,
287
- 'elementSelector' => $element_selector,
288
- 'setLinkBy' => $set_link_by,
289
- 'disabledSections' => $disabled_sections,
290
- 'controlClass' => 'wpglobus-customize-control',
291
- 'changeset_uuid' => $changeset_uuid
292
- )
293
- );
294
-
295
- }
296
-
297
- } // class
298
-
299
- endif;
300
- # --- EOF
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/admin/customize/class-wpglobus-customize190.php DELETED
@@ -1,555 +0,0 @@
1
- <?php
2
- /**
3
- * Multilingual Customizer.
4
- *
5
- * @since 1.9.0
6
- *
7
- * @package WPGlobus\Admin\Customizer
8
- */
9
-
10
- if ( ! class_exists( 'WPGlobus_Customize' ) ) :
11
-
12
- /**
13
- * Class WPGlobus_Customize
14
- */
15
- class WPGlobus_Customize {
16
-
17
- /**
18
- * Controller.
19
- */
20
- public static function controller() {
21
-
22
- add_action( 'admin_init', array( __CLASS__, 'on__admin_init' ), 1 );
23
-
24
- /**
25
- * It calls the `customize_register` action first,
26
- * and then - the `customize_preview_init` action.
27
- *
28
- * @see \WP_Customize_Manager::wp_loaded
29
- *
30
- * add_action( 'customize_register', array(
31
- * 'WPGlobus_Customize',
32
- * 'action__customize_register'
33
- * ) );
34
- */
35
-
36
- /**
37
- * Customizer filters.
38
- *
39
- * @since 1.5.0
40
- */
41
- if ( WPGlobus_WP::is_pagenow( 'customize.php' ) ) {
42
- require_once 'wpglobus-customize-filters.php';
43
- }
44
-
45
- add_action(
46
- 'customize_preview_init',
47
- array( 'WPGlobus_Customize', 'action__customize_preview_init' )
48
- );
49
-
50
- /**
51
- * This is called by wp-admin/customize.php
52
- */
53
- add_action(
54
- 'customize_controls_enqueue_scripts',
55
- array( 'WPGlobus_Customize', 'action__customize_controls_enqueue_scripts' ),
56
- 1000
57
- );
58
-
59
- if ( WPGlobus_WP::is_admin_doing_ajax() ) {
60
- add_filter(
61
- 'clean_url',
62
- array( 'WPGlobus_Customize', 'filter__clean_url' ),
63
- 10,
64
- 2
65
- );
66
- }
67
-
68
- /**
69
- * Filter customize_changeset_save_data.
70
- *
71
- * @see wp-includes\class-wp-customize-manager.php
72
- * @since 1.9.3
73
- */
74
- add_filter(
75
- 'customize_changeset_save_data',
76
- array( __CLASS__, 'filter__customize_changeset_save_data' ),
77
- 1,
78
- 2
79
- );
80
-
81
- }
82
-
83
- /**
84
- * Action on admin init.
85
- *
86
- * @since 1.9.3
87
- */
88
- public static function on__admin_init() {
89
-
90
- $excluded_mods = array(
91
- '0',
92
- 'nav_menu_locations',
93
- 'sidebars_widgets',
94
- 'custom_css_post_id',
95
- 'wpglobus_blogname',
96
- 'wpglobus_blogdescription',
97
- );
98
-
99
- $mods = get_theme_mods();
100
-
101
- $filtered_mods = array();
102
-
103
- if ( $mods ) {
104
- foreach ( $mods as $mod_key => $mod_value ) {
105
-
106
- if ( in_array( $mod_key, $excluded_mods, true ) ) {
107
- continue;
108
- }
109
-
110
- if ( ! is_string( $mod_value ) ) {
111
- continue;
112
- }
113
-
114
- $filtered_mods[ $mod_key ] = $mod_value;
115
-
116
- }
117
- }
118
-
119
- /**
120
- * Filters the theme mods before save.
121
- *
122
- * @since 1.9.3
123
- *
124
- * @param array $filtered_mods Filtered theme modifications.
125
- * @param array|void $mods Theme modifications.
126
- */
127
- $filtered_mods = apply_filters( 'wpglobus_customize_filtered_mods', $filtered_mods, $mods );
128
-
129
- foreach ( $filtered_mods as $mod_key => $mod_value ) {
130
-
131
- /**
132
- * Filter {@see filter "pre_set_theme_mod_{$name}" in \wp-includes\theme.php}.
133
- */
134
- add_filter(
135
- "pre_set_theme_mod_{$mod_key}",
136
- array( __CLASS__, 'filter__pre_set_theme_mod' ),
137
- 1,
138
- 2
139
- );
140
-
141
- }
142
- }
143
-
144
- /**
145
- * Filter a theme mod.
146
- *
147
- * @since 1.9.3
148
- *
149
- * @param string $value The value.
150
- * @param string $old_value Unused.
151
- *
152
- * @return bool|string
153
- */
154
- public static function filter__pre_set_theme_mod(
155
- $value,
156
- /**
157
- * Unused.
158
- *
159
- * @noinspection PhpUnusedParameterInspection
160
- */
161
- $old_value
162
- ) {
163
-
164
- if ( ! is_string( $value ) ) {
165
- return $value;
166
- }
167
-
168
- $new_value = self::_build_multilingual_string( $value );
169
-
170
- if ( $new_value ) {
171
- return $new_value;
172
- }
173
-
174
- return $value;
175
-
176
- }
177
-
178
- /**
179
- * Save/update a changeset.
180
- *
181
- * @since 1.9.3
182
- *
183
- * @param array $data The data.
184
- * @param string $filter_context Unused.
185
- *
186
- * @return mixed
187
- */
188
- public static function filter__customize_changeset_save_data(
189
- $data,
190
- /**
191
- * Unused.
192
- *
193
- * @noinspection PhpUnusedParameterInspection
194
- */
195
- $filter_context
196
- ) {
197
-
198
- foreach ( $data as $option => $value ) {
199
-
200
- $new_value = self::_build_multilingual_string( $value['value'] );
201
-
202
- if ( $new_value ) {
203
- $data[ $option ]['value'] = $new_value;
204
- }
205
- }
206
-
207
- return $data;
208
-
209
- }
210
-
211
- /**
212
- * Build standard WPGlobus multilingual string.
213
- *
214
- * @since 1.9.3
215
- *
216
- * @param string $value The value.
217
- *
218
- * @return bool|string
219
- */
220
- public static function _build_multilingual_string( $value ) { // phpcs:ignore PSR2.Methods.MethodDeclaration.Underscore
221
-
222
- /**
223
- * Ignore if not a string.
224
- *
225
- * @since 1.9.6
226
- */
227
- if ( ! is_string( $value ) ) {
228
- return $value;
229
- }
230
-
231
- // $new_value = '';
232
-
233
- if ( false === strpos( $value, '|||' ) ) {
234
- $new_value = false;
235
- } else {
236
-
237
- $arr1 = array();
238
- $arr = explode( '|||', $value );
239
- foreach ( $arr as $k => $val ) {
240
- // Note: 'null' is a string, not real `null`.
241
- if ( 'null' !== $val ) {
242
- $arr1[ WPGlobus::Config()->enabled_languages[ $k ] ] = $val;
243
- }
244
- }
245
-
246
- $new_value = WPGlobus_Utils::build_multilingual_string( $arr1 );
247
-
248
- }
249
-
250
- return $new_value;
251
-
252
- }
253
-
254
- /**
255
- * Filter a string to check translations for URL.
256
- * // We build multilingual URLs in customizer using the ':::' delimiter.
257
- * We build multilingual URLs in customizer using the '|||' delimiter.
258
- * See wpglobus-customize-control.js
259
- *
260
- * @note To work correctly, value of $url should begin with URL for default language.
261
- * @see esc_url() - the 'clean_url' filter
262
- * @since 1.3.0
263
- *
264
- * @param string $url The cleaned URL.
265
- * @param string $original_url The URL prior to cleaning.
266
- *
267
- * @return string
268
- */
269
- public static function filter__clean_url( $url, $original_url ) {
270
-
271
- if ( false !== strpos( $original_url, '|||' ) ) {
272
- $arr1 = array();
273
- $arr = explode( '|||', $original_url );
274
- foreach ( $arr as $k => $val ) {
275
- // Note: 'null' is a string, not real `null`.
276
- if ( 'null' !== $val ) {
277
- $arr1[ WPGlobus::Config()->enabled_languages[ $k ] ] = $val;
278
- }
279
- }
280
-
281
- return WPGlobus_Utils::build_multilingual_string( $arr1 );
282
- }
283
-
284
- return $url;
285
- }
286
-
287
- /**
288
- * Add multilingual controls.
289
- * The original controls will be hidden.
290
- *
291
- * @param WP_Customize_Manager $wp_customize Customize Manager.
292
- */
293
- public static function action__customize_register( WP_Customize_Manager $wp_customize ) {
294
- }
295
-
296
- /**
297
- * Load Customize Preview JS
298
- * Used by hook: 'customize_preview_init'
299
- *
300
- * @see 'customize_preview_init'
301
- */
302
- public static function action__customize_preview_init() {
303
- wp_enqueue_script(
304
- 'wpglobus-customize-preview',
305
- WPGlobus::plugin_dir_url() . 'includes/js/wpglobus-customize-preview' .
306
- WPGlobus::SCRIPT_SUFFIX() . '.js',
307
- array( 'jquery', 'customize-preview' ),
308
- WPGLOBUS_VERSION,
309
- true
310
- );
311
- wp_localize_script(
312
- 'wpglobus-customize-preview',
313
- 'WPGlobusCustomize',
314
- array(
315
- 'version' => WPGLOBUS_VERSION,
316
- 'blogname' => WPGlobus_Core::text_filter( get_option( 'blogname' ), WPGlobus::Config()->language ),
317
- 'blogdescription' => WPGlobus_Core::text_filter( get_option( 'blogdescription' ), WPGlobus::Config()->language ),
318
- )
319
- );
320
- }
321
-
322
- /**
323
- * Load Customize Control JS
324
- */
325
- public static function action__customize_controls_enqueue_scripts() {
326
-
327
- global $wp_version;
328
-
329
- /**
330
- * See wp.customize.control elements
331
- * for example wp.customize.control('blogname');
332
- */
333
- $disabled_setting_mask = array();
334
-
335
- // navigation menu elements.
336
- $disabled_setting_mask[] = 'nav_menu_item';
337
- $disabled_setting_mask[] = 'nav_menu[';
338
- $disabled_setting_mask[] = 'nav_menu_locations';
339
- $disabled_setting_mask[] = 'new_menu_name';
340
-
341
- // widgets.
342
- $disabled_setting_mask[] = 'widgets';
343
-
344
- // color elements.
345
- $disabled_setting_mask[] = 'color';
346
-
347
- // yoast seo.
348
- $disabled_setting_mask[] = 'wpseo';
349
-
350
- // css elements.
351
- $disabled_setting_mask[] = 'css';
352
-
353
- // social networks elements.
354
- $disabled_setting_mask[] = 'facebook';
355
- $disabled_setting_mask[] = 'twitter';
356
- $disabled_setting_mask[] = 'linkedin';
357
- $disabled_setting_mask[] = 'behance';
358
- $disabled_setting_mask[] = 'dribbble';
359
- $disabled_setting_mask[] = 'instagram';
360
- /**
361
- * Tumblr.
362
- *
363
- * @since 1.4.4
364
- */
365
- $disabled_setting_mask[] = 'tumblr';
366
- $disabled_setting_mask[] = 'flickr';
367
- $disabled_setting_mask[] = 'wordpress'; // phpcs:ignore WordPress.WP.CapitalPDangit.Misspelled
368
- $disabled_setting_mask[] = 'youtube';
369
- $disabled_setting_mask[] = 'pinterest';
370
- $disabled_setting_mask[] = 'github';
371
- $disabled_setting_mask[] = 'rss';
372
- $disabled_setting_mask[] = 'google';
373
- $disabled_setting_mask[] = 'email';
374
- /**
375
- * Dropbox.
376
- *
377
- * @since 1.5.9
378
- */
379
- $disabled_setting_mask[] = 'dropbox';
380
- $disabled_setting_mask[] = 'foursquare';
381
- $disabled_setting_mask[] = 'vine';
382
- $disabled_setting_mask[] = 'vimeo';
383
- /**
384
- * Yelp.
385
- *
386
- * @since 1.6.0
387
- */
388
- $disabled_setting_mask[] = 'yelp';
389
-
390
- /**
391
- * Exclude fields from Static Front Page section.
392
- * It may be added to customizer in many themes.
393
- *
394
- * @since 1.7.6
395
- */
396
- $disabled_setting_mask[] = 'page_on_front';
397
- $disabled_setting_mask[] = 'page_for_posts';
398
-
399
- /**
400
- * Filter to disable fields in customizer.
401
- * See wp.customize.control elements
402
- * Returning array.
403
- *
404
- * @since 1.4.0
405
- *
406
- * @param array $disabled_setting_mask An array of disabled masks.
407
- */
408
- $disabled_setting_mask = apply_filters( 'wpglobus_customize_disabled_setting_mask', $disabled_setting_mask );
409
-
410
- $element_selector = array( 'input[type=text]', 'textarea' );
411
-
412
- /**
413
- * Filter for element selectors.
414
- * Returning array.
415
- *
416
- * @since 1.4.0
417
- *
418
- * @param array $element_selector An array of selectors.
419
- */
420
- $element_selector = apply_filters( 'wpglobus_customize_element_selector', $element_selector );
421
-
422
- $set_link_by = array( 'link', 'url' );
423
-
424
- /**
425
- * Filter of masks to determine links.
426
- * See value data-customize-setting-link of element
427
- * Returning array.
428
- *
429
- * @since 1.4.0
430
- *
431
- * @param array $set_link_by An array of masks.
432
- */
433
- $set_link_by = apply_filters( 'wpglobus_customize_setlinkby', $set_link_by );
434
-
435
- /**
436
- * Filter of disabled sections.
437
- *
438
- * Returning array.
439
- *
440
- * @since 1.5.0
441
- *
442
- * @param array $disabled_sections An array of sections.
443
- */
444
- $disabled_sections = array();
445
-
446
- $disabled_sections = apply_filters( 'wpglobus_customize_disabled_sections', $disabled_sections );
447
-
448
- /**
449
- * Generate language select button for customizer
450
- *
451
- * @since 1.6.0
452
- *
453
- * @todo http://stackoverflow.com/questions/9607252/how-to-detect-when-an-element-over-another-element-in-javascript
454
- */
455
- $attributes['href'] = '#';
456
- $attributes['style'] = 'margin-left:48px;';
457
- $attributes['class'] = 'customize-controls-close wpglobus-customize-selector';
458
-
459
- /**
460
- * Filter of attributes to generate language selector button.
461
- * For example @see Divi theme http://www.elegantthemes.com/gallery/divi/ .
462
- *
463
- * Returning array.
464
- *
465
- * @since 1.6.0
466
- *
467
- * @param array $attributes An array of attributes.
468
- * @param string Name of current theme.
469
- */
470
- $attributes = apply_filters( 'wpglobus_customize_language_selector_attrs', $attributes, WPGlobus_Customize_Options::get_theme( 'name' ) );
471
-
472
- $string = '';
473
-
474
- foreach ( $attributes as $attribute => $value ) {
475
- if ( null !== $value ) {
476
- $string .= esc_attr( $attribute ) . '="' . esc_attr( $value ) . '" ';
477
- }
478
- }
479
-
480
- $selector_button = sprintf(
481
- '<a %1$s data-language="' . WPGlobus::Config()->default_language . '">%2$s</a>',
482
- trim( $string ),
483
- '<span class="wpglobus-globe"></span>'
484
- );
485
-
486
- /**
487
- * Since 1.7.9
488
- */
489
- $changeset_uuid = null;
490
- if ( ! empty( $_GET['changeset_uuid'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
491
- $changeset_uuid = sanitize_text_field( wp_unslash( $_GET['changeset_uuid'] ) ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
492
- }
493
-
494
- /**
495
- * Since 1.9.0
496
- */
497
- $selector_type = 'dropdown';
498
- $selector_types = array( 'dropdown', 'switch' );
499
-
500
- /**
501
- * Filter selector type.
502
- *
503
- * @since 1.9.0
504
- *
505
- * @param string $selector_type Name of the current selector type.
506
- * @param array $selector_types An array of existing selector types.
507
- *
508
- * @return string
509
- */
510
- $selector_type = apply_filters( 'wpglobus_customize_language_selector_type', $selector_type, $selector_types );
511
-
512
- if ( ! in_array( $selector_type, $selector_types, true ) ) {
513
- $selector_type = 'dropdown';
514
- }
515
-
516
- /**
517
- * Adjust for WP 5.2+.
518
- *
519
- * @since 2.2.0
520
- */
521
- $selector_html = '<span style="margin-left:5px;" class="wpglobus-icon-globe"></span><span class="current-language" style="font-weight:bold;">{{language}}</span>';
522
- if ( version_compare( $wp_version, '5.1.999', '>' ) ) {
523
- $selector_html = '<span style="position:fixed;top:-7px;">' . $selector_html . '</span>';
524
- }
525
-
526
- wp_enqueue_script(
527
- 'wpglobus-customize-control190',
528
- WPGlobus::plugin_dir_url() . 'includes/js/wpglobus-customize-control190' . WPGlobus::SCRIPT_SUFFIX() . '.js',
529
- array( 'jquery' ),
530
- WPGLOBUS_VERSION,
531
- true
532
- );
533
- wp_localize_script(
534
- 'wpglobus-customize-control190',
535
- 'WPGlobusCustomize',
536
- array(
537
- 'version' => WPGLOBUS_VERSION,
538
- 'selectorType' => $selector_type,
539
- 'selectorButton' => $selector_button,
540
- 'languageAdmin' => WPGlobus::Config()->language,
541
- 'disabledSettingMask' => $disabled_setting_mask,
542
- 'elementSelector' => $element_selector,
543
- 'setLinkBy' => $set_link_by,
544
- 'disabledSections' => $disabled_sections,
545
- 'controlClass' => 'wpglobus-customize-control',
546
- 'changeset_uuid' => $changeset_uuid,
547
- 'selector_html' => $selector_html,
548
- )
549
- );
550
-
551
- }
552
-
553
- } // class
554
-
555
- endif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/admin/customize/wpglobus-customize-filters.php DELETED
@@ -1,87 +0,0 @@
1
- <?php
2
- /**
3
- * Filters for customizer
4
- *
5
- * All add_filter and add_action calls should be placed here
6
- *
7
- * @package WPGlobus\Admin\Customizer
8
- */
9
- add_filter( 'wpglobus_customize_disabled_sections', array( 'WPGlobus_Customize_Filters', 'disable_sections' ) );
10
-
11
- if ( ! class_exists( 'WPGlobus_Customize_Filters' ) ) :
12
-
13
- /**
14
- * Class WPGlobus_Customize_Filters
15
- */
16
- class WPGlobus_Customize_Filters {
17
-
18
- /**
19
- * Disable sections in customizer.
20
- *
21
- * @param array $disabled_sections
22
- *
23
- * @return array
24
- */
25
- public static function disable_sections( $disabled_sections ) {
26
-
27
- if ( class_exists( 'Easy_Google_Fonts' ) ) {
28
- /**
29
- * @see https://wordpress.org/plugins/easy-google-fonts/
30
- */
31
- $disabled_sections[] = 'tt_font_typography';
32
- }
33
-
34
- /**
35
- * @since 2.2.30
36
- */
37
- if ( defined( 'GFP_VERSION' ) // premium
38
- ||
39
- defined( 'OGF_VERSION' ) // free
40
- ) {
41
- /**
42
- * @see premium https://fontsplugin.com/
43
- * @see free https://wordpress.org/plugins/olympus-google-fonts/
44
- */
45
- $disabled_sections[] = 'ogf_custom';
46
- $disabled_sections[] = 'ogf_advanced__css';
47
- }
48
-
49
- /**
50
- * @since 2.2.28
51
- */
52
- if ( class_exists( 'WPGlobus_Customize_Themes' ) ) {
53
-
54
- /**
55
- * @see W.I.P. `Prevent using element with no id attribute` in includes\js\wpglobus-customize-control190.js
56
- * to getting sections for disabling.
57
- */
58
- $theme_name = WPGlobus_Customize_Themes::get_theme_name_lc();
59
-
60
- if ( 'startkit' == $theme_name ) {
61
- /**
62
- * @see https://wordpress.org/themes/startkit/
63
- */
64
- $disabled_sections[] = 'slider_setting';
65
- $disabled_sections[] = 'service_setting';
66
- $disabled_sections[] = 'testimonial_setting';
67
- $disabled_sections[] = 'footer_icon';
68
- $disabled_sections[] = 'Body_typography';
69
- $disabled_sections[] = 'paragraph_typography';
70
- $disabled_sections[] = 'H1_typography';
71
- $disabled_sections[] = 'H2_typography';
72
- $disabled_sections[] = 'H3_typography';
73
- $disabled_sections[] = 'H4_typography';
74
- $disabled_sections[] = 'H5_typography';
75
- $disabled_sections[] = 'H6_typography';
76
- $disabled_sections[] = 'menu_typography';
77
- $disabled_sections[] = 'section_typography';
78
- }
79
- }
80
-
81
- return $disabled_sections;
82
-
83
- }
84
-
85
- }
86
-
87
- endif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/admin/customize/wpglobus-customize.php DELETED
@@ -1,22 +0,0 @@
1
- <?php
2
- /**
3
- * File: wpglobus-customize.php
4
- *
5
- * @package WPGlobus\Admin\Customizer
6
- */
7
-
8
- global $wp_version;
9
-
10
- if ( ! defined('WPGLOBUS_CUSTOMIZE') || WPGLOBUS_CUSTOMIZE ) {
11
-
12
- if ( version_compare( $wp_version, '4.9-Beta1', '>=' ) ) {
13
- require_once 'class-wpglobus-customize190.php';
14
- } else if( version_compare( $wp_version, '4.6', '>=' ) ) {
15
- require_once 'class-wpglobus-customize170.php';
16
- } else {
17
- require_once 'class-wpglobus-customize140.php';
18
- }
19
- WPGlobus_Customize::controller();
20
- }
21
-
22
- # --- EOF
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/admin/debug/class-wpglobus-admin-debug.php DELETED
@@ -1,366 +0,0 @@
1
- <?php
2
- /**
3
- * WPGlobus/Admin/Debug.
4
- *
5
- * @package WPGlobus\Admin
6
- */
7
-
8
- if ( ! class_exists( 'WPGlobus_Admin_Debug' ) ) :
9
-
10
- /**
11
- * Class WPGlobus_Admin_Debug.
12
- *
13
- * @since 1.8.1
14
- */
15
- class WPGlobus_Admin_Debug {
16
-
17
- /**
18
- * Instance.
19
- *
20
- * @var WPGlobus_Admin_Debug
21
- */
22
- protected static $instance;
23
-
24
- /**
25
- * Debug mode.
26
- * @since 2.2.35
27
- */
28
- protected static $mode = 'godmode';
29
-
30
- /**
31
- * Key.
32
- * @since 2.2.35
33
- */
34
- protected static $key = '';
35
-
36
- /**
37
- * Get instance.
38
- */
39
- public static function get_instance() {
40
- if ( null === self::$instance ) {
41
- self::$instance = new self();
42
- }
43
-
44
- return self::$instance;
45
- }
46
-
47
- /**
48
- * Constructor.
49
- */
50
- public function __construct() {
51
-
52
- if ( 'meta' == $_GET['wpglobus-debug'] ) { // WPCS: input var ok, sanitization ok.
53
- self::$mode = 'meta';
54
- } else if ( 'wpglobus_options' == $_GET['wpglobus-debug'] || 'wpglobus-options' == $_GET['wpglobus-debug'] ) { // WPCS: input var ok, sanitization ok.
55
- self::$mode = 'wpglobus_options';
56
- } else if ( 'yoast' == $_GET['wpglobus-debug'] ) { // WPCS: input var ok, sanitization ok.
57
- self::$mode = 'yoast';
58
- }
59
-
60
- if ( 'godmode' !== self::$mode ) {
61
- if ( ! empty( $_GET['key'] ) ) { // WPCS: input var ok, sanitization ok. )
62
- self::$key = sanitize_text_field($_GET['key']);
63
- }
64
- }
65
-
66
- /**
67
- * Action.
68
- *
69
- * @scope admin
70
- * @since 1.8.1
71
- */
72
- add_action( 'admin_print_scripts', array( $this, 'on__admin_scripts' ), 99 );
73
-
74
- /**
75
- * Action.
76
- *
77
- * @scope admin
78
- * @since 1.8.1
79
- */
80
- add_action( 'admin_print_styles', array( $this, 'on__admin_styles' ), 99 );
81
-
82
- /**
83
- * Action.
84
- *
85
- * @scope admin
86
- * @since 1.8.1
87
- */
88
- add_action( 'admin_footer', array( $this, 'on__admin_footer' ), 9999 );
89
-
90
- }
91
-
92
- /**
93
- * @since 2.2.35
94
- */
95
- public function is_enabled_section($section) {
96
- if ( 'godmode' == self::$mode ) {
97
- return true;
98
- }
99
- if ( $section == self::$mode ) {
100
- return true;
101
- }
102
- return false;
103
- }
104
-
105
- /**
106
- * Enqueue admin styles.
107
- *
108
- * @scope admin
109
- * @since 1.8.1
110
- */
111
- public function on__admin_styles() {
112
-
113
- wp_register_style(
114
- 'wpglobus-admin-debug',
115
- WPGlobus::plugin_dir_url() . 'includes/css/wpglobus-admin-debug.css',
116
- array(),
117
- WPGLOBUS_VERSION
118
- );
119
- wp_enqueue_style( 'wpglobus-admin-debug' );
120
-
121
- }
122
-
123
- /**
124
- * Enqueue admin scripts.
125
- *
126
- * @scope admin
127
- * @since 1.8.1
128
- */
129
- public function on__admin_scripts() {
130
-
131
- wp_register_script(
132
- 'wpglobus-admin-debug',
133
- WPGlobus::plugin_dir_url() . 'includes/js/wpglobus-admin-debug' . WPGlobus::SCRIPT_SUFFIX() . '.js',
134
- array( 'jquery' ),
135
- WPGLOBUS_VERSION,
136
- true
137
- );
138
- wp_enqueue_script( 'wpglobus-admin-debug' );
139
- wp_localize_script(
140
- 'wpglobus-admin-debug',
141
- 'WPGlobusAdminDebug',
142
- array(
143
- 'version' => WPGLOBUS_VERSION,
144
- 'data' => '',
145
- )
146
- );
147
-
148
- }
149
-
150
- /**
151
- * Output table.
152
- *
153
- * @scope admin
154
- * @since 1.8.1
155
- */
156
- public function on__admin_footer() {
157
-
158
- global $wpdb, $post, $pagenow;
159
-
160
- if ( 'post.php' == $pagenow ) {
161
- if ( is_object( $post ) ) {
162
- /**
163
- * post.php page.
164
- */
165
- if ( empty( $post->ID ) || 0 === (int) $post->ID ) {
166
- return;
167
- }
168
-
169
- /**
170
- * Get metadata.
171
- *
172
- * @var array $metas
173
- */
174
- $meta_query = $wpdb->prepare( "SELECT meta_key, meta_value FROM $wpdb->postmeta WHERE post_id = %d", $post->ID );
175
- $_id = $post->ID;
176
- $meta_query_caption = "SELECT meta_key, meta_value FROM $wpdb->postmeta WHERE post_id = $_id";
177
- $metas = $wpdb->get_results( $meta_query, ARRAY_A );
178
- }
179
- } else if ( 'term.php' == $pagenow ) {
180
-
181
- if ( empty( $_GET['tag_ID'] ) ) {
182
- return;
183
- }
184
-
185
- $_id = sanitize_text_field( $_GET['tag_ID'] );
186
-
187
- /**
188
- * Get metadata.
189
- *
190
- * @var array $metas
191
- */
192
- $meta_query = $wpdb->prepare( "SELECT meta_key, meta_value FROM $wpdb->termmeta WHERE term_id = %d", $_id );
193
- $meta_query_caption = "SELECT meta_key, meta_value FROM $wpdb->termmeta WHERE term_id = $_id";
194
- $metas = $wpdb->get_results( $meta_query, ARRAY_A );
195
- } else {
196
- return;
197
- }
198
-
199
- ?>
200
- <div id="wpglobus-admin-debug-box" class="" style="display:none;">
201
- <h4>WPGlobus debug box</h4>
202
- <?php
203
- if ( $this->is_enabled_section('yoast') ) :
204
- /**
205
- * Output yoast options.
206
- */
207
- if ( empty( self::$key ) ) {
208
- $query = $wpdb->prepare( "SELECT * FROM $wpdb->options WHERE option_name LIKE '%s' OR option_name LIKE '%s'", '%wpseo%', '%yoast%' );
209
- $query_caption = "SELECT * FROM $wpdb->options WHERE option_name LIKE '%wpseo%' OR option_name LIKE '%yoast%'";
210
- } else {
211
- $query = $wpdb->prepare( "SELECT * FROM $wpdb->options WHERE option_name = %s", self::$key );
212
- $_key = self::$key;
213
- $query_caption = "SELECT * FROM $wpdb->options WHERE option_name = $_key";
214
- }
215
- $results = $wpdb->get_results( $query );
216
- ?>
217
- <table class="table1" cellspacing="0">
218
- <caption><strong><?php echo '"' . $query_caption . '"'; ?></strong></caption>
219
- <thead>
220
- <tr>
221
- <th><strong>№</strong></th>
222
- <th><strong>option name</strong></th>
223
- <th><strong>value</strong></th>
224
- </tr>
225
- </thead>
226
- <tbody>
227
- <?php
228
- $order = 1;
229
-
230
- foreach ( $results as $key=>$value ) {
231
- $code = false;
232
- //if ( is_array( $meta ) ) {
233
- //$results[$key]['meta_key'] = htmlspecialchars( $meta['meta_value'] );
234
- //}
235
- $args = $_GET;
236
- if ( empty( self::$key ) ) {
237
- $args['wpglobus-debug'] = 'yoast';
238
- $args = array_merge( $args, array('key'=>$value->option_name) );
239
- $_url = admin_url( add_query_arg( $args, $pagenow ) );
240
- } else {
241
- $_url = admin_url( add_query_arg( $args, $pagenow ) );
242
- }
243
- ?>
244
- <tr>
245
- <td><?php echo esc_html( $order ); ?></td>
246
- <td><?php echo sprintf( '<a href="%s">%s</a>', $_url, esc_html( $value->option_name ) ); ?></td>
247
- <?php if ( $code ) { ?>
248
- <td>
249
- <pre><?php echo esc_html( print_r( $value->option_value, true ) ); ?></pre>
250
- </td>
251
- <?php } else { ?>
252
- <td><?php echo esc_html( print_r( $value->option_value, true ) ); ?></td>
253
- <?php } ?>
254
- </tr>
255
- <?php $order ++; ?>
256
- <?php } ?>
257
- </tbody>
258
- </table>
259
- <?php
260
- endif;
261
-
262
- if ( $this->is_enabled_section('meta') ) :
263
- /**
264
- * Output metadata.
265
- */
266
- ?>
267
- <table class="table2" cellspacing="0">
268
- <caption><strong><?php echo '"' . $meta_query_caption . '"'; ?></strong></caption>
269
- <thead>
270
- <tr>
271
- <th><strong>№</strong></th>
272
- <th><strong>meta</strong></th>
273
- <th><strong>value</strong></th>
274
- </tr>
275
- </thead>
276
- <tbody>
277
- <?php
278
- if ( empty($metas) ) { ?>
279
- <tr>
280
- <td></td>
281
- <td>No data</td>
282
- <td>No data</td>
283
- </tr> <?php
284
- } else {
285
- $order = 1;
286
- foreach ( $metas as $key=>$meta ) {
287
- $code = false;
288
- if ( is_array( $meta ) ) {
289
- $metas[$key]['meta_key'] = htmlspecialchars( $meta['meta_value'] );
290
- }
291
- ?>
292
- <tr>
293
- <td><?php echo esc_html( $order ); ?></td>
294
- <td><?php echo esc_html( print_r( $meta[ 'meta_key' ], true ) ); ?></td>
295
- <?php if ( $code ) { ?>
296
- <td>
297
- <pre><?php echo esc_html( print_r( $meta[ 'meta_value' ], true ) ); ?></pre>
298
- </td>
299
- <?php } else { ?>
300
- <td><?php echo esc_html( print_r( $meta[ 'meta_value' ], true ) ); ?></td>
301
- <?php } ?>
302
- </tr>
303
- <?php $order ++;
304
- }
305
- } ?>
306
- </tbody>
307
- </table>
308
- <?php
309
- endif;
310
-
311
- if ( $this->is_enabled_section('wpglobus_options') ) :
312
- /**
313
- * Output WPGlobus options.
314
- */
315
- $query = "SELECT * FROM $wpdb->options WHERE option_name LIKE '%wpglobus%'";
316
- $results = $wpdb->get_results( $query );
317
- ?>
318
- <table class="table3" cellspacing="0">
319
- <caption><strong><?php echo '"SELECT * FROM $wpdb->options WHERE option_name LIKE \'%wpglobus%\'"'; ?></strong></caption>
320
- <caption><?php echo 'Option count: ' . count( $results ); ?></caption>
321
- <thead>
322
- <tr>
323
- <th><strong>Option ID</strong></th>
324
- <th><strong>Option Name</strong></th>
325
- <th><strong>Option Value</strong></th>
326
- </tr>
327
- </thead>
328
- <tbody>
329
- <?php
330
-
331
- $order = 1;
332
-
333
- foreach ( $results as $option_key => $option ) {
334
- $code = false;
335
- if ( is_array( $option->option_value ) ) {
336
- foreach ( $option->option_value as $key => $value ) {
337
- $option->option_value[ $key ] = htmlspecialchars( $value );
338
- }
339
- } elseif ( is_string( $option->option_value ) ) {
340
- $option->option_value = htmlspecialchars( $option->option_value );
341
- }
342
- ?>
343
- <tr>
344
- <td><?php echo esc_html( $option->option_id ); ?></td>
345
- <td><?php echo esc_html( print_r( $option->option_name, true ) ); ?></td>
346
- <?php if ( $code ) { ?>
347
- <td>
348
- <pre><?php echo esc_html( print_r( $option->option_value, true ) ); ?></pre>
349
- </td>
350
- <?php } else { ?>
351
- <td><?php echo esc_html( print_r( $option->option_value, true ) ); ?></td>
352
- <?php } ?>
353
- </tr>
354
- <?php $order ++; ?>
355
- <?php } ?>
356
- </tbody>
357
- </table><?php
358
- endif; ?>
359
- </div>
360
-
361
- <?php
362
- }
363
-
364
- }
365
-
366
- endif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/admin/helpdesk/class-wpglobus-admin-helpdesk.php DELETED
@@ -1,292 +0,0 @@
1
- <?php
2
- /**
3
- * File: class-wpglobus-admin-helpdesk.php
4
- *
5
- * @package WPGlobus\Admin\HelpDesk
6
- */
7
-
8
-
9
- /**
10
- * Class WPGlobus_Admin_HelpDesk.
11
- * The Contact Support form.
12
- */
13
- class WPGlobus_Admin_HelpDesk {
14
-
15
- /**
16
- * Nonce.
17
- *
18
- * @var string
19
- */
20
- const NONCE_ACTION = 'wpglobus-helpdesk';
21
-
22
- /**
23
- * Email address of the Support.
24
- *
25
- * @var string
26
- */
27
- const EMAIL_SUPPORT = 'support@wpglobus.com';
28
-
29
- /**
30
- * Admin page title.
31
- *
32
- * @var string
33
- */
34
- public static $page_title;
35
- /**
36
- * Admin menu title.
37
- *
38
- * @var string
39
- */
40
- protected static $menu_title;
41
-
42
- /**
43
- * @var string
44
- */
45
- protected static $name;
46
-
47
- /**
48
- * @return string
49
- */
50
- public static function getName() {
51
- return self::$name;
52
- }
53
-
54
- /**
55
- * @var string
56
- */
57
- protected static $email;
58
-
59
- /**
60
- * @return string
61
- */
62
- public static function getEmail() {
63
- return self::$email;
64
- }
65
-
66
- /**
67
- * @var string
68
- */
69
- protected static $submission_status = 'success';
70
-
71
- /**
72
- * @return string
73
- */
74
- public static function getSubmissionStatus() {
75
- return self::$submission_status;
76
- }
77
-
78
- /**
79
- * @var string
80
- */
81
- protected static $submission_message = '';
82
-
83
- /**
84
- * @return string
85
- */
86
- public static function getSubmissionMessage() {
87
- return self::$submission_message;
88
- }
89
-
90
- /**
91
- * Static "constructor".
92
- */
93
- public static function construct() {
94
- self::set_vars();
95
- self::set_hooks();
96
- }
97
-
98
- /**
99
- * Set class variables.
100
- */
101
- public static function set_vars() {
102
- self::$page_title = __( 'WPGlobus Help Desk', 'wpglobus' );
103
- self::$menu_title = __( 'Help Desk', 'wpglobus' );
104
- }
105
-
106
- /**
107
- * Setup actions and filters.
108
- */
109
- protected static function set_hooks() {
110
- add_action( 'admin_menu', array( __CLASS__, 'add_menu' ), PHP_INT_MAX );
111
- }
112
-
113
- /**
114
- * Add admin menu item.
115
- */
116
- public static function add_menu() {
117
- add_submenu_page(
118
- WPGlobus::OPTIONS_PAGE_SLUG,
119
- self::$page_title,
120
- '<span class="' . esc_attr( WPGlobus_Admin_Page::nav_tab_icon( 'Helpdesk' ) ) . '"></span> '
121
- . self::$menu_title,
122
- 'administrator',
123
- WPGlobus::PAGE_WPGLOBUS_HELPDESK,
124
- array( __CLASS__, 'helpdesk_page' )
125
- );
126
- }
127
-
128
- /**
129
- * The admin page.
130
- */
131
- public static function helpdesk_page() {
132
- /** @noinspection PhpUnusedLocalVariableInspection */
133
- $data = self::get_data();
134
-
135
- self::handle_submit();
136
-
137
- /*
138
- * Prepare data for the view.
139
- */
140
-
141
- $active_plugins = explode( ', ', $data['active_plugins'] );
142
- unset( $data['active_plugins'] );
143
-
144
- $tech_info = '';
145
- foreach ( $data as $key => $value ) {
146
- $tech_info .= $key . ' = ' . $value . "\n";
147
- }
148
-
149
- // Split one-cell formatted list of plugins into the separate rows.
150
- foreach ( $active_plugins as $active_plugin ) {
151
- list( $name, $version ) = explode( ':', $active_plugin );
152
-
153
- $tech_info .= $name . ' = ' . $version . "\n";
154
- }
155
-
156
- /** @noinspection PhpUnusedLocalVariableInspection */
157
- $subject = empty( $_POST['subject'] ) ? '' : sanitize_text_field( $_POST['subject'] ); // phpcs:ignore WordPress.CSRF.NonceVerification
158
- if ( empty($subject) ) {
159
- $subject = empty( $_GET['subject'] ) ? '' : sanitize_text_field( $_GET['subject'] ); // phpcs:ignore WordPress.CSRF.NonceVerification
160
- }
161
-
162
-
163
- /** @noinspection PhpUnusedLocalVariableInspection */
164
- $details = empty( $_POST['details'] ) ? '' : sanitize_textarea_field( $_POST['details'] ); // phpcs:ignore WordPress.CSRF.NonceVerification
165
-
166
- // Render view.
167
- include dirname( __FILE__ ) . '/wpglobus-admin-helpdesk-page.php';
168
-
169
- }
170
-
171
- /**
172
- * Handle the form submit.
173
- */
174
- protected static function handle_submit() {
175
- if ( ! empty( $_POST ) ) {
176
- check_admin_referer( self::NONCE_ACTION );
177
-
178
- if (
179
- empty( $_POST['name'] )
180
- || empty( $_POST['email'] )
181
- || empty( $_POST['subject'] )
182
- || empty( $_POST['details'] )
183
- ) {
184
- self::$submission_status = 'error';
185
- self::$submission_message = __( 'Email not sent. Please fill in the entire form.', 'wpglobus' );
186
-
187
- return;
188
- }
189
-
190
- self::$name = sanitize_text_field( $_POST['name'] );
191
- self::$email = sanitize_email( $_POST['email'] );
192
-
193
- if ( ! self::$name || ! self::$email ) {
194
- self::$submission_status = 'error';
195
- self::$submission_message = __( 'Email not sent. Please verify that your name and email are entered correctly.', 'wpglobus' );
196
-
197
- return;
198
- }
199
-
200
- $message = sanitize_textarea_field( $_POST['details'] );
201
- if ( ! empty( $_POST['info'] ) ) {
202
- $message .= "\n-----\n" . sanitize_textarea_field( $_POST['info'] );
203
- }
204
-
205
- $headers = array(
206
- 'from: ' . self::$name . ' <' . self::$email . '>',
207
- 'reply-to: ' . self::$email,
208
- 'cc: ' . self::$email,
209
- );
210
-
211
- add_action( 'wp_mail_failed', array( __CLASS__, 'action__wp_mail_failed' ) );
212
-
213
- if ( wp_mail( self::EMAIL_SUPPORT, $_POST['subject'], $message, $headers ) ) :
214
-
215
- self::$submission_status = 'success';
216
- self::$submission_message = __( 'Email sent.', 'wpglobus' );
217
-
218
- endif;
219
-
220
- remove_action( 'wp_mail_failed', array( __CLASS__, 'action__wp_mail_failed' ) );
221
-
222
- }
223
- }
224
-
225
- /**
226
- * Collect technical data.
227
- *
228
- * @return array
229
- */
230
- protected static function get_data() {
231
- $user = wp_get_current_user();
232
- self::$name = WPGlobus_Filters::filter__text( $user->display_name );
233
- self::$email = $user->user_email;
234
-
235
- $theme = wp_get_theme();
236
-
237
- /**
238
- * @see php_uname can be disabled in php.ini for security reasons
239
- * disable_functions=php_uname
240
- * @since 1.7.13
241
- */
242
- $OS = 'Unknown';
243
- if ( function_exists( 'php_uname' ) ) {
244
- $OS = implode( ' ', array(
245
- php_uname( 's' ),
246
- php_uname( 'r' ),
247
- php_uname( 'v' ),
248
- ) );
249
- }
250
-
251
- $data = array(
252
- 'home_url' => home_url(),
253
- 'site_url' => site_url(),
254
- 'REMOTE_ADDR' => sanitize_text_field( wp_unslash( $_SERVER['REMOTE_ADDR'] ) ),
255
- // WPCS: input var ok, sanitization ok.
256
- 'SERVER_PORT' => sanitize_text_field( wp_unslash( $_SERVER['SERVER_PORT'] ) ),
257
- // WPCS: input var ok, sanitization ok.
258
- 'OS' => $OS,
259
- 'PHP_SAPI' => PHP_SAPI,
260
- 'PHP_VERSION' => PHP_VERSION,
261
- 'loaded_extensions' => implode( ', ', get_loaded_extensions() ),
262
- 'wp_version' => $GLOBALS['wp_version'],
263
- 'is_multisite' => is_multisite() ? 'Y' : 'N',
264
- 'theme' => $theme->display( 'Name' ) . ' ' . $theme->display( 'ThemeURI' ) . ' by ' . $theme->get( 'Author' ) . ' ' . $theme->get( 'AuthorURI' ) . ( is_child_theme() ? '; child of ' . $theme->display( 'Template' ) : '' ),
265
- 'enabled_languages' => implode( ', ', WPGlobus::Config()->enabled_languages ),
266
- );
267
-
268
- // The list of plugins is formatted here for display on the admin page,
269
- // to fit into one table cell.
270
- $active_plugins = array();
271
- foreach ( wp_get_active_and_valid_plugins() as $plugin ) {
272
- $plugin_data = get_plugin_data( $plugin );
273
- $plugin_file = str_replace( trailingslashit( WP_PLUGIN_DIR ), '', dirname( $plugin ) );
274
-
275
- $active_plugins[] = $plugin_file . ':' . $plugin_data['Version'];
276
- }
277
- $data['active_plugins'] = implode( ', ', $active_plugins );
278
-
279
- return $data;
280
-
281
- }
282
-
283
- /**
284
- * Print admin notice if sending failed.
285
- *
286
- * @param WP_Error $error
287
- */
288
- public static function action__wp_mail_failed( WP_Error $error ) {
289
- self::$submission_status = 'error';
290
- self::$submission_message = $error->get_error_message();
291
- }
292
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/admin/helpdesk/wpglobus-admin-helpdesk-page.php DELETED
@@ -1,165 +0,0 @@
1
- <?php
2
- /**
3
- * File: view-page.php
4
- *
5
- * @package WPGlobus\Admin\HelpDesk
6
- * @global string[] $data
7
- */
8
-
9
- // Exit if accessed directly
10
- if ( ! defined( 'ABSPATH' ) ) {
11
- exit;
12
- }
13
-
14
- WPGlobus_Admin_Page::print_header();
15
-
16
- /**
17
- * Vars defined in @see \WPGlobus_Admin_HelpDesk::helpdesk_page
18
- *
19
- * @var string $subject
20
- * @var string $tech_info
21
- */
22
- ?>
23
-
24
- <h2 class="nav-tab-wrapper wp-clearfix">
25
- <a href="#" class="nav-tab nav-tab-active">
26
- <?php WPGlobus_Admin_Page::nav_tab_icon_e( 'Helpdesk' ); ?>
27
- <?php echo esc_html( WPGlobus_Admin_HelpDesk::$page_title ); ?>
28
- </a>
29
- <a href="<?php echo esc_url( WPGlobus_Admin_Page::url_settings() ); ?>"
30
- class="nav-tab">
31
- <?php WPGlobus_Admin_Page::nav_tab_icon_e( 'Settings' ); ?>
32
- <?php esc_html_e( 'Settings' ); ?>
33
- </a>
34
- <a href="<?php echo esc_url( WPGlobus_Admin_Page::url_addons() ); ?>"
35
- class="nav-tab">
36
- <?php WPGlobus_Admin_Page::nav_tab_icon_e( 'Add-ons' ); ?>
37
- <?php esc_html_e( 'Add-ons', 'wpglobus' ); ?>
38
- </a>
39
- <a href="<?php echo esc_url( WPGlobus_Utils::url_wpglobus_site() . 'quick-start/' ); ?>"
40
- target="_blank"
41
- class="nav-tab">
42
- <?php WPGlobus_Admin_Page::nav_tab_icon_e( 'Guide' ); ?>
43
- <?php esc_html_e( 'Guide', 'wpglobus' ); ?>
44
- </a>
45
- <a href="<?php echo esc_url( WPGlobus_Utils::url_wpglobus_site() . 'faq/' ); ?>"
46
- target="_blank"
47
- class="nav-tab">
48
- <?php WPGlobus_Admin_Page::nav_tab_icon_e( 'FAQ' ); ?>
49
- <?php esc_html_e( 'FAQ', 'wpglobus' ); ?>
50
- </a>
51
- <a href="<?php echo esc_url( WPGlobus_Utils::url_wpglobus_site() ); ?>"
52
- target="_blank"
53
- class="nav-tab">
54
- <?php WPGlobus_Admin_Page::nav_tab_icon_e( 'globe' ); ?>
55
- <?php echo esc_html( 'WPGlobus.com' ); ?>
56
- </a>
57
- </h2>
58
-
59
- <?php if ( WPGlobus_Admin_HelpDesk::getSubmissionMessage() ) : ?>
60
- <div class="notice notice-<?php echo esc_attr( WPGlobus_Admin_HelpDesk::getSubmissionStatus() ); ?>">
61
- <p>
62
- <?php echo esc_html( WPGlobus_Admin_HelpDesk::getSubmissionMessage() ); ?>
63
- </p>
64
- </div>
65
- <?php endif; ?>
66
-
67
- <p><em>
68
- <?php esc_html_e( 'Thank you for using WPGlobus!', 'wpglobus' ); ?>
69
- <?php esc_html_e( 'Our Support Team is here to answer your questions or concerns.', 'wpglobus' ); ?>
70
- </em></p>
71
- <h4><?php esc_html_e( 'To help us serve you better:', 'wpglobus' ); ?></h4>
72
- <ol>
73
- <li><?php esc_html_e( 'Please check if the problem persists if you switch to a standard WordPress theme.', 'wpglobus' ); ?></li>
74
- <li><?php esc_html_e( 'Try deactivating other plugins to see if any of them conflicts with WPGlobus.', 'wpglobus' ); ?></li>
75
- </ol>
76
-
77
- <h4><?php esc_html_e( 'Please fill in and submit the contact form:', 'wpglobus' ); ?></h4>
78
-
79
- <form action="<?php echo esc_url( WPGlobus_Admin_Page::url_helpdesk() ); ?>" method="post" id="wpglobus-form-helpdesk">
80
-
81
- <table class="form-table">
82
- <tbody>
83
- <tr class="form-field">
84
- <th><label for="name"><?php esc_html_e( 'Name' ); ?>:</label></th>
85
- <td><input required="required" type="text" name="name" id="name"
86
- value="<?php echo esc_attr( WPGlobus_Admin_HelpDesk::getName() ); ?>" data-lpignore="true"/>
87
- </td>
88
- </tr>
89
- <tr class="form-field">
90
- <th><label for="email"><?php esc_html_e( 'Email' ); ?>:</label></th>
91
- <td>
92
- <input required="required" type="email" name="email" id="email"
93
- value="<?php echo esc_attr( WPGlobus_Admin_HelpDesk::getEmail() ); ?>"
94
- data-lpignore="true"/>
95
- <p class="description">
96
- <strong>
97
- <?php esc_html_e( 'Please make sure the email address is correct.', 'wpglobus' ); ?>
98
- </strong>
99
- </p>
100
- </td>
101
- </tr>
102
- <tr class="form-field">
103
- <th><label for="subject"><?php esc_html_e( 'Subject', 'wpglobus' ); ?>:</label></th>
104
- <td>
105
- <input required="required" type="text" name="subject" id="subject"
106
- value="<?php echo esc_attr( $subject ); ?>" data-lpignore="true"/>
107
- <p class="description">
108
- <?php esc_html_e( 'Short description of the problem', 'wpglobus' ); ?>
109
- </p>
110
- </td>
111
- </tr>
112
- <tr class="form-field">
113
- <th><label for="details"><?php esc_html_e( 'Detailed description', 'wpglobus' ); ?>:</label></th>
114
- <td>
115
- <textarea required="required" name="details" id="details"
116
- rows="10"><?php echo esc_attr( $details ); ?></textarea>
117
- </td>
118
- </tr>
119
- <tr class="form-field">
120
- <th><label for="info"><?php esc_html_e( 'Technical Information', 'wpglobus' ); ?>:</label></th>
121
- <td>
122
- <textarea name="info" id="info" rows="10"
123
- style="font-family: monospace; font-size: 10px; background-color: #eee; white-space: nowrap; overflow: hidden"
124
- data-gramm_editor="false"
125
- spellcheck="false"><?php echo esc_html( $tech_info ); ?></textarea>
126
- <p class="description">
127
- <?php esc_html_e( 'This information helps us to find the problem source', 'wpglobus' ); ?>
128
- </p>
129
- </td>
130
- </tr>
131
- </tbody>
132
- </table>
133
-
134
- <?php wp_nonce_field( WPGlobus_Admin_HelpDesk::NONCE_ACTION ); ?>
135
-
136
- <button class="button-primary" type="submit" name="send_email" id="send_email">
137
- <?php WPGlobus_Admin_Page::nav_tab_icon_e( 'Helpdesk' ); ?>
138
- <?php esc_html_e( 'Submit' ); ?>
139
- </button>
140
- <script>
141
- jQuery(function ($) {
142
- $("#wpglobus-form-helpdesk").on("submit", function (e) {
143
- $("#send_email").prop("disabled", true);
144
- });
145
- function adjustHeight(el, minHeight) {
146
- var outerHeight = parseInt(window.getComputedStyle(el).height, 10);
147
- var diff = outerHeight - el.clientHeight;
148
- el.style.height = 0;
149
- el.style.height = Math.max(minHeight, el.scrollHeight + diff) + 'px';
150
- }
151
- var textArea = [].slice.call(document.querySelectorAll('textarea#info'));
152
- if ( textArea.length == 1 ) {
153
- adjustHeight(textArea[0], textArea[0].scrollHeight);
154
- }
155
-
156
- });
157
- </script>
158
-
159
- </form>
160
- <p>
161
- *) <?php printf( esc_html__( 'Alternatively, please email %s. Do not forget to copy and paste the technical information to your email message.', 'wpglobus' ), '<a href="mailto:' . esc_attr( WPGlobus_Admin_HelpDesk::EMAIL_SUPPORT ) . '">' . esc_html( WPGlobus_Admin_HelpDesk::EMAIL_SUPPORT ) . '</a>' ); ?></p>
162
-
163
- <?php
164
-
165
- WPGlobus_Admin_Page::print_footer();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/admin/media/class-wpglobus-media.php DELETED
@@ -1,413 +0,0 @@
1
- <?php
2
- /**
3
- * @package WPGlobus
4
- */
5
-
6
- /**
7
- * Class WPGlobus_Media.
8
- *
9
- * @since 1.7.3
10
- * @since 2.2.22
11
- */
12
- if ( ! class_exists( 'WPGlobus_Media' ) ) :
13
-
14
- class WPGlobus_Media {
15
-
16
- /**
17
- * Instance.
18
- */
19
- protected static $instance;
20
-
21
- /**
22
- * Post types to work on media page.
23
- */
24
- protected $enabled_post_types = array();
25
-
26
- /**
27
- * Get instance.
28
- */
29
- public static function get_instance($http_post_action = false, $http_post_actions = array()){
30
- if( null == self::$instance ){
31
- self::$instance = new self($http_post_action, $http_post_actions);
32
- }
33
- return self::$instance;
34
- }
35
-
36
- /**
37
- * Constructor.
38
- */
39
- public function __construct($http_post_action, $http_post_actions) {
40
-
41
- /**
42
- * @scope admin
43
- * @since 1.7.3
44
- */
45
- add_action( 'admin_print_scripts', array(
46
- $this,
47
- 'post_php__admin_scripts'
48
- ), 5 );
49
-
50
- if ( in_array($http_post_action, $http_post_actions) ) {
51
-
52
- if ( 'send-attachment-to-editor' == $http_post_action ) {
53
-
54
- /**
55
- * @scope admin
56
- * @see filter 'media_send_to_editor' in wp-admin\includes\media.php
57
- * @since 1.7.3
58
- */
59
- add_filter( 'media_send_to_editor', array(
60
- $this,
61
- 'filter__media_send_to_editor'
62
- ), 5, 3 );
63
-
64
- } else if ( 'query-attachments' == $http_post_action ) {
65
-
66
- /**
67
- * @scope admin
68
- * @see filter 'wp_prepare_attachment_for_js' in wp-includes\media.php
69
- * @since 2.2.22
70
- */
71
- add_filter( 'wp_prepare_attachment_for_js', array(
72
- $this,
73
- 'filter__prepare_attachment_for_js'
74
- ), 5, 3 );
75
-
76
- }
77
-
78
- return;
79
- }
80
-
81
- $this->enabled_post_types[] = 'attachment';
82
-
83
- /**
84
- * @scope admin
85
- * @since 1.7.3
86
- */
87
- add_action( 'edit_form_after_editor', array(
88
- $this,
89
- 'language_tabs'
90
- ) );
91
-
92
- /**
93
- * @scope admin
94
- * @since 1.7.3
95
- */
96
- add_action( 'admin_print_scripts', array(
97
- $this,
98
- 'media__admin_scripts'
99
- ) );
100
-
101
- /**
102
- * @scope admin
103
- * @since 1.7.3
104
- */
105
- add_action( 'admin_print_styles', array(
106
- $this,
107
- 'action__admin_styles'
108
- ) );
109
-
110
-
111
-
112
- }
113
-
114
- /**
115
- * Filters the HTML markup for a media item sent to the editor.
116
- *
117
- * @scope admin
118
- * @since 1.7.3
119
- *
120
- * @param string $html HTML markup.
121
- * @param int $id Unused.
122
- * @param array $attachment Array of attachment metadata.
123
- *
124
- * @return boolean
125
- */
126
- public function filter__media_send_to_editor( $html, $id, $attachment ) {
127
-
128
- $fields = array(
129
- 'post_content',
130
- 'post_excerpt',
131
- 'image_alt',
132
- );
133
-
134
- $current_language = WPGlobus::Config()->default_language;
135
- if ( ! empty( $_POST['wpglobusLanguageTab'] ) ) { // WPCS: input var ok, sanitization ok.
136
- /**
137
- * See wpglobus-media.js
138
- */
139
- $current_language = sanitize_text_field( wp_unslash( $_POST['wpglobusLanguageTab'] ) ); // WPCS: input var ok, sanitization ok.
140
-
141
- if ( ! in_array( $current_language, WPGlobus::Config()->enabled_languages, true ) ) {
142
- return $html;
143
- }
144
- }
145
-
146
- foreach ( $fields as $field ) {
147
- if ( ! empty( $attachment[ $field ] ) && WPGlobus_Core::has_translations( $attachment[ $field ] ) ) {
148
- $html = str_replace( $attachment[ $field ], WPGlobus_Core::text_filter( $attachment[ $field ], $current_language ), $html );
149
- }
150
- }
151
-
152
- return $html;
153
- }
154
-
155
- /**
156
- * Check for enabled post types.
157
- *
158
- * @scope admin
159
- * @since 1.7.3
160
- * @access public
161
- *
162
- * @return boolean
163
- */
164
- public function is_enabled() {
165
-
166
- global $post;
167
-
168
- if ( empty( $post ) ) {
169
- return false;
170
- }
171
-
172
- if ( in_array( $post->post_type, $this->enabled_post_types ) ) {
173
- return true;
174
- }
175
-
176
- return false;
177
-
178
- }
179
-
180
- /**
181
- * Enqueue admin scripts on post.php page.
182
- *
183
- * @scope admin
184
- * @since 1.7.3
185
- * @access public
186
- *
187
- * @return void
188
- */
189
- public function post_php__admin_scripts() {
190
-
191
- global $post;
192
-
193
- if ( empty( $post ) ) {
194
- return;
195
- }
196
-
197
- if ( in_array( $post->post_type, array( 'attachment' ) ) ) {
198
- /**
199
- * Don't load on edit media page.
200
- */
201
- return;
202
- }
203
-
204
- wp_register_script(
205
- 'wpglobus-media-post-php',
206
- WPGlobus::$PLUGIN_DIR_URL . 'includes/js/wpglobus-media-post-php' . WPGlobus::SCRIPT_SUFFIX() . '.js',
207
- array(),
208
- WPGLOBUS_VERSION,
209
- true
210
- );
211
- wp_enqueue_script( 'wpglobus-media-post-php' );
212
- wp_localize_script(
213
- 'wpglobus-media-post-php',
214
- 'WPGlobusMediaInPost',
215
- array(
216
- 'version' => WPGLOBUS_VERSION,
217
- 'builderID' => WPGlobus::Config()->builder->get_id(),
218
- )
219
- );
220
-
221
- }
222
-
223
- /**
224
- * Enqueue admin scripts.
225
- *
226
- * @scope admin
227
- * @since 1.7.3
228
- * @access public
229
- *
230
- * @return void
231
- */
232
- public function media__admin_scripts() {
233
-
234
- if ( ! $this->is_enabled() ) {
235
- return;
236
- }
237
-
238
- /**
239
- * WordPress 4.7+ needs a new version of our admin JS.
240
- * @since 1.7.0
241
- */
242
- $version = '';
243
- if ( version_compare( $GLOBALS['wp_version'], '4.6.999', '>' ) ) {
244
- $version = '-47';
245
- }
246
-
247
- wp_register_script(
248
- 'wpglobus-admin',
249
- WPGlobus::$PLUGIN_DIR_URL . "includes/js/wpglobus-admin$version" . WPGlobus::SCRIPT_SUFFIX() . ".js",
250
- array( 'jquery', 'jquery-ui-dialog', 'jquery-ui-tabs' ),
251
- WPGLOBUS_VERSION,
252
- true
253
- );
254
- wp_enqueue_script( 'wpglobus-admin' );
255
- wp_localize_script(
256
- 'wpglobus-admin',
257
- 'WPGlobusAdmin',
258
- array(
259
- 'version' => WPGLOBUS_VERSION,
260
- 'i18n' => array(),
261
- 'data' => array(
262
- 'default_language' => WPGlobus::Config()->default_language
263
- )
264
- )
265
- );
266
-
267
- wp_localize_script(
268
- 'wpglobus-admin',
269
- 'WPGlobusCoreData',
270
- array(
271
- 'multisite' => 'false',
272
- 'default_language' => WPGlobus::Config()->default_language,
273
- 'enabled_languages' => WPGlobus::Config()->enabled_languages,
274
- 'locale_tag_start' => WPGlobus::LOCALE_TAG_START,
275
- 'locale_tag_end' => WPGlobus::LOCALE_TAG_END
276
- )
277
- );
278
-
279
- wp_register_script(
280
- 'wpglobus-media',
281
- WPGlobus::$PLUGIN_DIR_URL . "includes/js/wpglobus-media" . WPGlobus::SCRIPT_SUFFIX() . ".js",
282
- array( 'jquery', 'wpglobus-admin' ),
283
- WPGLOBUS_VERSION,
284
- true
285
- );
286
- wp_enqueue_script( 'wpglobus-media' );
287
- wp_localize_script(
288
- 'wpglobus-media',
289
- 'WPGlobusMedia',
290
- array(
291
- 'version' => WPGLOBUS_VERSION,
292
- 'language' => WPGlobus::Config()->default_language,
293
- 'defaultLanguage' => WPGlobus::Config()->default_language,
294
- 'enabledLanguages' => WPGlobus::Config()->enabled_languages,
295
- 'attachment' => array(
296
- 'caption' => 'attachment_caption',
297
- 'alt' => 'attachment_alt',
298
- 'description' => 'attachment_content',
299
- 'title' => 'title'
300
- )
301
- )
302
- );
303
- }
304
-
305
- /**
306
- * Enqueue admin styles.
307
- *
308
- * @scope admin
309
- * @since 1.7.3
310
- * @access public
311
- *
312
- * @return void
313
- */
314
- public function action__admin_styles() {
315
-
316
- if ( ! $this->is_enabled() ) {
317
- return;
318
- }
319
-
320
- wp_register_style(
321
- 'wpglobus-admin-tabs',
322
- WPGlobus::$PLUGIN_DIR_URL . 'includes/css/wpglobus-admin-tabs.css',
323
- array(),
324
- WPGLOBUS_VERSION,
325
- 'all'
326
- );
327
- wp_enqueue_style( 'wpglobus-admin-tabs' );
328
-
329
- }
330
-
331
- /**
332
- * Add language tabs on media page.
333
- *
334
- * @scope admin
335
- * @since 1.7.3
336
- * @access public
337
- *
338
- * @return void
339
- */
340
- public function language_tabs() {
341
-
342
- if ( ! $this->is_enabled() ) {
343
- return;
344
- }
345
-
346
- ?>
347
- <div id="wpglobus-media-body-tabs" style="margin-top:20px;" class="wpglobus-post-body-tabs">
348
- <ul class="wpglobus-post-body-tabs-list"> <?php
349
- $order = 0;
350
- foreach ( WPGlobus::Config()->open_languages as $language ) {
351
- $tab_suffix = $language == WPGlobus::Config()->default_language ? 'default' : $language; ?>
352
- <li id="link-tab-<?php echo esc_attr( $tab_suffix ); ?>" data-language="<?php echo esc_attr( $language ); ?>"
353
- data-order="<?php echo esc_attr( $order ); ?>"
354
- class="wpglobus-post-tab">
355
- <a href="#tab-<?php echo esc_attr( $tab_suffix ); ?>"><?php echo esc_html( WPGlobus::Config()->en_language_name[ $language ] ); ?></a>
356
- </li> <?php
357
- $order ++;
358
- } ?>
359
- </ul> <?php
360
- foreach ( WPGlobus::Config()->open_languages as $language ) {
361
- $tab_suffix = $language == WPGlobus::Config()->default_language ? 'default' : $language; ?>
362
- <div id="tab-<?php echo esc_attr( $tab_suffix ); ?>" style="display:none;"></div> <?php
363
- } ?>
364
- </div>
365
- <?php
366
- }
367
-
368
- /**
369
- * Filters the attachment data prepared for JavaScript.
370
- *
371
- * @since 2.2.22
372
- *
373
- * @param array $response Array of prepared attachment data.
374
- * @param WP_Post $attachment Attachment object.
375
- * @param array|false $meta Array of attachment meta data, or false if there is none.
376
- */
377
- public function filter__prepare_attachment_for_js( $response, $attachment, $meta ) {
378
-
379
- if ( empty( $_POST['wpglobusPrepareAttachments'] ) ) { // WPCS: input var ok, sanitization ok.
380
- return $response;
381
- }
382
-
383
- $fields = array(
384
- 'alt',
385
- 'description',
386
- 'caption',
387
- // @todo may be `uploadedToTitle` field
388
- );
389
-
390
- $current_language = WPGlobus::Config()->default_language;
391
- if ( ! empty( $_POST['wpglobusLanguageTab'] ) ) { // WPCS: input var ok, sanitization ok.
392
- /**
393
- * See includes\js\wpglobus-media.js
394
- */
395
- $current_language = sanitize_text_field( wp_unslash( $_POST['wpglobusLanguageTab'] ) ); // WPCS: input var ok, sanitization ok.
396
-
397
- if ( ! in_array( $current_language, WPGlobus::Config()->enabled_languages, true ) ) {
398
- return $response;
399
- }
400
- }
401
-
402
- foreach ( $fields as $field ) {
403
- if ( ! empty( $response[ $field ] ) && WPGlobus_Core::has_translations( $response[ $field ] ) ) {
404
- $response[ $field ] = WPGlobus_Core::text_filter( $response[ $field ], $current_language );
405
- }
406
- }
407
-
408
- return $response;
409
- }
410
-
411
- }
412
-
413
- endif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/admin/media/wpglobus-media.php DELETED
@@ -1,38 +0,0 @@
1
- <?php
2
- /**
3
- * 1. Add multilingual Caption, Alternative Text, Description and post Title to media files.
4
- * 2. Handling the inserting media in post.
5
- *
6
- * @since 2.2.22
7
- * @package WPGlobus
8
- */
9
- if ( version_compare( $GLOBALS['wp_version'], '4.6.999', '>' ) ) :
10
-
11
- $http_post_action = false;
12
-
13
- if ( WPGlobus_WP::is_doing_ajax() ) {
14
- if ( WPGlobus_WP::is_http_post_action('send-attachment-to-editor') ) {
15
- $http_post_action = 'send-attachment-to-editor';
16
- } else if ( WPGlobus_WP::is_http_post_action('query-attachments') ) {
17
- /**
18
- * Action for gutenberg.
19
- */
20
- $http_post_action = 'query-attachments';
21
- }
22
- }
23
-
24
- /**
25
- * Array of actions to handle the inserting media on post.php page.
26
- */
27
- $http_post_actions = array(
28
- 'send-attachment-to-editor', // standard and builder mode (except gutenberg).
29
- 'query-attachments' // gutenberg.
30
- );
31
-
32
- if ( WPGlobus_WP::is_pagenow( 'post.php' ) || $http_post_action ) {
33
- if ( ! class_exists('WPGlobus_Media') ) {
34
- require_once 'class-wpglobus-media.php';
35
- }
36
- WPGlobus_Media::get_instance($http_post_action, $http_post_actions);
37
- }
38
- endif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/admin/meta/class-wpglobus-meta.php DELETED
@@ -1,545 +0,0 @@
1
- <?php
2
- /**
3
- * Class WPGlobus_Meta
4
- *
5
- * @since 1.9.17
6
- * @since 1.9.25 Added build_multilingual_string function.
7
- *
8
- * @package WPGlobus\Admin\Meta
9
- * @author Alex Gor(alexgff)
10
- */
11
-
12
- if ( ! class_exists( 'WPGlobus_Meta' ) ) :
13
-
14
- /**
15
- * Class WPGlobus_Meta.
16
- */
17
- class WPGlobus_Meta {
18
-
19
- /**
20
- * Instance of this class.
21
- *
22
- * @var WPGlobus_Meta
23
- */
24
- protected static $instance;
25
-
26
- /**
27
- * Meta fields.
28
- *
29
- * @var string[]
30
- */
31
- public static $meta_fields = array();
32
-
33
- /**
34
- * Builder.
35
- *
36
- * @var WPGlobus_Config_Builder
37
- */
38
- protected static $builder = null;
39
-
40
- /**
41
- * Constructor.
42
- *
43
- * @param string[] $meta_fields
44
- * @param WPGlobus_Config_Builder $builder
45
- */
46
- protected function __construct( $meta_fields, $builder ) {
47
-
48
- self::$meta_fields = $meta_fields;
49
- self::$builder = $builder;
50
-
51
- if ( is_admin() ) {
52
- add_filter( 'get_post_metadata', array( __CLASS__, 'filter__post_metadata' ), 5, 4 );
53
-
54
- /**
55
- * @see update_metadata() in wp-includes\meta.php
56
- */
57
- add_filter( 'update_post_metadata', array( __CLASS__, 'filter__update_post_metadata' ), 5, 5 );
58
-
59
- add_filter( 'delete_post_metadata', array( __CLASS__, 'filter__delete_metadata' ), 5, 5 );
60
- }
61
-
62
- }
63
-
64
- /**
65
- * Get instance of this class.
66
- *
67
- * @param string[] $meta_fields
68
- * @param WPGlobus_Config_Builder $builder
69
- *
70
- * @return WPGlobus_Meta
71
- */
72
- public static function get_instance( $meta_fields, $builder ) {
73
- if ( ! ( self::$instance instanceof WPGlobus_Meta ) ) {
74
- self::$instance = new self( $meta_fields, $builder );
75
- }
76
-
77
- return self::$instance;
78
- }
79
-
80
- /**
81
- * public static function get_post_meta( $post_id = false ) {
82
- * $meta_cache = wp_cache_get($post_id, 'post_meta');
83
- * }
84
- * // */
85
-
86
- /**
87
- * Update post meta data.
88
- *
89
- * @see wp-includes\meta.php "update_{$meta_type}_metadata".
90
- *
91
- * @param null|bool $check Whether to allow updating metadata for the given type.
92
- * @param int $object_id Object ID.
93
- * @param string $meta_key Meta key.
94
- * @param mixed $meta_value Meta value. Must be serializable if non-scalar.
95
- * @param mixed $prev_value Optional. If specified, only update existing
96
- * metadata entries with the specified value.
97
- * Otherwise, update all entries.
98
- *
99
- * @return bool
100
- */
101
- public static function filter__update_post_metadata( $check, $object_id, $meta_key, $meta_value, $prev_value ) {
102
-
103
- if ( empty( self::$meta_fields ) ) {
104
- return $check;
105
- }
106
-
107
- if ( ! self::meta_key_exists( $meta_key ) ) {
108
- return $check;
109
- }
110
-
111
- if ( empty( self::$builder->get_language() ) ) {
112
- /**
113
- * Prevent update post meta when $builder is not set.
114
- * For example, Elementor saves meta `_elementor_data` for Template (post type `elementor_library`).
115
- * And we have meta `_elementor_data` in `$meta_fields` array @see wpglobus\configs\elementor.json
116
- * @since 2.2.33
117
- */
118
- return $check;
119
- }
120
-
121
- $meta_type = 'post';
122
-
123
- /** @global wpdb $wpdb */
124
- global $wpdb;
125
-
126
- $table = _get_meta_table( $meta_type );
127
- if ( ! $table ) {
128
- return false;
129
- }
130
-
131
- $column = $meta_type . '_id';
132
- $id_column = 'meta_id';
133
-
134
- $raw_meta_key = $meta_key;
135
-
136
- /**
137
- * Compare existing value to new value if no prev value given and the key exists only once.
138
- * @since 2.5.16 Fixed PHP Warning: count(): Parameter must be an array or an object that implements Countable.
139
- */
140
- if ( empty( $prev_value ) ) {
141
- $old_value = get_metadata_raw( $meta_type, $object_id, $meta_key );
142
- if ( is_countable( $old_value ) && count( $old_value ) === 1 ) {
143
- if ( $old_value[0] === $meta_value ) {
144
- return false;
145
- }
146
- }
147
- }
148
-
149
- $_meta_value = $meta_value;
150
- /**
151
- * @since 2.1.7
152
- */
153
- $meta_value = maybe_serialize( $meta_value );
154
-
155
- /**
156
- * Don't auto-modify this SQL query.
157
- */
158
- // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared
159
- $meta_ids = $wpdb->get_col( $wpdb->prepare( "SELECT $id_column FROM $table WHERE meta_key = %s AND $column = %d", $meta_key, $object_id ) );
160
-
161
- /*
162
- // Incorrect query.
163
- $meta_ids = $wpdb->get_col( $wpdb->prepare(
164
- 'SELECT %s FROM %s WHERE meta_key = %s AND %s = %d',
165
- $id_column,
166
- $table,
167
- $meta_key,
168
- $column,
169
- $object_id
170
- ) );
171
- // */
172
-
173
- if ( empty( $meta_ids ) ) {
174
-
175
- $_passed_value = $_meta_value;
176
-
177
- if ( ! empty( $_passed_value ) && WPGlobus::Config()->default_language !== self::$builder->get_language() ) {
178
- // phpcs:ignore Generic.CodeAnalysis.EmptyStatement
179
- if ( WPGlobus_Core::has_translations( $_passed_value ) ) {
180
- /**
181
- * We get multilingual $meta_value. Let save it as is.
182
- *
183
- * @since 1.9.25 do nothing.
184
- */
185
- } else {
186
- $_passed_value = self::build_multilingual_string( array( self::$builder->get_language() => $_passed_value ) );
187
- }
188
- }
189
-
190
- return add_metadata( $meta_type, $object_id, $raw_meta_key, $_passed_value );
191
- }
192
-
193
- /**
194
- * WPGlobus Core.
195
- * We get $meta_value in language that can be retrieved with self::$builder->get_language().
196
- */
197
- $meta_cache = wp_cache_get( $object_id, $meta_type . '_meta' );
198
-
199
- /**
200
- * May be we need to update meta cache.
201
- *
202
- * @see 'filter__post_metadata' function.
203
- */
204
-
205
- // if ( !$meta_cache ) {
206
- // $meta_cache = update_meta_cache( $meta_type, array( $object_id ) );
207
- // $meta_cache = $meta_cache[$object_id];
208
- // }
209
-
210
- if ( isset( $meta_cache[ $meta_key ] ) ) {
211
-
212
- //if ( WPGlobus_Core::has_translations( $passed_value ) ) {
213
- // phpcs:ignore Generic.CodeAnalysis.EmptyStatement
214
- if ( WPGlobus_Core::has_translations( $meta_value ) ) {
215
- /**
216
- * We get multilingual $meta_value. Let save it as is.
217
- */
218
- // @since 1.9.25 do nothing.
219
- } else {
220
-
221
- foreach ( $meta_cache[ $meta_key ] as $_key => $_ml_value ) {
222
-
223
- $_new_ml_array = array();
224
-
225
- if ( WPGlobus_Core::has_translations( $_ml_value ) ) {
226
-
227
- foreach ( WPGlobus::Config()->enabled_languages as $language ) :
228
-
229
- if ( $language === self::$builder->get_language() ) {
230
-
231
- if ( ! empty( $meta_value ) ) {
232
- $_new_ml_array[ $language ] = $meta_value;
233
- }
234
- } else {
235
-
236
- $_value = WPGlobus_Core::text_filter( $_ml_value, $language, WPGlobus::RETURN_EMPTY );
237
-
238
- if ( '' !== $_value ) {
239
- $_new_ml_array[ $language ] = $_value;
240
- }
241
- }
242
-
243
- endforeach;
244
-
245
- $_new_value = self::build_multilingual_string( $_new_ml_array );
246
-
247
- } else {
248
-
249
- if ( WPGlobus::Config()->default_language === self::$builder->get_language() ) {
250
- $_new_ml_array[ WPGlobus::Config()->default_language ] = $meta_value;
251
- } else {
252
- $_new_ml_array[ WPGlobus::Config()->default_language ] = $_ml_value;
253
- if ( ! empty( $meta_value ) ) {
254
- $_new_ml_array[ self::$builder->get_language() ] = $meta_value;
255
- }
256
- }
257
-
258
- $_new_value = self::build_multilingual_string( $_new_ml_array );
259
-
260
- }
261
-
262
- if ( ! empty( $_new_value ) ) {
263
- //$meta_value = maybe_unserialize( $_new_value );
264
- $meta_value = $_new_value;
265
- }
266
- }
267
- }
268
- }
269
-
270
- $data = compact( 'meta_value' );
271
- $where = array(
272
- $column => $object_id,
273
- 'meta_key' => $meta_key,
274
- );
275
-
276
- $result = $wpdb->update( $table, $data, $where );
277
-
278
- if ( ! $result ) {
279
- return false;
280
- }
281
-
282
- wp_cache_delete( $object_id, $meta_type . '_meta' );
283
-
284
- return true;
285
- }
286
-
287
- /**
288
- * Delete metadata for the specified object.
289
- *
290
- * in our case we should prevent deleting multilingual string when $meta_value is empty.
291
- *
292
- * @see wp-includes\meta.php "delete_{$meta_type}_metadata".
293
- *
294
- * @param null|bool $check Whether to allow metadata deletion of the given type.
295
- * @param int $object_id Object ID.
296
- * @param string $meta_key Meta key.
297
- * @param mixed $meta_value Meta value. Must be serializable if non-scalar.
298
- * @param bool $delete_all Whether to delete the matching metadata entries
299
- * for all objects, ignoring the specified $object_id.
300
- * Default false.
301
- *
302
- * @return bool|null
303
- */
304
- public static function filter__delete_metadata(
305
- $check, $object_id, $meta_key, $meta_value,
306
- /** @noinspection PhpUnusedParameterInspection */
307
- $delete_all = false
308
- ) {
309
-
310
- if ( empty( self::$meta_fields ) ) {
311
- return $check;
312
- }
313
-
314
- if ( ! self::meta_key_exists( $meta_key ) ) {
315
- return $check;
316
- }
317
-
318
- $result = true;
319
-
320
- if ( empty( $meta_value ) && WPGlobus::Config()->default_language === self::$builder->get_language() ) {
321
-
322
- /**
323
- * @todo check for extra languages.
324
- */
325
-
326
- /** @global wpdb $wpdb */
327
- global $wpdb;
328
-
329
- $_meta_value =
330
- $wpdb->get_col(
331
- $wpdb->prepare(
332
- "SELECT meta_value FROM $wpdb->postmeta WHERE post_id = %d AND meta_key = %s",
333
- $object_id,
334
- $meta_key
335
- )
336
- );
337
-
338
- if ( ! isset( $_meta_value ) || empty( $_meta_value[0] ) ) {
339
- $result = null;
340
- } else {
341
- if ( WPGlobus_Core::has_translations( $_meta_value[0] ) ) {
342
- $result = true;
343
- } else {
344
- $result = null;
345
- }
346
- }
347
- }
348
-
349
- return $result;
350
-
351
- }
352
-
353
- /**
354
- * Get post meta.
355
- *
356
- * @see \get_metadata()
357
- *
358
- * @param null|array|string $check The value get_metadata() should return - a single metadata value,
359
- * or an array of values.
360
- * @param int $object_id Object ID.
361
- * @param string $meta_key Meta key.
362
- * @param bool $single Whether to return only the first value of the specified $meta_key.
363
- *
364
- * @return array|null|string
365
- */
366
- public static function filter__post_metadata( $check, $object_id, $meta_key, $single ) {
367
-
368
- if ( empty( self::$meta_fields ) ) {
369
- return $check;
370
- }
371
-
372
- if ( empty( $meta_key ) ) {
373
- $_cache_meta_key = '__WPGLOBUS_META_KEY_EMPTY__';
374
- } else {
375
-
376
- if ( ! self::meta_key_exists( $meta_key ) ) {
377
- return $check;
378
- }
379
- $_cache_meta_key = $meta_key;
380
- }
381
-
382
- $return_value = 'as_array';
383
- if ( $single ) {
384
- $return_value = 'as_single';
385
- }
386
-
387
- /**
388
- * Disable/enable to filter meta field.
389
- *
390
- * @since 1.9.25
391
- *
392
- * @param string $meta_key Meta key.
393
- *
394
- * @return string|boolean String if to filter meta field or false if not.
395
- */
396
- if ( ! empty( $meta_key ) && is_string( $meta_key ) ) {
397
- // phpcs:ignore WordPress.NamingConventions
398
- $meta_key = apply_filters( 'wpglobus/meta/key', $meta_key );
399
- if ( false === $meta_key ) {
400
- return $check;
401
- }
402
- }
403
-
404
- /**
405
- * May be called many times on one page. Let's cache.
406
- */
407
- static $_cache;
408
- //if ( isset( $_cache[ $_cache_meta_key ][ $object_id ][ $return_value ] ) ) {
409
- // @since 2.4
410
- //return $_cache[ $_cache_meta_key ][ $object_id ][ $return_value ];
411
- //}
412
-
413
- $meta_type = 'post';
414
-
415
- $meta_cache = wp_cache_get( $object_id, $meta_type . '_meta' );
416
-
417
- if ( ! $meta_cache ) {
418
- $meta_cache = update_meta_cache( $meta_type, array( $object_id ) );
419
- $meta_cache = $meta_cache[ $object_id ];
420
- }
421
-
422
- if ( ! $meta_key ) {
423
-
424
- /**
425
- * @todo add doc.
426
- */
427
- if ( ! empty( $meta_cache ) ) {
428
-
429
- foreach ( $meta_cache as $_meta_key => $_values ) {
430
- if ( self::meta_key_exists( $_meta_key ) ) {
431
- foreach ( $_values as $__key => $__value ) {
432
- $meta_cache[ $_meta_key ][ $__key ] = WPGlobus_Core::text_filter( $__value, self::$builder->get_language(), WPGlobus::RETURN_EMPTY );
433
- }
434
- }
435
- }
436
- }
437
-
438
- $_cache[ $_cache_meta_key ][ $object_id ][ $return_value ] = $meta_cache;
439
-
440
- return $meta_cache;
441
-
442
- } else {
443
-
444
- if ( isset( $meta_cache[ $meta_key ] ) ) {
445
-
446
- if ( $single ) {
447
-
448
- $_value = WPGlobus_Core::text_filter( $meta_cache[ $meta_key ][0], self::$builder->get_language(), WPGlobus::RETURN_EMPTY );
449
-
450
- if ( ! empty( $_value ) ) {
451
- $_value = maybe_unserialize( $_value );
452
- }
453
-
454
- if ( is_array( $_value ) ) {
455
- // !!!!!!
456
- $_value = array( $_value );
457
- } else {
458
- $_cache[ $_cache_meta_key ][ $object_id ][ $return_value ] = $_value;
459
- }
460
-
461
- return $_value;
462
-
463
- } else {
464
-
465
- foreach ( $meta_cache[ $meta_key ] as $_key => $_value ) {
466
-
467
- if ( WPGlobus_Core::has_translations( $_value ) ) {
468
- $_value = WPGlobus_Core::text_filter( $_value, self::$builder->get_language(), WPGlobus::RETURN_EMPTY );
469
- } elseif ( self::$builder->get_language() !== WPGlobus::Config()->default_language ) {
470
- $_value = '';
471
- }
472
-
473
- if ( ! empty( $_value ) ) {
474
- $meta_cache[ $meta_key ][ $_key ] = maybe_unserialize( $_value );
475
- } else {
476
- $meta_cache[ $meta_key ][ $_key ] = '';
477
- }
478
- }
479
-
480
- $_cache[ $_cache_meta_key ][ $object_id ][ $return_value ] = $meta_cache[ $meta_key ];
481
-
482
- return $meta_cache[ $meta_key ];
483
-
484
- }
485
- }
486
-
487
- if ( $single ) {
488
- return '';
489
- } else {
490
- return array();
491
- }
492
- }
493
-
494
- // We should not be here. Keeping as a precaution for potential code changes.
495
-
496
- /** @noinspection PhpUnreachableStatementInspection */
497
- return $check;
498
-
499
- }
500
-
501
- /**
502
- * Check for meta key existence.
503
- *
504
- * @param string $meta_key
505
- *
506
- * @return bool
507
- */
508
- protected static function meta_key_exists( $meta_key ) {
509
- if ( in_array( $meta_key, self::$meta_fields, true ) ) {
510
- return true;
511
- }
512
-
513
- return false;
514
- }
515
-
516
- /**
517
- * Build multilingual string.
518
- *
519
- * @since 1.9.25
520
- * @todo First idea is: This function needs for Page Builder by SiteOrigin because it should serialize array before creating multilingual string.
521
- *
522
- * @param string[] $ml_array
523
- *
524
- * @return string
525
- */
526
- protected static function build_multilingual_string( $ml_array ) {
527
-
528
- /**
529
- * @todo W.I.P with Page Builder by SiteOrigin.
530
- */
531
- /**
532
- * foreach( $ml_array as $language=>$value ) {
533
- * if ( is_array($value) ) {
534
- * $ml_array[$language] = maybe_serialize($value);
535
- * }
536
- * }
537
- * // */
538
-
539
- $_str = WPGlobus_Utils::build_multilingual_string( $ml_array );
540
-
541
- return $_str;
542
- }
543
- }
544
-
545
- endif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/admin/recommendations/class-wpglobus-admin-recommendations.php DELETED
@@ -1,309 +0,0 @@
1
- <?php
2
- /**
3
- * File: class-wpglobus-admin-recommendations.php
4
- *
5
- * WPGlobus Recommendations.
6
- *
7
- * @since 1.8.7
8
- * @package WPGlobus\Admin
9
- */
10
-
11
- /**
12
- * Class Admin Recommendations.
13
- */
14
- class WPGlobus_Admin_Recommendations {
15
-
16
- /**
17
- * True if need to run JS.
18
- *
19
- * @var bool
20
- */
21
- protected static $run_js = false;
22
-
23
- /**
24
- * Setup actions and filters.
25
- */
26
- public static function setup_hooks() {
27
- /**
28
- * Recommendations on WC Settings page.
29
- *
30
- * @since 2.5.21 Disabled. Needs refactoring.
31
- * <code>
32
- * add_filter( 'woocommerce_general_settings', array( __CLASS__, 'for_woocommerce' ) );
33
- * </code>
34
- */
35
-
36
- add_filter( 'wpglobus_edit_slug_box', array( __CLASS__, 'wpg_plus_slug' ) );
37
- add_action( 'admin_footer', array( __CLASS__, 'on__admin_footer' ), 1000 );
38
- add_action( 'wpglobus_gutenberg_metabox', array( __CLASS__, 'on__gutenberg_metabox' ) );
39
- add_filter(
40
- 'plugin_action_links_' . dirname( dirname( dirname( dirname( plugin_basename( __FILE__ ) ) ) ) ) . '/wpglobus.php',
41
- array(
42
- __CLASS__,
43
- 'filter__plugin_action_links',
44
- )
45
- );
46
-
47
- /**
48
- * @since 2.5.20
49
- */
50
- add_action( 'admin_notices', array( __CLASS__, 'on__admin_notices' ) );
51
-
52
- }
53
-
54
- /**
55
- * Add a link to the Recommendations tab.
56
- *
57
- * @since 2.2.20
58
- *
59
- * @param array $links array of links for the plugins, adapted when the current plugin is found.
60
- *
61
- * @return array
62
- */
63
- public static function filter__plugin_action_links( $links ) {
64
-
65
- $_url = add_query_arg( array( 'page' => WPGlobus::OPTIONS_PAGE_SLUG, 'tab' => 'recommendations' ), admin_url( 'admin.php' ) );
66
-
67
- $recommend_link = '<a style="font-weight: bold;" href="' . $_url . '">' . esc_html__( 'Go Premium' ) . '</a>';
68
- array_unshift( $links, $recommend_link );
69
-
70
- return $links;
71
- }
72
-
73
- /**
74
- * Recommendations for WooCommerce.
75
- *
76
- * @param array $settings Passed by WooCommerce.
77
- *
78
- * @return array
79
- *
80
- * @internal
81
- */
82
- public static function for_woocommerce( $settings ) {
83
- // Ugly set of "IFs" to display heading only if needed, and only once.
84
- $need_to_show_wc_heading = false;
85
- $need_to_recommend_wpg_wc = false;
86
- $need_to_recommend_wpg_mc = false;
87
-
88
- if ( ! is_plugin_active( 'woocommerce-wpglobus/woocommerce-wpglobus.php' ) ) {
89
- $need_to_show_wc_heading = true;
90
- $need_to_recommend_wpg_wc = true;
91
- }
92
-
93
- if ( ! is_plugin_active( 'woocommerce-multicurrency/woocommerce-multicurrency.php' ) ) {
94
- $need_to_show_wc_heading = true;
95
- $need_to_recommend_wpg_mc = true;
96
- }
97
-
98
- if ( $need_to_show_wc_heading ) {
99
- $id = 'wpglobus-recommend-wc-heading';
100
- $title = '';
101
- $desc =
102
- '<h2><span class="wp-ui-notification" style="padding:10px 20px;">' .
103
- '<span class="dashicons dashicons-admin-site"></span> ' .
104
- esc_html__( 'WPGlobus Recommends:', 'wpglobus' ) .
105
- '</span></h2>';
106
-
107
- self::add_wc_section( $settings, $id, $title, $desc );
108
- }
109
-
110
- if ( $need_to_recommend_wpg_wc ) {
111
- $url = WPGlobus_Utils::url_wpglobus_site() . 'product/woocommerce-wpglobus/';
112
- $id = 'wpglobus-recommend-wpg-wc';
113
- $title = '&bull; ' . esc_html__( 'WPGlobus for WooCommerce', 'wpglobus' );
114
- $desc =
115
- '<p class="wp-ui-text-notification">' .
116
- '<strong>' .
117
- esc_html__( 'Translate product titles and descriptions, product categories, tags and attributes.', 'wpglobus' ) .
118
- '</strong>' .
119
- '</p>' .
120
- '<p>' .
121
- '<strong>' .
122
- esc_html__( 'Get it now:', 'wpglobus' ) . ' ' .
123
- '</strong>' .
124
- '<a href="' . esc_url( $url ) . '">' . esc_html( $url ) . '</a>' .
125
- '</p>';
126
- self::add_wc_section( $settings, $id, $title, $desc );
127
- }
128
-
129
- if ( $need_to_recommend_wpg_mc ) {
130
- $url = WPGlobus_Utils::url_wpglobus_site() . 'product/wpglobus-multi-currency/';
131
- $id = 'wpglobus-recommend-wpg-mc';
132
- $title = '&bull; ' . __( 'WooCommerce Multi-Currency', 'wpglobus' );
133
- $desc =
134
- '<p class="wp-ui-text-notification">' .
135
- '<strong>' .
136
- esc_html__( 'Accept multiple currencies in your online store!', 'wpglobus' ) .
137
- '</strong>' .
138
- '</p>' .
139
- '<p>' .
140
- '<strong>' .
141
- esc_html__( 'Check it out:', 'wpglobus' ) .
142
- '</strong>' .
143
- ' ' .
144
- '<a href="' . $url . '">' . $url . '</a>' .
145
- '</p>';
146
- self::add_wc_section( $settings, $id, $title, $desc );
147
- }
148
-
149
- return $settings;
150
-
151
- }
152
-
153
- /**
154
- * Generic WC option section consisting of one block of text only.
155
- *
156
- * @param array $settings Array of WC settings, passed by reference.
157
- * @param string $id Section ID, must be unique.
158
- * @param string $title Section title, no HTML.
159
- * @param string $desc The text to display, HTML is allowed.
160
- *
161
- * @return void
162
- */
163
- protected static function add_wc_section( &$settings, $id, $title, $desc ) {
164
- $settings[] =
165
- array(
166
- 'type' => 'title',
167
- 'id' => $id,
168
- 'title' => $title,
169
- 'desc' => $desc,
170
- );
171
-
172
- $settings[] =
173
- array(
174
- 'type' => 'sectionend',
175
- 'id' => $id,
176
- );
177
- }
178
-
179
- /**
180
- * Recommend WPGlobus Plus to edit permalinks.
181
- *
182
- * @since 1.9.6
183
- */
184
- public static function wpg_plus_slug() {
185
-
186
- global $pagenow;
187
-
188
- if ( 'post-new.php' === $pagenow ) {
189
- return;
190
- }
191
-
192
- $container_start = '<p id="wpglobus-plus-slug-recommendation" style="padding:5px; font-weight: bold"><span class="dashicons dashicons-admin-site"></span> ';
193
- $container_end = '</p>';
194
-
195
- if ( ! is_plugin_active( 'wpglobus-plus/wpglobus-plus.php' ) ) {
196
- $url = WPGlobus_Utils::url_wpglobus_site() . 'product/wpglobus-plus/#slug';
197
- echo $container_start; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
198
- esc_html_e( 'Translate permalinks with our premium add-on, WPGlobus Plus!', 'wpglobus' );
199
- echo ' ';
200
- esc_html_e( 'Check it out:', 'wpglobus' );
201
- echo ' ';
202
- echo '<a href="' . esc_url( $url ) . '" target="_blank">' . esc_html( $url ) . '</a>';
203
- echo $container_end; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
204
-
205
- self::$run_js = true;
206
-
207
- } elseif ( ! class_exists( 'WPGlobusPlus_Slug', false ) ) {
208
- $url = admin_url( 'admin.php' ) . '?page=' . WPGlobusPlus::WPGLOBUS_PLUS_OPTIONS_PAGE . '&tab=modules';
209
- echo $container_start; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
210
- esc_html_e( 'To translate permalinks, please activate the module Slug.', 'wpglobus' );
211
- echo ' ';
212
- // Do not translate.
213
- $msg = __( 'Go to WPGlobus Plus Options page', 'wpglobus-plus' );
214
-
215
- echo '<a href="' . esc_url( $url ) . '" target="_blank">' . esc_html( $msg ) . '.</a>';
216
- echo $container_end; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
217
-
218
- self::$run_js = true;
219
-
220
- }
221
- }
222
-
223
- /**
224
- * Action wpglobus_gutenberg_metabox.
225
- *
226
- * @since 1.9.17
227
- */
228
- public static function on__gutenberg_metabox() {
229
-
230
- if ( WPGlobus::Config()->builder->is_running() ) {
231
- self::wpg_plus_slug();
232
- self::$run_js = false;
233
- }
234
-
235
- }
236
-
237
- /**
238
- * Action admin_footer.
239
- *
240
- * @since 1.9.17
241
- */
242
- public static function on__admin_footer() {
243
-
244
- if ( ! self::$run_js ) {
245
- return;
246
- }
247
-
248
- if ( ! WPGlobus::Config()->builder->is_running() ) {
249
- return;
250
- }
251
-
252
- if ( WPGlobus::Config()->builder->get_language() === WPGlobus::Config()->default_language ) {
253
- return;
254
- }
255
-
256
- ?>
257
- <script>
258
- var $edit_slug_box = jQuery('#edit-slug-box');
259
- $edit_slug_box.css({'display': 'none'});
260
- var wpglobus_slug_recomm_box = jQuery('#wpglobus-plus-slug-recommendation').remove();
261
- $edit_slug_box.before(wpglobus_slug_recomm_box);
262
- </script>
263
- <?php
264
- }
265
-
266
- /**
267
- * Display an admin notice in WordPress admin area.
268
- *
269
- * @since 2.5.20
270
- */
271
- public static function on__admin_notices() {
272
-
273
- global $wp_version;
274
-
275
- /**
276
- * Check for PHP version.
277
- */
278
- if ( version_compare( PHP_VERSION, '5.6.0', '<' ) ) {
279
-
280
- echo '<div class="notice notice-error"><p>';
281
- printf( // Translators: %1$s - this plugin name. %2$s - the required PHP version.
282
- esc_html__( 'For %1$s to work correctly, PHP version %2$s or later is required.', 'wpglobus' ) . ' ' .
283
- // Translators: %3$s - the current PHP version.
284
- esc_html__( 'The PHP version on your server is %3$s.', 'wpglobus' ),
285
- '<strong>WPGlobus</strong>',
286
- '<strong>5.6</strong>',
287
- '<strong>' . PHP_VERSION . '</strong>'
288
- );
289
- echo '</p></div>';
290
- }
291
-
292
- /**
293
- * Check for WordPress version.
294
- */
295
- if ( version_compare( $wp_version, '5.4.99', '<' ) ) {
296
-
297
- echo '<div class="notice notice-error"><p>';
298
- printf( // Translators: %1$s - this plugin name. %2$s - the required WordPress version.
299
- esc_html__( 'For %1$s to work correctly, WordPress version %2$s or later is required.', 'wpglobus' ) . ' ',
300
- '<strong>WPGlobus ' . esc_html( WPGLOBUS_VERSION ) . '</strong>',
301
- '<strong>5.5</strong>'
302
- );
303
- echo '</p></div>';
304
- }
305
- }
306
-
307
- } // class WPGlobus_Admin_Recommendations.
308
-
309
- # --- EOF
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/admin/register-post-types/class-wpglobus-register-post-types.php DELETED
@@ -1,147 +0,0 @@
1
- <?php
2
- /**
3
- * File: class-wpglobus-register-post-types.php
4
- *
5
- * @since 2.2.24
6
- * @package WPGlobus\Admin
7
- */
8
-
9
- /**
10
- * Class WPGlobus_Register_Post_Types.
11
- */
12
- if ( ! class_exists( 'WPGlobus_Register_Post_Types' ) ) :
13
-
14
- class WPGlobus_Register_Post_Types {
15
-
16
- /**
17
- * @var array
18
- */
19
- protected static $pages = array( 'edit.php', 'post.php' );
20
-
21
- /**
22
- * Don't handling with these post types.
23
- * @var array
24
- */
25
- protected static $excluded_post_types = array(
26
- 'attachment',
27
- 'attachment:audio',
28
- 'attachment:video',
29
- 'revision',
30
- 'nav_menu_item',
31
- 'custom_css',
32
- 'customize_changeset',
33
- 'oembed_cache',
34
- 'user_request',
35
- 'wp_block',
36
- );
37
-
38
- /**
39
- * @var array
40
- */
41
- protected static $post_types = array();
42
-
43
- /**
44
- * Constructor.
45
- */
46
- public static function construct() {
47
-
48
- if ( ! WPGlobus_WP::is_pagenow(self::$pages) ) {
49
- return;
50
- }
51
-
52
- /**
53
- * @see wp-includes\post.php
54
- */
55
- add_action( 'registered_post_type', array( __CLASS__, 'on__registered' ), 10, 2 );
56
-
57
- add_action( 'wp_loaded', array( __CLASS__, 'on__wp_loaded' ) );
58
-
59
- }
60
-
61
- /**
62
- * Fires after a post type is registered.
63
- *
64
- * @param string $post_type Post type.
65
- * @param WP_Post_Type $post_type_object Arguments used to register the post type.
66
- */
67
- public static function on__registered( $post_type, $post_type_object ) {
68
-
69
- global $_wp_post_type_features;
70
-
71
- if ( defined('DOING_AJAX') && DOING_AJAX ) {
72
- return;
73
- }
74
-
75
- static $_init = null;
76
-
77
- if ( is_null($_init) ) {
78
-
79
- self::$excluded_post_types = array_merge(self::$excluded_post_types, WPGlobus::Config()->disabled_entities);
80
-
81
- self::$excluded_post_types = array_unique( self::$excluded_post_types );
82
-
83
- $_init = true;
84
-
85
- }
86
-
87
- if ( self::is_excluded_post_type($post_type) ) {
88
- return;
89
- }
90
-
91
- if ( empty($_wp_post_type_features[$post_type]) ) {
92
- return;
93
- }
94
-
95
- /**
96
- * @see `use_block_editor_for_post_type()` in wp-admin\includes\post.php
97
- */
98
- self::$post_types[$post_type] = array(
99
- 'show_in_rest' => $post_type_object->show_in_rest,
100
- 'features' => $_wp_post_type_features[$post_type]
101
- );
102
-
103
- }
104
-
105
- /**
106
- * Fired to save option.
107
- */
108
- public static function on__wp_loaded() {
109
-
110
- if ( defined('DOING_AJAX') && DOING_AJAX ) {
111
- return;
112
- }
113
- if ( ! empty(self::$post_types) ) {
114
- update_option( WPGlobus::Config()->option_register_post_types, self::$post_types, false );
115
- }
116
- }
117
-
118
- /**
119
- * Check for excluded post type.
120
- *
121
- * @return bool
122
- */
123
- public static function is_excluded_post_type( $post_type = '') {
124
-
125
- if ( empty($post_type) ) {
126
- return true;
127
- }
128
-
129
- if ( in_array( $post_type, self::get_excluded_post_types() ) ) {
130
- return true;
131
- }
132
-
133
- return false;
134
- }
135
-
136
- /**
137
- * Get excluded post types.
138
- *
139
- * @return array
140
- */
141
- public static function get_excluded_post_types() {
142
- return self::$excluded_post_types;
143
- }
144
- }
145
-
146
- endif;
147
- /* EOF */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/admin/wpglobus-admin.php DELETED
@@ -1,38 +0,0 @@
1
- <?php
2
- /**
3
- * @since 1.8.1
4
- * @package WPGlobus
5
- */
6
-
7
- /**
8
- * Admin page central.
9
- *
10
- * @since 1.6.6
11
- */
12
- require_once dirname( __FILE__ ) . '/central/class-wpglobus-admin-central.php';
13
- WPGlobus_Admin_Central::construct();
14
-
15
- /**
16
- * @since 2.2.24
17
- */
18
- require_once dirname( __FILE__ ) . '/register-post-types/class-wpglobus-register-post-types.php';
19
- WPGlobus_Register_Post_Types::construct();
20
-
21
- /**
22
- * @since 2.4
23
- */
24
- require_once dirname( __FILE__ ) . '/class-wpglobus-admin-post.php';
25
- WPGlobus_Admin_Post::construct();
26
-
27
- if ( isset( $_GET['wpglobus-debug'] ) ) { // WPCS: input var ok, sanitization ok.
28
- /**
29
- * To load debug info
30
- * site/wp-admin/post.php?post={{post_ID}}&action=edit&wpglobus-debug=godmode
31
- * or
32
- * site/wp-admin/post.php?post={{post_ID}}&action=edit&wpglobus-debug=meta
33
- */
34
- require_once dirname( __FILE__ ) . '/debug/class-wpglobus-admin-debug.php';
35
- WPGlobus_Admin_Debug::get_instance();
36
- }
37
-
38
- # --- EOF
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/builders/assets/wpglobus-admin-builder-49.js DELETED
@@ -1,348 +0,0 @@
1
- /**
2
- * WPGlobus Administration Core.
3
- * Interface JS functions
4
- *
5
- * @since 1.9.17
6
- *
7
- * @package WPGlobus
8
- * @subpackage Administration
9
- */
10
- /*jslint browser: true*/
11
- /*global jQuery, console, WPGlobusCore*/
12
-
13
- var WPGlobusCore;
14
-
15
- (function($) {
16
- var api;
17
- api = WPGlobusCore = {
18
- strpos: function( haystack, needle, offset){
19
- haystack = "" + haystack;
20
- var i = haystack.indexOf( needle, offset );
21
- return i >= 0 ? i : false;
22
- },
23
-
24
- TextFilter: function(text, language, return_in){
25
- if ( typeof text == 'undefined' || '' === text ) { return text; }
26
-
27
- var pos_start, pos_end, possible_delimiters = [], is_local_text_found = false;;
28
-
29
- language = '' == language ? 'en' : language;
30
- return_in = typeof return_in == 'undefined' || '' == return_in ? 'RETURN_IN_DEFAULT_LANGUAGE' : return_in;
31
-
32
- possible_delimiters[0] = [];
33
- possible_delimiters[0]['start'] = WPGlobusCoreData.locale_tag_start.replace('%s', language);
34
- possible_delimiters[0]['end'] = WPGlobusCoreData.locale_tag_end;
35
-
36
- possible_delimiters[1] = [];
37
- possible_delimiters[1]['start'] = '<!--:'+language+'-->';
38
- possible_delimiters[1]['end'] = '<!--:-->';
39
-
40
- possible_delimiters[2] = [];
41
- possible_delimiters[2]['start'] = '[:'+language+']';
42
- possible_delimiters[2]['end'] = '[:';
43
-
44
-
45
-
46
- for (var i = 0; i < 3; i++) {
47
-
48
- pos_start = api.strpos( text, possible_delimiters[i]['start'] );
49
- if ( pos_start === false ) {
50
- continue;
51
- }
52
-
53
- pos_start = pos_start + possible_delimiters[i]['start'].length;
54
-
55
- pos_end = api.strpos( text, possible_delimiters[i]['end'], pos_start );
56
-
57
- if ( pos_end === false ) {
58
- text = text.substr( pos_start );
59
- } else {
60
- text = text.substr( pos_start, pos_end - pos_start );
61
- }
62
-
63
- is_local_text_found = true;
64
- break;
65
-
66
- }
67
-
68
- if ( ! is_local_text_found ) {
69
- if ( return_in == 'RETURN_EMPTY' ) {
70
- if ( language == WPGlobusCoreData.default_language && ! /(\{:|\[:|<!--:)[a-z]{2}/.test(text) ) {
71
- /** do nothing */
72
- } else {
73
- text = '';
74
- }
75
- } else {
76
- /**
77
- * Try RETURN_IN_DEFAULT_LANGUAGE.
78
- */
79
- if ( language == WPGlobusCoreData.default_language ) {
80
- if ( /(\{:|\[:|<!--:)[a-z]{2}/.test(text) ) {
81
- text = '';
82
- }
83
- } else {
84
- text = api.TextFilter( text, WPGlobusCoreData.default_language );
85
- }
86
- }
87
- }
88
- return text;
89
- },
90
- addLocaleMarks: function(text, language) {
91
- return WPGlobusCoreData.locale_tag_start.replace('%s', language) + text + WPGlobusCoreData.locale_tag_end;
92
- },
93
- getTranslations: function(text) {
94
- var t = {},
95
- return_in;
96
- $.each(WPGlobusCoreData.enabled_languages, function(i,l){
97
- return_in = l == WPGlobusCoreData.default_language ? 'RETURN_IN_DEFAULT_LANGUAGE' : 'RETURN_EMPTY';
98
- t[l] = api.TextFilter(text, l, return_in);
99
- });
100
- return t;
101
- },
102
- getString: function(s, newVal, l) {
103
- if ( 'undefined' === typeof(s) ) {
104
- return s;
105
- }
106
- if ( 'undefined' === typeof(newVal) ) {
107
- newVal = '';
108
- }
109
- if ( 'undefined' === typeof(l) ) {
110
- l = WPGlobusCoreData.language;
111
- }
112
-
113
- s = api.getTranslations(s);
114
- s[l] = newVal;
115
-
116
- var cS = '';
117
-
118
- $.each(s, function(ln,val){
119
- if ( '' != val && ln != WPGlobusCoreData.default_language) {
120
- cS += api.addLocaleMarks(val, ln);
121
- }
122
- });
123
-
124
- if ( '' != s[WPGlobusCoreData.default_language] ) {
125
- if ( '' == cS ) {
126
- cS = s[WPGlobusCoreData.default_language];
127
- } else {
128
- cS = api.addLocaleMarks(s[WPGlobusCoreData.default_language], WPGlobusCoreData.default_language) + cS;
129
- }
130
- }
131
- return cS;
132
- }
133
- };
134
- })(jQuery);
135
-
136
- jQuery(document).ready(function ($) {
137
- "use strict";
138
-
139
- if ( 'undefined' === typeof WPGlobusAdmin ) {
140
- return;
141
- }
142
-
143
- var api = {
144
- languageSelectorBoxDelta: 0,
145
- locationPathname: '/wp-admin/post.php',
146
- init: function() {
147
- //api.setCookie();
148
- if ('taxonomy-edit' === WPGlobusAdmin.page) {
149
- api.taxonomyEdit();
150
- } else {
151
- api.start();
152
- }
153
- },
154
- _info: function() {
155
- var lang = undefined;
156
- if( $('#language').length > 0 ) {
157
- lang = $('#language').val();
158
- }
159
- console.log('Current language from hidden (#language) : ', lang);
160
-
161
- lang = undefined;
162
- if( $('#wpglobus-language').length > 0 ) {
163
- lang = $('#wpglobus-language').val();
164
- }
165
- console.log('Current language from hidden (#wpglobus-language) : ', lang);
166
-
167
- lang = undefined;
168
- if( $('input[name="wpglobus-language"]').length > 0 ) {
169
- lang = $('input[name="wpglobus-language"]').val();
170
- }
171
- console.log('Current language from hidden (input[name="wpglobus-language"]) : ', lang);
172
-
173
- lang = undefined;
174
- if( $('input[name="wpglobus_language"]').length > 0 ) {
175
- lang = $('input[name="wpglobus_language"]').val();
176
- }
177
- console.log('Current language from hidden (input[name="wpglobus_language"]) : ', lang);
178
- console.log('Builder : ', WPGlobusAdmin.builder);
179
-
180
- var content = $('#content').val();
181
- if ( content == '' ) {
182
- console.log('Editor content (#content) : (empty)');
183
- } else {
184
- console.log(content);
185
- }
186
- },
187
- checkCookie: function() {
188
- if ( -1 != window.location.search.indexOf('language=') ) {
189
- return false;
190
- }
191
- if ( 'post.php' == WPGlobusAdmin.page ) {
192
- var cookie = wpCookies.get(WPGlobusAdmin.builder.languageCookie);
193
-
194
- if ( null !== cookie && history.pushState) {
195
- cookie = cookie.split('+');
196
- var language = cookie[0];
197
- if ('undefined' !== typeof cookie[1] && cookie[1] + 0 == WPGlobusAdmin.$_get.post ) {
198
- var newurl = window.location.protocol + "//" + window.location.host + window.location.pathname + window.location.search + '&language='+language;
199
- window.history.pushState({path:newurl},'',newurl);
200
- return language;
201
- }
202
- }
203
- }
204
- return false;
205
- },
206
- setCookie: function() {
207
- var lang = api.checkCookie();
208
- if ( ! lang ) {
209
- lang = WPGlobusAdmin.$_get.language;
210
- if ( 'undefined' === typeof lang ) {
211
- lang = WPGlobusAdmin.data.default_language;
212
- }
213
- }
214
- wpCookies.set(WPGlobusAdmin.builder.languageCookie, lang+'+'+WPGlobusAdmin.$_get.post, 31536000, api.locationPathname );
215
- },
216
- setLocationSearch: function() {
217
- if ( ! history.pushState || -1 != window.location.search.indexOf('language=') ) {
218
- return;
219
- }
220
- if ( WPGlobusAdmin.data.default_language != WPGlobusAdmin.currentTab ) {
221
- var newurl = window.location.protocol + "//" + window.location.host + window.location.pathname + window.location.search + '&language='+WPGlobusAdmin.currentTab;
222
- window.history.pushState({path:newurl},'',newurl);
223
- }
224
- },
225
- taxonomyEdit: function() {
226
-
227
- $('.wpglobus-taxonomy-tabs').insertAfter('#ajax-response');
228
-
229
- /**
230
- * Make class wrap as tabs container.
231
- * Tabs on.
232
- */
233
- $('.wrap').tabs();
234
-
235
- $(WPGlobusAdmin.data.multilingualSlug.title).insertAfter('.term-slug-wrap th label');
236
-
237
- if ( WPGlobusAdmin.currentTab !== WPGlobusAdmin.data.default_language ) {
238
- $('.wpglobus-tax-edit-tab').removeClass('ui-tabs-active ui-state-active');
239
- $('#wpglobus-link-tab-'+WPGlobusAdmin.currentTab).addClass('ui-tabs-active ui-state-active');
240
- }
241
-
242
- $(document).on('click', '.wpglobus-tax-edit-tab a', function(event) {
243
- event.preventDefault();
244
- var _href = $(this).data('href');
245
- location.href = _href;
246
- });
247
-
248
- api.setMultilingualFields();
249
-
250
- /**
251
- * Init Yoast tinymce editor for description.
252
- */
253
- $(document).on( 'tinymce-editor-init', function( event, editor ) {
254
- $( '#' + editor.getContainer().id ).find('iframe').addClass(WPGlobusAdmin.builder.translatableClass).css({'width':''});
255
- });
256
- },
257
- start: function() {
258
- /**
259
- *
260
- */
261
- api.setLocationSearch();
262
-
263
- /**
264
- *
265
- */
266
- var wrap_at = '#postdivrich',
267
- set_title = true,
268
- content_tabs_id = '#post-body-content';
269
- if ( WPGlobusAdmin.data.support['editor'] === false ) {
270
- wrap_at = '#titlediv';
271
- set_title = false;
272
- }
273
- if ( WPGlobusAdmin.data.support['title'] === false ) {
274
- set_title = false;
275
- }
276
-
277
- /**
278
- * Make post-body-content as tabs container.
279
- */
280
- $(content_tabs_id).prepend($('.wpglobus-post-body-tabs-list'));
281
- $.each(WPGlobusAdmin.tabs, function (index, suffix) {
282
- if ('default' === suffix) {
283
- $(wrap_at).wrap('<div id="tab-default"></div>');
284
- if ( set_title ) {
285
- $($('#titlediv')).insertBefore(wrap_at);
286
- }
287
- } else {
288
- $(wrap_at+'-' + suffix).wrap('<div id="tab-' + suffix + '"></div>');
289
- if ( set_title ) {
290
- $($('#titlediv-' + suffix)).insertBefore(wrap_at+'-' + suffix);
291
- }
292
- }
293
- });
294
-
295
- $(content_tabs_id).addClass('wpglobus-post-body-tabs');
296
-
297
- /**
298
- * Set fields as multilingual.
299
- */
300
- //setTimeout(api.setMultilingualFields(), 1000);
301
- api.setMultilingualFields();
302
-
303
- /**
304
- *
305
- */
306
- //api.ajaxPrefilter();
307
-
308
- },
309
- ajaxPrefilter: function() {
310
- /**
311
- * @todo WIP.
312
- */
313
- $.ajaxPrefilter(function( options, originalOptions, jqXHR ) {
314
- // Modify options, control originalOptions, store jqXHR, etc
315
- //console.log(options);
316
- });
317
- },
318
- setMultilingualFields: function() {
319
- $.each(WPGlobusAdmin.builder.multilingualFields, function(indx, field) {
320
- var elementBy = 'name';
321
- var node = document.getElementsByName(field);
322
- var $element;
323
-
324
- if ( 0 == node.length ) {
325
- elementBy = 'id';
326
- node = document.getElementById(field);
327
- }
328
-
329
- if ( null === node ) {
330
- return;
331
- } else {
332
- if ( 'id' == elementBy ) {
333
- $element = $('#'+field);
334
- } else {
335
- var nodeName = node[0].nodeName;
336
- nodeName = nodeName.toLowerCase();
337
- $element = $(nodeName+'[name="'+field+'"]');
338
- }
339
- $element.addClass(WPGlobusAdmin.builder.translatableClass);
340
- }
341
-
342
- });
343
- }
344
- }
345
-
346
- WPGlobusAdmin = $.extend({}, WPGlobusAdmin, api);
347
- WPGlobusAdmin.init();
348
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/builders/assets/wpglobus-admin-builder-49.min.js DELETED
@@ -1 +0,0 @@
1
- var WPGlobusCore;!function(l){var s=WPGlobusCore={strpos:function(a,t,e){var o=(a=""+a).indexOf(t,e);return 0<=o&&o},TextFilter:function(a,t,e){if(void 0===a||""===a)return a;var o,n,l=[],i=!1;t=""==t?"en":t,e=void 0===e||""==e?"RETURN_IN_DEFAULT_LANGUAGE":e,l[0]=[],l[0].start=WPGlobusCoreData.locale_tag_start.replace("%s",t),l[0].end=WPGlobusCoreData.locale_tag_end,l[1]=[],l[1].start="\x3c!--:"+t+"--\x3e",l[1].end="\x3c!--:--\x3e",l[2]=[],l[2].start="[:"+t+"]",l[2].end="[:";for(var u=0;u<3;u++)if(!1!==(o=s.strpos(a,l[u].start))){o+=l[u].start.length,a=!1===(n=s.strpos(a,l[u].end,o))?a.substr(o):a.substr(o,n-o),i=!0;break}return i||("RETURN_EMPTY"==e?t==WPGlobusCoreData.default_language&&!/(\{:|\[:|<!--:)[a-z]{2}/.test(a)||(a=""):t==WPGlobusCoreData.default_language?/(\{:|\[:|<!--:)[a-z]{2}/.test(a)&&(a=""):a=s.TextFilter(a,WPGlobusCoreData.default_language)),a},addLocaleMarks:function(a,t){return WPGlobusCoreData.locale_tag_start.replace("%s",t)+a+WPGlobusCoreData.locale_tag_end},getTranslations:function(e){var o,n={};return l.each(WPGlobusCoreData.enabled_languages,function(a,t){o=t==WPGlobusCoreData.default_language?"RETURN_IN_DEFAULT_LANGUAGE":"RETURN_EMPTY",n[t]=s.TextFilter(e,t,o)}),n},getString:function(a,t,e){if(void 0===a)return a;void 0===t&&(t=""),void 0===e&&(e=WPGlobusCoreData.language),(a=s.getTranslations(a))[e]=t;var o="";return l.each(a,function(a,t){""!=t&&a!=WPGlobusCoreData.default_language&&(o+=s.addLocaleMarks(t,a))}),""!=a[WPGlobusCoreData.default_language]&&(o=""==o?a[WPGlobusCoreData.default_language]:s.addLocaleMarks(a[WPGlobusCoreData.default_language],WPGlobusCoreData.default_language)+o),o}}}(jQuery),jQuery(document).ready(function(l){"use strict";var t;"undefined"!=typeof WPGlobusAdmin&&(t={languageSelectorBoxDelta:0,locationPathname:"/wp-admin/post.php",init:function(){"taxonomy-edit"===WPGlobusAdmin.page?t.taxonomyEdit():t.start()},_info:function(){var a=void 0;0<l("#language").length&&(a=l("#language").val()),console.log("Current language from hidden (#language) : ",a),a=void 0,0<l("#wpglobus-language").length&&(a=l("#wpglobus-language").val()),console.log("Current language from hidden (#wpglobus-language) : ",a),a=void 0,0<l('input[name="wpglobus-language"]').length&&(a=l('input[name="wpglobus-language"]').val()),console.log('Current language from hidden (input[name="wpglobus-language"]) : ',a),a=void 0,0<l('input[name="wpglobus_language"]').length&&(a=l('input[name="wpglobus_language"]').val()),console.log('Current language from hidden (input[name="wpglobus_language"]) : ',a),console.log("Builder : ",WPGlobusAdmin.builder);var t=l("#content").val();""==t?console.log("Editor content (#content) : (empty)"):console.log(t)},checkCookie:function(){if(-1!=window.location.search.indexOf("language="))return!1;if("post.php"==WPGlobusAdmin.page){var a=wpCookies.get(WPGlobusAdmin.builder.languageCookie);if(null!==a&&history.pushState){var t=(a=a.split("+"))[0];if(void 0!==a[1]&&a[1]+0==WPGlobusAdmin.$_get.post){var e=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search+"&language="+t;return window.history.pushState({path:e},"",e),t}}}return!1},setCookie:function(){var a=t.checkCookie();a||void 0===(a=WPGlobusAdmin.$_get.language)&&(a=WPGlobusAdmin.data.default_language),wpCookies.set(WPGlobusAdmin.builder.languageCookie,a+"+"+WPGlobusAdmin.$_get.post,31536e3,t.locationPathname)},setLocationSearch:function(){var a;history.pushState&&-1==window.location.search.indexOf("language=")&&WPGlobusAdmin.data.default_language!=WPGlobusAdmin.currentTab&&(a=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search+"&language="+WPGlobusAdmin.currentTab,window.history.pushState({path:a},"",a))},taxonomyEdit:function(){l(".wpglobus-taxonomy-tabs").insertAfter("#ajax-response"),l(".wrap").tabs(),l(WPGlobusAdmin.data.multilingualSlug.title).insertAfter(".term-slug-wrap th label"),WPGlobusAdmin.currentTab!==WPGlobusAdmin.data.default_language&&(l(".wpglobus-tax-edit-tab").removeClass("ui-tabs-active ui-state-active"),l("#wpglobus-link-tab-"+WPGlobusAdmin.currentTab).addClass("ui-tabs-active ui-state-active")),l(document).on("click",".wpglobus-tax-edit-tab a",function(a){a.preventDefault();var t=l(this).data("href");location.href=t}),t.setMultilingualFields(),l(document).on("tinymce-editor-init",function(a,t){l("#"+t.getContainer().id).find("iframe").addClass(WPGlobusAdmin.builder.translatableClass).css({width:""})})},start:function(){t.setLocationSearch();var e="#postdivrich",o=!0,a="#post-body-content";!1===WPGlobusAdmin.data.support.editor&&(o=!(e="#titlediv")),!1===WPGlobusAdmin.data.support.title&&(o=!1),l(a).prepend(l(".wpglobus-post-body-tabs-list")),l.each(WPGlobusAdmin.tabs,function(a,t){"default"===t?(l(e).wrap('<div id="tab-default"></div>'),o&&l(l("#titlediv")).insertBefore(e)):(l(e+"-"+t).wrap('<div id="tab-'+t+'"></div>'),o&&l(l("#titlediv-"+t)).insertBefore(e+"-"+t))}),l(a).addClass("wpglobus-post-body-tabs"),t.setMultilingualFields()},ajaxPrefilter:function(){l.ajaxPrefilter(function(a,t,e){})},setMultilingualFields:function(){l.each(WPGlobusAdmin.builder.multilingualFields,function(a,t){var e,o="name",n=document.getElementsByName(t);0==n.length&&(o="id",n=document.getElementById(t)),null!==n&&("id"==o?l("#"+t):(e=(e=n[0].nodeName).toLowerCase(),l(e+'[name="'+t+'"]'))).addClass(WPGlobusAdmin.builder.translatableClass)})}},(WPGlobusAdmin=l.extend({},WPGlobusAdmin,t)).init())});
 
trunk/includes/builders/assets/wpglobus-admin-builder-51.js DELETED
@@ -1,362 +0,0 @@
1
- /**
2
- * WPGlobus Administration Core.
3
- * Interface JS functions
4
- *
5
- * @since 1.9.17
6
- *
7
- * @package WPGlobus
8
- * @subpackage Administration
9
- */
10
- /*jslint browser: true*/
11
- /*global jQuery, console, WPGlobusCore*/
12
-
13
- var WPGlobusCore;
14
-
15
- (function($) {
16
- var api;
17
- api = WPGlobusCore = {
18
- strpos: function( haystack, needle, offset){
19
- haystack = "" + haystack;
20
- var i = haystack.indexOf( needle, offset );
21
- return i >= 0 ? i : false;
22
- },
23
-
24
- TextFilter: function(text, language, return_in){
25
- if ( typeof text == 'undefined' || '' === text ) { return text; }
26
-
27
- var pos_start, pos_end, possible_delimiters = [], is_local_text_found = false;;
28
-
29
- language = '' == language ? 'en' : language;
30
- return_in = typeof return_in == 'undefined' || '' == return_in ? 'RETURN_IN_DEFAULT_LANGUAGE' : return_in;
31
-
32
- possible_delimiters[0] = [];
33
- possible_delimiters[0]['start'] = WPGlobusCoreData.locale_tag_start.replace('%s', language);
34
- possible_delimiters[0]['end'] = WPGlobusCoreData.locale_tag_end;
35
-
36
- possible_delimiters[1] = [];
37
- possible_delimiters[1]['start'] = '<!--:'+language+'-->';
38
- possible_delimiters[1]['end'] = '<!--:-->';
39
-
40
- possible_delimiters[2] = [];
41
- possible_delimiters[2]['start'] = '[:'+language+']';
42
- possible_delimiters[2]['end'] = '[:';
43
-
44
-
45
-
46
- for (var i = 0; i < 3; i++) {
47
-
48
- pos_start = api.strpos( text, possible_delimiters[i]['start'] );
49
- if ( pos_start === false ) {
50
- continue;
51
- }
52
-
53
- pos_start = pos_start + possible_delimiters[i]['start'].length;
54
-
55
- pos_end = api.strpos( text, possible_delimiters[i]['end'], pos_start );
56
-
57
- if ( pos_end === false ) {
58
- text = text.substr( pos_start );
59
- } else {
60
- text = text.substr( pos_start, pos_end - pos_start );
61
- }
62
-
63
- is_local_text_found = true;
64
- break;
65
-
66
- }
67
-
68
- if ( ! is_local_text_found ) {
69
- if ( return_in == 'RETURN_EMPTY' ) {
70
- if ( language == WPGlobusCoreData.default_language && ! /(\{:|\[:|<!--:)[a-z]{2}/.test(text) ) {
71
- /** do nothing */
72
- } else {
73
- text = '';
74
- }
75
- } else {
76
- /**
77
- * Try RETURN_IN_DEFAULT_LANGUAGE.
78
- */
79
- if ( language == WPGlobusCoreData.default_language ) {
80
- if ( /(\{:|\[:|<!--:)[a-z]{2}/.test(text) ) {
81
- text = '';
82
- }
83
- } else {
84
- text = api.TextFilter( text, WPGlobusCoreData.default_language );
85
- }
86
- }
87
- }
88
- return text;
89
- },
90
- addLocaleMarks: function(text, language) {
91
- return WPGlobusCoreData.locale_tag_start.replace('%s', language) + text + WPGlobusCoreData.locale_tag_end;
92
- },
93
- getTranslations: function(text) {
94
- var t = {},
95
- return_in;
96
- $.each(WPGlobusCoreData.enabled_languages, function(i,l){
97
- return_in = l == WPGlobusCoreData.default_language ? 'RETURN_IN_DEFAULT_LANGUAGE' : 'RETURN_EMPTY';
98
- t[l] = api.TextFilter(text, l, return_in);
99
- });
100
- return t;
101
- },
102
- getString: function(s, newVal, l) {
103
- if ( 'undefined' === typeof(s) ) {
104
- return s;
105
- }
106
- if ( 'undefined' === typeof(newVal) ) {
107
- newVal = '';
108
- }
109
- if ( 'undefined' === typeof(l) ) {
110
- l = WPGlobusCoreData.language;
111
- }
112
-
113
- s = api.getTranslations(s);
114
- s[l] = newVal;
115
-
116
- var cS = '';
117
-
118
- $.each(s, function(ln,val){
119
- if ( '' != val && ln != WPGlobusCoreData.default_language) {
120
- cS += api.addLocaleMarks(val, ln);
121
- }
122
- });
123
-
124
- if ( '' != s[WPGlobusCoreData.default_language] ) {
125
- if ( '' == cS ) {
126
- cS = s[WPGlobusCoreData.default_language];
127
- } else {
128
- cS = api.addLocaleMarks(s[WPGlobusCoreData.default_language], WPGlobusCoreData.default_language) + cS;
129
- }
130
- }
131
- return cS;
132
- }
133
- };
134
- })(jQuery);
135
-
136
- jQuery(document).ready(function ($) {
137
- "use strict";
138
-
139
- if ( 'undefined' === typeof WPGlobusAdmin ) {
140
- return;
141
- }
142
-
143
- var api = {
144
- languageSelectorBoxDelta: 0,
145
- locationPathname: '/wp-admin/post.php',
146
- init: function() {
147
- //api.setCookie();
148
- if ('taxonomy-edit' === WPGlobusAdmin.page) {
149
- api.taxonomyEdit();
150
- } else {
151
- api.start();
152
- }
153
- },
154
- _info: function() {
155
- var lang = undefined;
156
- if( $('#language').length > 0 ) {
157
- lang = $('#language').val();
158
- }
159
- console.log('Current language from hidden (#language) : ', lang);
160
-
161
- lang = undefined;
162
- if( $('#wpglobus-language').length > 0 ) {
163
- lang = $('#wpglobus-language').val();
164
- }
165
- console.log('Current language from hidden (#wpglobus-language) : ', lang);
166
-
167
- lang = undefined;
168
- if( $('input[name="wpglobus-language"]').length > 0 ) {
169
- lang = $('input[name="wpglobus-language"]').val();
170
- }
171
- console.log('Current language from hidden (input[name="wpglobus-language"]) : ', lang);
172
-
173
- lang = undefined;
174
- if( $('input[name="wpglobus_language"]').length > 0 ) {
175
- lang = $('input[name="wpglobus_language"]').val();
176
- }
177
- console.log('Current language from hidden (input[name="wpglobus_language"]) : ', lang);
178
- console.log('Builder : ', WPGlobusAdmin.builder);
179
-
180
- var content = $('#content').val();
181
- if ( content == '' ) {
182
- console.log('Editor content (#content) : (empty)');
183
- } else {
184
- console.log(content);
185
- }
186
- },
187
- checkCookie: function() {
188
- if ( -1 != window.location.search.indexOf('language=') ) {
189
- return false;
190
- }
191
- if ( 'post.php' == WPGlobusAdmin.page ) {
192
- var cookie = wpCookies.get(WPGlobusAdmin.builder.languageCookie);
193
-
194
- if ( null !== cookie && history.pushState) {
195
- cookie = cookie.split('+');
196
- var language = cookie[0];
197
- if ('undefined' !== typeof cookie[1] && cookie[1] + 0 == WPGlobusAdmin.$_get.post ) {
198
- var newurl = window.location.protocol + "//" + window.location.host + window.location.pathname + window.location.search + '&language='+language;
199
- window.history.pushState({path:newurl},'',newurl);
200
- return language;
201
- }
202
- }
203
- }
204
- return false;
205
- },
206
- setCookie: function() {
207
- var lang = api.checkCookie();
208
- if ( ! lang ) {
209
- lang = WPGlobusAdmin.$_get.language;
210
- if ( 'undefined' === typeof lang ) {
211
- lang = WPGlobusAdmin.data.default_language;
212
- }
213
- }
214
- wpCookies.set(WPGlobusAdmin.builder.languageCookie, lang+'+'+WPGlobusAdmin.$_get.post, 31536000, api.locationPathname );
215
- },
216
- setLocationSearch: function() {
217
- if ( ! history.pushState || -1 != window.location.search.indexOf('language=') ) {
218
- return;
219
- }
220
- if ( WPGlobusAdmin.data.default_language != WPGlobusAdmin.currentTab ) {
221
- var newurl = window.location.protocol + "//" + window.location.host + window.location.pathname + window.location.search + '&language='+WPGlobusAdmin.currentTab;
222
- window.history.pushState({path:newurl},'',newurl);
223
- }
224
- },
225
- taxonomyEdit: function() {
226
-
227
- $('.wpglobus-taxonomy-tabs').insertAfter('#ajax-response');
228
-
229
- /**
230
- * Make class wrap as tabs container.
231
- * Tabs on.
232
- */
233
- $('.wrap').tabs();
234
-
235
- $(WPGlobusAdmin.data.multilingualSlug.title).insertAfter('.term-slug-wrap th label');
236
-
237
- if ( WPGlobusAdmin.currentTab !== WPGlobusAdmin.data.default_language ) {
238
- $('.wpglobus-tax-edit-tab').removeClass('ui-tabs-active ui-state-active');
239
- $('#wpglobus-link-tab-'+WPGlobusAdmin.currentTab).addClass('ui-tabs-active ui-state-active');
240
- }
241
-
242
- $(document).on('click', '.wpglobus-tax-edit-tab a', function(event) {
243
- event.preventDefault();
244
- var _href = $(this).data('href');
245
- location.href = _href;
246
- });
247
-
248
- api.setMultilingualFields();
249
-
250
- /**
251
- * Init Yoast tinymce editor for description.
252
- */
253
- $(document).on( 'tinymce-editor-init', function( event, editor ) {
254
- $( '#' + editor.getContainer().id ).find('iframe').addClass(WPGlobusAdmin.builder.translatableClass).css({'width':''});
255
- });
256
- },
257
- start: function() {
258
- /**
259
- *
260
- */
261
- api.setLocationSearch();
262
-
263
- /**
264
- *
265
- */
266
- var wrap_at = '#postdivrich',
267
- set_title = true,
268
- content_tabs_id = '#post-body-content';
269
- if ( WPGlobusAdmin.data.support['editor'] === false ) {
270
- wrap_at = '#titlediv';
271
- set_title = false;
272
- }
273
- if ( WPGlobusAdmin.data.support['title'] === false ) {
274
- set_title = false;
275
- }
276
-
277
- /**
278
- * Make post-body-content as tabs container.
279
- */
280
- $(content_tabs_id).prepend($('.wpglobus-post-body-tabs-list'));
281
- $.each(WPGlobusAdmin.tabs, function (index, suffix) {
282
- if ('default' === suffix) {
283
- $(wrap_at).wrap('<div id="tab-default"></div>');
284
- if ( set_title ) {
285
- $($('#titlediv')).insertBefore(wrap_at);
286
- }
287
- } else {
288
- $(wrap_at+'-' + suffix).wrap('<div id="tab-' + suffix + '"></div>');
289
- if ( set_title ) {
290
- $($('#titlediv-' + suffix)).insertBefore(wrap_at+'-' + suffix);
291
- }
292
- }
293
- });
294
-
295
- $(content_tabs_id).addClass('wpglobus-post-body-tabs');
296
-
297
- /**
298
- * Set fields as multilingual.
299
- */
300
- //setTimeout(api.setMultilingualFields(), 1000);
301
- api.setMultilingualFields();
302
-
303
- /**
304
- *
305
- */
306
- //api.ajaxPrefilter();
307
-
308
- /**
309
- * @since 2.2.22
310
- */
311
- if ('post.php' === WPGlobusAdmin.page) {
312
- this.postEdit();
313
- }
314
-
315
- },
316
- postEdit: function() {
317
- /**
318
- * For compatibility with wpglobus-admin-51.js.
319
- * @since 2.2.22
320
- */
321
- $(document).triggerHandler('wpglobus_after_post_edit');
322
- },
323
- ajaxPrefilter: function() {
324
- /**
325
- * @todo WIP.
326
- */
327
- $.ajaxPrefilter(function( options, originalOptions, jqXHR ) {
328
- // Modify options, control originalOptions, store jqXHR, etc
329
- //console.log(options);
330
- });
331
- },
332
- setMultilingualFields: function() {
333
- $.each(WPGlobusAdmin.builder.multilingualFields, function(indx, field) {
334
- var elementBy = 'name';
335
- var node = document.getElementsByName(field);
336
- var $element;
337
-
338
- if ( 0 == node.length ) {
339
- elementBy = 'id';
340
- node = document.getElementById(field);
341
- }
342
-
343
- if ( null === node ) {
344
- return;
345
- } else {
346
- if ( 'id' == elementBy ) {
347
- $element = $('#'+field);
348
- } else {
349
- var nodeName = node[0].nodeName;
350
- nodeName = nodeName.toLowerCase();
351
- $element = $(nodeName+'[name="'+field+'"]');
352
- }
353
- $element.addClass(WPGlobusAdmin.builder.translatableClass);
354
- }
355
-
356
- });
357
- }
358
- }
359
-
360
- WPGlobusAdmin = $.extend({}, WPGlobusAdmin, api);
361
- WPGlobusAdmin.init();
362
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/builders/assets/wpglobus-admin-builder-51.min.js DELETED
@@ -1 +0,0 @@
1
- var WPGlobusCore;!function(l){var s=WPGlobusCore={strpos:function(a,t,e){var o=(a=""+a).indexOf(t,e);return 0<=o&&o},TextFilter:function(a,t,e){if(void 0===a||""===a)return a;var o,n,l=[],i=!1;t=""==t?"en":t,e=void 0===e||""==e?"RETURN_IN_DEFAULT_LANGUAGE":e,l[0]=[],l[0].start=WPGlobusCoreData.locale_tag_start.replace("%s",t),l[0].end=WPGlobusCoreData.locale_tag_end,l[1]=[],l[1].start="\x3c!--:"+t+"--\x3e",l[1].end="\x3c!--:--\x3e",l[2]=[],l[2].start="[:"+t+"]",l[2].end="[:";for(var u=0;u<3;u++)if(!1!==(o=s.strpos(a,l[u].start))){o+=l[u].start.length,a=!1===(n=s.strpos(a,l[u].end,o))?a.substr(o):a.substr(o,n-o),i=!0;break}return i||("RETURN_EMPTY"==e?t==WPGlobusCoreData.default_language&&!/(\{:|\[:|<!--:)[a-z]{2}/.test(a)||(a=""):t==WPGlobusCoreData.default_language?/(\{:|\[:|<!--:)[a-z]{2}/.test(a)&&(a=""):a=s.TextFilter(a,WPGlobusCoreData.default_language)),a},addLocaleMarks:function(a,t){return WPGlobusCoreData.locale_tag_start.replace("%s",t)+a+WPGlobusCoreData.locale_tag_end},getTranslations:function(e){var o,n={};return l.each(WPGlobusCoreData.enabled_languages,function(a,t){o=t==WPGlobusCoreData.default_language?"RETURN_IN_DEFAULT_LANGUAGE":"RETURN_EMPTY",n[t]=s.TextFilter(e,t,o)}),n},getString:function(a,t,e){if(void 0===a)return a;void 0===t&&(t=""),void 0===e&&(e=WPGlobusCoreData.language),(a=s.getTranslations(a))[e]=t;var o="";return l.each(a,function(a,t){""!=t&&a!=WPGlobusCoreData.default_language&&(o+=s.addLocaleMarks(t,a))}),""!=a[WPGlobusCoreData.default_language]&&(o=""==o?a[WPGlobusCoreData.default_language]:s.addLocaleMarks(a[WPGlobusCoreData.default_language],WPGlobusCoreData.default_language)+o),o}}}(jQuery),jQuery(document).ready(function(l){"use strict";var t;"undefined"!=typeof WPGlobusAdmin&&(t={languageSelectorBoxDelta:0,locationPathname:"/wp-admin/post.php",init:function(){"taxonomy-edit"===WPGlobusAdmin.page?t.taxonomyEdit():t.start()},_info:function(){var a=void 0;0<l("#language").length&&(a=l("#language").val()),console.log("Current language from hidden (#language) : ",a),a=void 0,0<l("#wpglobus-language").length&&(a=l("#wpglobus-language").val()),console.log("Current language from hidden (#wpglobus-language) : ",a),a=void 0,0<l('input[name="wpglobus-language"]').length&&(a=l('input[name="wpglobus-language"]').val()),console.log('Current language from hidden (input[name="wpglobus-language"]) : ',a),a=void 0,0<l('input[name="wpglobus_language"]').length&&(a=l('input[name="wpglobus_language"]').val()),console.log('Current language from hidden (input[name="wpglobus_language"]) : ',a),console.log("Builder : ",WPGlobusAdmin.builder);var t=l("#content").val();""==t?console.log("Editor content (#content) : (empty)"):console.log(t)},checkCookie:function(){if(-1!=window.location.search.indexOf("language="))return!1;if("post.php"==WPGlobusAdmin.page){var a=wpCookies.get(WPGlobusAdmin.builder.languageCookie);if(null!==a&&history.pushState){var t=(a=a.split("+"))[0];if(void 0!==a[1]&&a[1]+0==WPGlobusAdmin.$_get.post){var e=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search+"&language="+t;return window.history.pushState({path:e},"",e),t}}}return!1},setCookie:function(){var a=t.checkCookie();a||void 0===(a=WPGlobusAdmin.$_get.language)&&(a=WPGlobusAdmin.data.default_language),wpCookies.set(WPGlobusAdmin.builder.languageCookie,a+"+"+WPGlobusAdmin.$_get.post,31536e3,t.locationPathname)},setLocationSearch:function(){var a;history.pushState&&-1==window.location.search.indexOf("language=")&&WPGlobusAdmin.data.default_language!=WPGlobusAdmin.currentTab&&(a=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search+"&language="+WPGlobusAdmin.currentTab,window.history.pushState({path:a},"",a))},taxonomyEdit:function(){l(".wpglobus-taxonomy-tabs").insertAfter("#ajax-response"),l(".wrap").tabs(),l(WPGlobusAdmin.data.multilingualSlug.title).insertAfter(".term-slug-wrap th label"),WPGlobusAdmin.currentTab!==WPGlobusAdmin.data.default_language&&(l(".wpglobus-tax-edit-tab").removeClass("ui-tabs-active ui-state-active"),l("#wpglobus-link-tab-"+WPGlobusAdmin.currentTab).addClass("ui-tabs-active ui-state-active")),l(document).on("click",".wpglobus-tax-edit-tab a",function(a){a.preventDefault();var t=l(this).data("href");location.href=t}),t.setMultilingualFields(),l(document).on("tinymce-editor-init",function(a,t){l("#"+t.getContainer().id).find("iframe").addClass(WPGlobusAdmin.builder.translatableClass).css({width:""})})},start:function(){t.setLocationSearch();var e="#postdivrich",o=!0,a="#post-body-content";!1===WPGlobusAdmin.data.support.editor&&(o=!(e="#titlediv")),!1===WPGlobusAdmin.data.support.title&&(o=!1),l(a).prepend(l(".wpglobus-post-body-tabs-list")),l.each(WPGlobusAdmin.tabs,function(a,t){"default"===t?(l(e).wrap('<div id="tab-default"></div>'),o&&l(l("#titlediv")).insertBefore(e)):(l(e+"-"+t).wrap('<div id="tab-'+t+'"></div>'),o&&l(l("#titlediv-"+t)).insertBefore(e+"-"+t))}),l(a).addClass("wpglobus-post-body-tabs"),t.setMultilingualFields(),"post.php"===WPGlobusAdmin.page&&this.postEdit()},postEdit:function(){l(document).triggerHandler("wpglobus_after_post_edit")},ajaxPrefilter:function(){l.ajaxPrefilter(function(a,t,e){})},setMultilingualFields:function(){l.each(WPGlobusAdmin.builder.multilingualFields,function(a,t){var e,o="name",n=document.getElementsByName(t);0==n.length&&(o="id",n=document.getElementById(t)),null!==n&&("id"==o?l("#"+t):(e=(e=n[0].nodeName).toLowerCase(),l(e+'[name="'+t+'"]'))).addClass(WPGlobusAdmin.builder.translatableClass)})}},(WPGlobusAdmin=l.extend({},WPGlobusAdmin,t)).init())});
 
trunk/includes/builders/assets/wpglobus-admin-builder-55.js DELETED
@@ -1,404 +0,0 @@
1
- /**
2
- * WPGlobus Administration Core.
3
- * Interface JS functions
4
- *
5
- * @since 2.5
6
- * @since 2.5.17 Revised `setMultilingualFields` function to use field param as string or object.
7
- *
8
- * @package WPGlobus
9
- * @subpackage Administration
10
- */
11
- /*jslint browser: true*/
12
- /*global jQuery, console, WPGlobusCore*/
13
-
14
- var WPGlobusCore;
15
-
16
- (function($) {
17
- var api;
18
- api = WPGlobusCore = {
19
- strpos: function( haystack, needle, offset){
20
- haystack = "" + haystack;
21
- var i = haystack.indexOf( needle, offset );
22
- return i >= 0 ? i : false;
23
- },
24
-
25
- TextFilter: function(text, language, return_in){
26
- if ( typeof text == 'undefined' || '' === text ) { return text; }
27
-
28
- var pos_start, pos_end, possible_delimiters = [], is_local_text_found = false;;
29
-
30
- language = '' == language ? 'en' : language;
31
- return_in = typeof return_in == 'undefined' || '' == return_in ? 'RETURN_IN_DEFAULT_LANGUAGE' : return_in;
32
-
33
- possible_delimiters[0] = [];
34
- possible_delimiters[0]['start'] = WPGlobusCoreData.locale_tag_start.replace('%s', language);
35
- possible_delimiters[0]['end'] = WPGlobusCoreData.locale_tag_end;
36
-
37
- possible_delimiters[1] = [];
38
- possible_delimiters[1]['start'] = '<!--:'+language+'-->';
39
- possible_delimiters[1]['end'] = '<!--:-->';
40
-
41
- possible_delimiters[2] = [];
42
- possible_delimiters[2]['start'] = '[:'+language+']';
43
- possible_delimiters[2]['end'] = '[:';
44
-
45
-
46
-
47
- for (var i = 0; i < 3; i++) {
48
-
49
- pos_start = api.strpos( text, possible_delimiters[i]['start'] );
50
- if ( pos_start === false ) {
51
- continue;
52
- }
53
-
54
- pos_start = pos_start + possible_delimiters[i]['start'].length;
55
-
56
- pos_end = api.strpos( text, possible_delimiters[i]['end'], pos_start );
57
-
58
- if ( pos_end === false ) {
59
- text = text.substr( pos_start );
60
- } else {
61
- text = text.substr( pos_start, pos_end - pos_start );
62
- }
63
-
64
- is_local_text_found = true;
65
- break;
66
-
67
- }
68
-
69
- if ( ! is_local_text_found ) {
70
- if ( return_in == 'RETURN_EMPTY' ) {
71
- if ( language == WPGlobusCoreData.default_language && ! /(\{:|\[:|<!--:)[a-z]{2}/.test(text) ) {
72
- /** do nothing */
73
- } else {
74
- text = '';
75
- }
76
- } else {
77
- /**
78
- * Try RETURN_IN_DEFAULT_LANGUAGE.
79
- */
80
- if ( language == WPGlobusCoreData.default_language ) {
81
- if ( /(\{:|\[:|<!--:)[a-z]{2}/.test(text) ) {
82
- text = '';
83
- }
84
- } else {
85
- text = api.TextFilter( text, WPGlobusCoreData.default_language );
86
- }
87
- }
88
- }
89
- return text;
90
- },
91
- addLocaleMarks: function(text, language) {
92
- return WPGlobusCoreData.locale_tag_start.replace('%s', language) + text + WPGlobusCoreData.locale_tag_end;
93
- },
94
- getTranslations: function(text) {
95
- var t = {},
96
- return_in;
97
- $.each(WPGlobusCoreData.enabled_languages, function(i,l){
98
- return_in = l == WPGlobusCoreData.default_language ? 'RETURN_IN_DEFAULT_LANGUAGE' : 'RETURN_EMPTY';
99
- t[l] = api.TextFilter(text, l, return_in);
100
- });
101
- return t;
102
- },
103
- getString: function(s, newVal, l) {
104
- if ( 'undefined' === typeof(s) ) {
105
- return s;
106
- }
107
- if ( 'undefined' === typeof(newVal) ) {
108
- newVal = '';
109
- }
110
- if ( 'undefined' === typeof(l) ) {
111
- l = WPGlobusCoreData.language;
112
- }
113
-
114
- s = api.getTranslations(s);
115
- s[l] = newVal;
116
-
117
- var cS = '';
118
-
119
- $.each(s, function(ln,val){
120
- if ( '' != val && ln != WPGlobusCoreData.default_language) {
121
- cS += api.addLocaleMarks(val, ln);
122
- }
123
- });
124
-
125
- if ( '' != s[WPGlobusCoreData.default_language] ) {
126
- if ( '' == cS ) {
127
- cS = s[WPGlobusCoreData.default_language];
128
- } else {
129
- cS = api.addLocaleMarks(s[WPGlobusCoreData.default_language], WPGlobusCoreData.default_language) + cS;
130
- }
131
- }
132
- return cS;
133
- }
134
- };
135
- })(jQuery);
136
-
137
- jQuery(document).ready(function ($) {
138
- "use strict";
139
-
140
- if ( 'undefined' === typeof WPGlobusAdmin ) {
141
- return;
142
- }
143
-
144
- var api = {
145
- languageSelectorBoxDelta: 0,
146
- locationPathname: '/wp-admin/post.php',
147
- init: function() {
148
- //api.setCookie();
149
- if ('taxonomy-edit' === WPGlobusAdmin.page) {
150
- api.taxonomyEdit();
151
- } else {
152
- api.start();
153
- }
154
- },
155
- _info: function() {
156
- var lang = undefined;
157
- if( $('#language').length > 0 ) {
158
- lang = $('#language').val();
159
- }
160
- console.log('Current language from hidden (#language) : ', lang);
161
-
162
- lang = undefined;
163
- if( $('#wpglobus-language').length > 0 ) {
164
- lang = $('#wpglobus-language').val();
165
- }
166
- console.log('Current language from hidden (#wpglobus-language) : ', lang);
167
-
168
- lang = undefined;
169
- if( $('input[name="wpglobus-language"]').length > 0 ) {
170
- lang = $('input[name="wpglobus-language"]').val();
171
- }
172
- console.log('Current language from hidden (input[name="wpglobus-language"]) : ', lang);
173
-
174
- lang = undefined;
175
- if( $('input[name="wpglobus_language"]').length > 0 ) {
176
- lang = $('input[name="wpglobus_language"]').val();
177
- }
178
- console.log('Current language from hidden (input[name="wpglobus_language"]) : ', lang);
179
- console.log('Builder : ', WPGlobusAdmin.builder);
180
-
181
- var content = $('#content').val();
182
- if ( content == '' ) {
183
- console.log('Editor content (#content) : (empty)');
184
- } else {
185
- console.log(content);
186
- }
187
- },
188
- checkCookie: function() {
189
- if ( -1 != window.location.search.indexOf('language=') ) {
190
- return false;
191
- }
192
- if ( 'post.php' == WPGlobusAdmin.page ) {
193
- var cookie = wpCookies.get(WPGlobusAdmin.builder.languageCookie);
194
-
195
- if ( null !== cookie && history.pushState) {
196
- cookie = cookie.split('+');
197
- var language = cookie[0];
198
- if ('undefined' !== typeof cookie[1] && cookie[1] + 0 == WPGlobusAdmin.$_get.post ) {
199
- var newurl = window.location.protocol + "//" + window.location.host + window.location.pathname + window.location.search + '&language='+language;
200
- window.history.pushState({path:newurl},'',newurl);
201
- return language;
202
- }
203
- }
204
- }
205
- return false;
206
- },
207
- setCookie: function() {
208
- var lang = api.checkCookie();
209
- if ( ! lang ) {
210
- lang = WPGlobusAdmin.$_get.language;
211
- if ( 'undefined' === typeof lang ) {
212
- lang = WPGlobusAdmin.data.default_language;
213
- }
214
- }
215
- wpCookies.set(WPGlobusAdmin.builder.languageCookie, lang+'+'+WPGlobusAdmin.$_get.post, 31536000, api.locationPathname );
216
- },
217
- setLocationSearch: function() {
218
- if ( ! history.pushState || -1 != window.location.search.indexOf('language=') ) {
219
- return;
220
- }
221
- if ( WPGlobusAdmin.data.default_language != WPGlobusAdmin.currentTab ) {
222
- var newurl = window.location.protocol + "//" + window.location.host + window.location.pathname + window.location.search + '&language='+WPGlobusAdmin.currentTab;
223
- window.history.pushState({path:newurl},'',newurl);
224
- }
225
- },
226
- taxonomyEdit: function() {
227
-
228
- $('.wpglobus-taxonomy-tabs').insertAfter('#ajax-response');
229
-
230
- /**
231
- * Make class wrap as tabs container.
232
- * Tabs on.
233
- */
234
- $('.wrap').tabs();
235
-
236
- $(WPGlobusAdmin.data.multilingualSlug.title).insertAfter('.term-slug-wrap th label');
237
-
238
- if ( WPGlobusAdmin.currentTab !== WPGlobusAdmin.data.default_language ) {
239
- $('.wpglobus-tax-edit-tab').removeClass('ui-tabs-active ui-state-active');
240
- $('#wpglobus-link-tab-'+WPGlobusAdmin.currentTab).addClass('ui-tabs-active ui-state-active');
241
- }
242
-
243
- $(document).on('click', '.wpglobus-tax-edit-tab a', function(event) {
244
- event.preventDefault();
245
- var _href = $(this).data('href');
246
- location.href = _href;
247
- });
248
-
249
- api.setMultilingualFields();
250
-
251
- /**
252
- * Init Yoast tinymce editor for description.
253
- */
254
- $(document).on( 'tinymce-editor-init', function( event, editor ) {
255
- $( '#' + editor.getContainer().id ).find('iframe').addClass(WPGlobusAdmin.builder.translatableClass).css({'width':''});
256
- });
257
- },
258
- start: function() {
259
- /**
260
- *
261
- */
262
- api.setLocationSearch();
263
-
264
- /**
265
- *
266
- */
267
- var wrap_at = '#postdivrich',
268
- set_title = true,
269
- content_tabs_id = '#post-body-content';
270
- if ( WPGlobusAdmin.data.support['editor'] === false ) {
271
- wrap_at = '#titlediv';
272
- set_title = false;
273
- }
274
- if ( WPGlobusAdmin.data.support['title'] === false ) {
275
- set_title = false;
276
- }
277
-
278
- /**
279
- * Make post-body-content as tabs container.
280
- */
281
- $(content_tabs_id).prepend($('.wpglobus-post-body-tabs-list'));
282
- $.each(WPGlobusAdmin.tabs, function (index, suffix) {
283
- if ('default' === suffix) {
284
- $(wrap_at).wrap('<div id="tab-default"></div>');
285
- if ( set_title ) {
286
- $($('#titlediv')).insertBefore(wrap_at);
287
- }
288
- } else {
289
- $(wrap_at+'-' + suffix).wrap('<div id="tab-' + suffix + '"></div>');
290
- if ( set_title ) {
291
- $($('#titlediv-' + suffix)).insertBefore(wrap_at+'-' + suffix);
292
- }
293
- }
294
- });
295
-
296
- $(content_tabs_id).addClass('wpglobus-post-body-tabs');
297
-
298
- /**
299
- * Set fields as multilingual.
300
- */
301
- //setTimeout(api.setMultilingualFields(), 1000);
302
- api.setMultilingualFields();
303
-
304
- /**
305
- *
306
- */
307
- //api.ajaxPrefilter();
308
-
309
- /**
310
- * @since 2.2.22
311
- */
312
- if ('post.php' === WPGlobusAdmin.page) {
313
- this.postEdit();
314
- }
315
-
316
- },
317
- postEdit: function() {
318
- /**
319
- * For compatibility with wpglobus-admin-51.js.
320
- * @since 2.2.22
321
- */
322
- $(document).triggerHandler('wpglobus_after_post_edit');
323
- },
324
- ajaxPrefilter: function() {
325
- /**
326
- * @todo WIP.
327
- */
328
- $.ajaxPrefilter(function( options, originalOptions, jqXHR ) {
329
- // Modify options, control originalOptions, store jqXHR, etc
330
- //console.log(options);
331
- });
332
- },
333
- setMultilingualFields: function() {
334
- $.each(WPGlobusAdmin.builder.multilingualFields, function(indx, field) {
335
- /**
336
- * @since 2.5.17 Revised function to use field param as string or object.
337
- */
338
- var attrs = api.getFieldAttrs(field);
339
- if ( 'function' === typeof WPGlobusAdmin[attrs.fieldFunction] ) {
340
- WPGlobusAdmin[attrs.fieldFunction](attrs);
341
- }
342
- });
343
- },
344
- textField: function(attrs){
345
- var id = attrs.id;
346
- var elementBy = 'name';
347
- var node = document.getElementsByName(id);
348
- var $element;
349
-
350
- if ( 0 == node.length ) {
351
- elementBy = 'id';
352
- node = document.getElementById(id);
353
- }
354
-
355
- if ( null === node ) {
356
- return true;
357
- } else {
358
- if ( 'id' == elementBy ) {
359
- $element = $('#'+id);
360
- } else {
361
- var nodeName = node[0].nodeName;
362
- nodeName = nodeName.toLowerCase();
363
- $element = $(nodeName+'[name="'+id+'"]');
364
- }
365
- $element.addClass(WPGlobusAdmin.builder.translatableClass);
366
- }
367
- },
368
- wysiwygField: function(attrs){
369
- $(document).on('wpglobus_wysiwyg_field', function(evnt,params) {
370
- params.callback(attrs);
371
- });
372
- },
373
- fileField: function(attrs){
374
- // @since 2.5.17 @W.I.P
375
- /*
376
- $(document).on('wpglobus_file_field', function(evnt,params) {
377
- params.callback(attrs);
378
- }); // */
379
- },
380
- getFieldAttrs: function(field){
381
- var defaultAttrs = {
382
- 'id': false,
383
- 'type': 'text',
384
- 'fieldFunction': 'textField'
385
- }
386
- var attrs = {};
387
- if ( 'string' === typeof field ) {
388
- attrs['id'] = field;
389
- } else if ( 'object' === typeof field ) {
390
- if ( 'undefined' !== typeof field.id ) {
391
- attrs['id'] = field.id;
392
- }
393
- if ( 'undefined' !== typeof field.type ) {
394
- attrs['type'] = field.type;
395
- attrs['fieldFunction'] = field.type+'Field';
396
- }
397
- }
398
- return $.extend({}, defaultAttrs, attrs);
399
- }
400
- }
401
-
402
- WPGlobusAdmin = $.extend({}, WPGlobusAdmin, api);
403
- WPGlobusAdmin.init();
404
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/builders/assets/wpglobus-admin-builder-55.min.js DELETED
@@ -1 +0,0 @@
1
- var WPGlobusCore;!function(l){var s=WPGlobusCore={strpos:function(t,e,a){var o=(t=""+t).indexOf(e,a);return 0<=o&&o},TextFilter:function(t,e,a){if(void 0===t||""===t)return t;var o,n,l=[],i=!1;e=""==e?"en":e,a=void 0===a||""==a?"RETURN_IN_DEFAULT_LANGUAGE":a,l[0]=[],l[0].start=WPGlobusCoreData.locale_tag_start.replace("%s",e),l[0].end=WPGlobusCoreData.locale_tag_end,l[1]=[],l[1].start="\x3c!--:"+e+"--\x3e",l[1].end="\x3c!--:--\x3e",l[2]=[],l[2].start="[:"+e+"]",l[2].end="[:";for(var u=0;u<3;u++)if(!1!==(o=s.strpos(t,l[u].start))){o+=l[u].start.length,t=!1===(n=s.strpos(t,l[u].end,o))?t.substr(o):t.substr(o,n-o),i=!0;break}return i||("RETURN_EMPTY"==a?e==WPGlobusCoreData.default_language&&!/(\{:|\[:|<!--:)[a-z]{2}/.test(t)||(t=""):e==WPGlobusCoreData.default_language?/(\{:|\[:|<!--:)[a-z]{2}/.test(t)&&(t=""):t=s.TextFilter(t,WPGlobusCoreData.default_language)),t},addLocaleMarks:function(t,e){return WPGlobusCoreData.locale_tag_start.replace("%s",e)+t+WPGlobusCoreData.locale_tag_end},getTranslations:function(a){var o,n={};return l.each(WPGlobusCoreData.enabled_languages,function(t,e){o=e==WPGlobusCoreData.default_language?"RETURN_IN_DEFAULT_LANGUAGE":"RETURN_EMPTY",n[e]=s.TextFilter(a,e,o)}),n},getString:function(t,e,a){if(void 0===t)return t;void 0===e&&(e=""),void 0===a&&(a=WPGlobusCoreData.language),(t=s.getTranslations(t))[a]=e;var o="";return l.each(t,function(t,e){""!=e&&t!=WPGlobusCoreData.default_language&&(o+=s.addLocaleMarks(e,t))}),""!=t[WPGlobusCoreData.default_language]&&(o=""==o?t[WPGlobusCoreData.default_language]:s.addLocaleMarks(t[WPGlobusCoreData.default_language],WPGlobusCoreData.default_language)+o),o}}}(jQuery),jQuery(document).ready(function(l){"use strict";var n;"undefined"!=typeof WPGlobusAdmin&&(n={languageSelectorBoxDelta:0,locationPathname:"/wp-admin/post.php",init:function(){"taxonomy-edit"===WPGlobusAdmin.page?n.taxonomyEdit():n.start()},_info:function(){var t=void 0;0<l("#language").length&&(t=l("#language").val()),console.log("Current language from hidden (#language) : ",t),t=void 0,0<l("#wpglobus-language").length&&(t=l("#wpglobus-language").val()),console.log("Current language from hidden (#wpglobus-language) : ",t),t=void 0,0<l('input[name="wpglobus-language"]').length&&(t=l('input[name="wpglobus-language"]').val()),console.log('Current language from hidden (input[name="wpglobus-language"]) : ',t),t=void 0,0<l('input[name="wpglobus_language"]').length&&(t=l('input[name="wpglobus_language"]').val()),console.log('Current language from hidden (input[name="wpglobus_language"]) : ',t),console.log("Builder : ",WPGlobusAdmin.builder);var e=l("#content").val();""==e?console.log("Editor content (#content) : (empty)"):console.log(e)},checkCookie:function(){if(-1!=window.location.search.indexOf("language="))return!1;if("post.php"==WPGlobusAdmin.page){var t=wpCookies.get(WPGlobusAdmin.builder.languageCookie);if(null!==t&&history.pushState){var e=(t=t.split("+"))[0];if(void 0!==t[1]&&t[1]+0==WPGlobusAdmin.$_get.post){var a=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search+"&language="+e;return window.history.pushState({path:a},"",a),e}}}return!1},setCookie:function(){var t=n.checkCookie();t||void 0===(t=WPGlobusAdmin.$_get.language)&&(t=WPGlobusAdmin.data.default_language),wpCookies.set(WPGlobusAdmin.builder.languageCookie,t+"+"+WPGlobusAdmin.$_get.post,31536e3,n.locationPathname)},setLocationSearch:function(){var t;history.pushState&&-1==window.location.search.indexOf("language=")&&WPGlobusAdmin.data.default_language!=WPGlobusAdmin.currentTab&&(t=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search+"&language="+WPGlobusAdmin.currentTab,window.history.pushState({path:t},"",t))},taxonomyEdit:function(){l(".wpglobus-taxonomy-tabs").insertAfter("#ajax-response"),l(".wrap").tabs(),l(WPGlobusAdmin.data.multilingualSlug.title).insertAfter(".term-slug-wrap th label"),WPGlobusAdmin.currentTab!==WPGlobusAdmin.data.default_language&&(l(".wpglobus-tax-edit-tab").removeClass("ui-tabs-active ui-state-active"),l("#wpglobus-link-tab-"+WPGlobusAdmin.currentTab).addClass("ui-tabs-active ui-state-active")),l(document).on("click",".wpglobus-tax-edit-tab a",function(t){t.preventDefault();var e=l(this).data("href");location.href=e}),n.setMultilingualFields(),l(document).on("tinymce-editor-init",function(t,e){l("#"+e.getContainer().id).find("iframe").addClass(WPGlobusAdmin.builder.translatableClass).css({width:""})})},start:function(){n.setLocationSearch();var a="#postdivrich",o=!0,t="#post-body-content";!1===WPGlobusAdmin.data.support.editor&&(o=!(a="#titlediv")),!1===WPGlobusAdmin.data.support.title&&(o=!1),l(t).prepend(l(".wpglobus-post-body-tabs-list")),l.each(WPGlobusAdmin.tabs,function(t,e){"default"===e?(l(a).wrap('<div id="tab-default"></div>'),o&&l(l("#titlediv")).insertBefore(a)):(l(a+"-"+e).wrap('<div id="tab-'+e+'"></div>'),o&&l(l("#titlediv-"+e)).insertBefore(a+"-"+e))}),l(t).addClass("wpglobus-post-body-tabs"),n.setMultilingualFields(),"post.php"===WPGlobusAdmin.page&&this.postEdit()},postEdit:function(){l(document).triggerHandler("wpglobus_after_post_edit")},ajaxPrefilter:function(){l.ajaxPrefilter(function(t,e,a){})},setMultilingualFields:function(){l.each(WPGlobusAdmin.builder.multilingualFields,function(t,e){var a=n.getFieldAttrs(e);"function"==typeof WPGlobusAdmin[a.fieldFunction]&&WPGlobusAdmin[a.fieldFunction](a)})},textField:function(t){var e,a=t.id,o="name",n=document.getElementsByName(a);if(0==n.length&&(o="id",n=document.getElementById(a)),null===n)return!0;("id"==o?l("#"+a):(e=(e=n[0].nodeName).toLowerCase(),l(e+'[name="'+a+'"]'))).addClass(WPGlobusAdmin.builder.translatableClass)},wysiwygField:function(a){l(document).on("wpglobus_wysiwyg_field",function(t,e){e.callback(a)})},fileField:function(t){},getFieldAttrs:function(t){var e={};return"string"==typeof t?e.id=t:"object"==typeof t&&(void 0!==t.id&&(e.id=t.id),void 0!==t.type&&(e.type=t.type,e.fieldFunction=t.type+"Field")),l.extend({},{id:!1,type:"text",fieldFunction:"textField"},e)}},(WPGlobusAdmin=l.extend({},WPGlobusAdmin,n)).init())});
 
trunk/includes/builders/assets/wpglobus-admin-builder-56.js DELETED
@@ -1,403 +0,0 @@
1
- /**
2
- * WPGlobus Administration Core.
3
- * Interface JS functions
4
- *
5
- * @since 2.6
6
- *
7
- * @package WPGlobus
8
- * @subpackage Administration
9
- */
10
- /*jslint browser: true*/
11
- /*global jQuery, console, WPGlobusCore*/
12
-
13
- var WPGlobusCore;
14
-
15
- (function($) {
16
- var api;
17
- api = WPGlobusCore = {
18
- strpos: function( haystack, needle, offset){
19
- haystack = "" + haystack;
20
- var i = haystack.indexOf( needle, offset );
21
- return i >= 0 ? i : false;
22
- },
23
-
24
- TextFilter: function(text, language, return_in){
25
- if ( typeof text == 'undefined' || '' === text ) { return text; }
26
-
27
- var pos_start, pos_end, possible_delimiters = [], is_local_text_found = false;;
28
-
29
- language = '' == language ? 'en' : language;
30
- return_in = typeof return_in == 'undefined' || '' == return_in ? 'RETURN_IN_DEFAULT_LANGUAGE' : return_in;
31
-
32
- possible_delimiters[0] = [];
33
- possible_delimiters[0]['start'] = WPGlobusCoreData.locale_tag_start.replace('%s', language);
34
- possible_delimiters[0]['end'] = WPGlobusCoreData.locale_tag_end;
35
-
36
- possible_delimiters[1] = [];
37
- possible_delimiters[1]['start'] = '<!--:'+language+'-->';
38
- possible_delimiters[1]['end'] = '<!--:-->';
39
-
40
- possible_delimiters[2] = [];
41
- possible_delimiters[2]['start'] = '[:'+language+']';
42
- possible_delimiters[2]['end'] = '[:';
43
-
44
-
45
-
46
- for (var i = 0; i < 3; i++) {
47
-
48
- pos_start = api.strpos( text, possible_delimiters[i]['start'] );
49
- if ( pos_start === false ) {
50
- continue;
51
- }
52
-
53
- pos_start = pos_start + possible_delimiters[i]['start'].length;
54
-
55
- pos_end = api.strpos( text, possible_delimiters[i]['end'], pos_start );
56
-
57
- if ( pos_end === false ) {
58
- text = text.substr( pos_start );
59
- } else {
60
- text = text.substr( pos_start, pos_end - pos_start );
61
- }
62
-
63
- is_local_text_found = true;
64
- break;
65
-
66
- }
67
-
68
- if ( ! is_local_text_found ) {
69
- if ( return_in == 'RETURN_EMPTY' ) {
70
- if ( language == WPGlobusCoreData.default_language && ! /(\{:|\[:|<!--:)[a-z]{2}/.test(text) ) {
71
- /** do nothing */
72
- } else {
73
- text = '';
74
- }
75
- } else {
76
- /**
77
- * Try RETURN_IN_DEFAULT_LANGUAGE.
78
- */
79
- if ( language == WPGlobusCoreData.default_language ) {
80
- if ( /(\{:|\[:|<!--:)[a-z]{2}/.test(text) ) {
81
- text = '';
82
- }
83
- } else {
84
- text = api.TextFilter( text, WPGlobusCoreData.default_language );
85
- }
86
- }
87
- }
88
- return text;
89
- },
90
- addLocaleMarks: function(text, language) {
91
- return WPGlobusCoreData.locale_tag_start.replace('%s', language) + text + WPGlobusCoreData.locale_tag_end;
92
- },
93
- getTranslations: function(text) {
94
- var t = {},
95
- return_in;
96
- $.each(WPGlobusCoreData.enabled_languages, function(i,l){
97
- return_in = l == WPGlobusCoreData.default_language ? 'RETURN_IN_DEFAULT_LANGUAGE' : 'RETURN_EMPTY';
98
- t[l] = api.TextFilter(text, l, return_in);
99
- });
100
- return t;
101
- },
102
- getString: function(s, newVal, l) {
103
- if ( 'undefined' === typeof(s) ) {
104
- return s;
105
- }
106
- if ( 'undefined' === typeof(newVal) ) {
107
- newVal = '';
108
- }
109
- if ( 'undefined' === typeof(l) ) {
110
- l = WPGlobusCoreData.language;
111
- }
112
-
113
- s = api.getTranslations(s);
114
- s[l] = newVal;
115
-
116
- var cS = '';
117
-
118
- $.each(s, function(ln,val){
119
- if ( '' != val && ln != WPGlobusCoreData.default_language) {
120
- cS += api.addLocaleMarks(val, ln);
121
- }
122
- });
123
-
124
- if ( '' != s[WPGlobusCoreData.default_language] ) {
125
- if ( '' == cS ) {
126
- cS = s[WPGlobusCoreData.default_language];
127
- } else {
128
- cS = api.addLocaleMarks(s[WPGlobusCoreData.default_language], WPGlobusCoreData.default_language) + cS;
129
- }
130
- }
131
- return cS;
132
- }
133
- };
134
- })(jQuery);
135
-
136
- jQuery(document).ready(function ($) {
137
- "use strict";
138
-
139
- if ( 'undefined' === typeof WPGlobusAdmin ) {
140
- return;
141
- }
142
-
143
- var api = {
144
- languageSelectorBoxDelta: 0,
145
- locationPathname: '/wp-admin/post.php',
146
- init: function() {
147
- //api.setCookie();
148
- if ('taxonomy-edit' === WPGlobusAdmin.page) {
149
- api.taxonomyEdit();
150
- } else {
151
- api.start();
152
- }
153
- },
154
- _info: function() {
155
- var lang = undefined;
156
- if( $('#language').length > 0 ) {
157
- lang = $('#language').val();
158
- }
159
- console.log('Current language from hidden (#language) : ', lang);
160
-
161
- lang = undefined;
162
- if( $('#wpglobus-language').length > 0 ) {
163
- lang = $('#wpglobus-language').val();
164
- }
165
- console.log('Current language from hidden (#wpglobus-language) : ', lang);
166
-
167
- lang = undefined;
168
- if( $('input[name="wpglobus-language"]').length > 0 ) {
169
- lang = $('input[name="wpglobus-language"]').val();
170
- }
171
- console.log('Current language from hidden (input[name="wpglobus-language"]) : ', lang);
172
-
173
- lang = undefined;
174
- if( $('input[name="wpglobus_language"]').length > 0 ) {
175
- lang = $('input[name="wpglobus_language"]').val();
176
- }
177
- console.log('Current language from hidden (input[name="wpglobus_language"]) : ', lang);
178
- console.log('Builder : ', WPGlobusAdmin.builder);
179
-
180
- var content = $('#content').val();
181
- if ( content == '' ) {
182
- console.log('Editor content (#content) : (empty)');
183
- } else {
184
- console.log(content);
185
- }
186
- },
187
- checkCookie: function() {
188
- if ( -1 != window.location.search.indexOf('language=') ) {
189
- return false;
190
- }
191
- if ( 'post.php' == WPGlobusAdmin.page ) {
192
- var cookie = wpCookies.get(WPGlobusAdmin.builder.languageCookie);
193
-
194
- if ( null !== cookie && history.pushState) {
195
- cookie = cookie.split('+');
196
- var language = cookie[0];
197
- if ('undefined' !== typeof cookie[1] && cookie[1] + 0 == WPGlobusAdmin.$_get.post ) {
198
- var newurl = window.location.protocol + "//" + window.location.host + window.location.pathname + window.location.search + '&language='+language;
199
- window.history.pushState({path:newurl},'',newurl);
200
- return language;
201
- }
202
- }
203
- }
204
- return false;
205
- },
206
- setCookie: function() {
207
- var lang = api.checkCookie();
208
- if ( ! lang ) {
209
- lang = WPGlobusAdmin.$_get.language;
210
- if ( 'undefined' === typeof lang ) {
211
- lang = WPGlobusAdmin.data.default_language;
212
- }
213
- }
214
- wpCookies.set(WPGlobusAdmin.builder.languageCookie, lang+'+'+WPGlobusAdmin.$_get.post, 31536000, api.locationPathname );
215
- },
216
- setLocationSearch: function() {
217
- if ( ! history.pushState || -1 != window.location.search.indexOf('language=') ) {
218
- return;
219
- }
220
- if ( WPGlobusAdmin.data.default_language != WPGlobusAdmin.currentTab ) {
221
- var newurl = window.location.protocol + "//" + window.location.host + window.location.pathname + window.location.search + '&language='+WPGlobusAdmin.currentTab;
222
- window.history.pushState({path:newurl},'',newurl);
223
- }
224
- },
225
- taxonomyEdit: function() {
226
-
227
- $('.wpglobus-taxonomy-tabs').insertAfter('#ajax-response');
228
-
229
- /**
230
- * Make class wrap as tabs container.
231
- * Tabs on.
232
- */
233
- $('.wrap').tabs();
234
-
235
- $(WPGlobusAdmin.data.multilingualSlug.title).insertAfter('.term-slug-wrap th label');
236
-
237
- if ( WPGlobusAdmin.currentTab !== WPGlobusAdmin.data.default_language ) {
238
- $('.wpglobus-tax-edit-tab').removeClass('ui-tabs-active ui-state-active');
239
- $('#wpglobus-link-tab-'+WPGlobusAdmin.currentTab).addClass('ui-tabs-active ui-state-active');
240
- }
241
-
242
- $(document).on('click', '.wpglobus-tax-edit-tab a', function(event) {
243
- event.preventDefault();
244
- var _href = $(this).data('href');
245
- location.href = _href;
246
- });
247
-
248
- api.setMultilingualFields();
249
-
250
- /**
251
- * Init Yoast tinymce editor for description.
252
- */
253
- $(document).on( 'tinymce-editor-init', function( event, editor ) {
254
- $( '#' + editor.getContainer().id ).find('iframe').addClass(WPGlobusAdmin.builder.translatableClass).css({'width':''});
255
- });
256
- },
257
- start: function() {
258
- /**
259
- *
260
- */
261
- api.setLocationSearch();
262
-
263
- /**
264
- *
265
- */
266
- var wrap_at = '#postdivrich',
267
- set_title = true,
268
- content_tabs_id = '#post-body-content';
269
- if ( WPGlobusAdmin.data.support['editor'] === false ) {
270
- wrap_at = '#titlediv';
271
- set_title = false;
272
- }
273
- if ( WPGlobusAdmin.data.support['title'] === false ) {
274
- set_title = false;
275
- }
276
-
277
- /**
278
- * Make post-body-content as tabs container.
279
- */
280
- $(content_tabs_id).prepend($('.wpglobus-post-body-tabs-list'));
281
- $.each(WPGlobusAdmin.tabs, function (index, suffix) {
282
- if ('default' === suffix) {
283
- $(wrap_at).wrap('<div id="tab-default"></div>');
284
- if ( set_title ) {
285
- $($('#titlediv')).insertBefore(wrap_at);
286
- }
287
- } else {
288
- $(wrap_at+'-' + suffix).wrap('<div id="tab-' + suffix + '"></div>');
289
- if ( set_title ) {
290
- $($('#titlediv-' + suffix)).insertBefore(wrap_at+'-' + suffix);
291
- }
292
- }
293
- });
294
-
295
- $(content_tabs_id).addClass('wpglobus-post-body-tabs');
296
-
297
- /**
298
- * Set fields as multilingual.
299
- */
300
- //setTimeout(api.setMultilingualFields(), 1000);
301
- api.setMultilingualFields();
302
-
303
- /**
304
- *
305
- */
306
- //api.ajaxPrefilter();
307
-
308
- /**
309
- * @since 2.2.22
310
- */
311
- if ('post.php' === WPGlobusAdmin.page) {
312
- this.postEdit();
313
- }
314
-
315
- },
316
- postEdit: function() {
317
- /**
318
- * For compatibility with wpglobus-admin-51.js.
319
- * @since 2.2.22
320
- */
321
- $(document).triggerHandler('wpglobus_after_post_edit');
322
- },
323
- ajaxPrefilter: function() {
324
- /**
325
- * @todo WIP.
326
- */
327
- $.ajaxPrefilter(function( options, originalOptions, jqXHR ) {
328
- // Modify options, control originalOptions, store jqXHR, etc
329
- //console.log(options);
330
- });
331
- },
332
- setMultilingualFields: function() {
333
- $.each(WPGlobusAdmin.builder.multilingualFields, function(indx, field) {
334
- /**
335
- * @since 2.5.17 Revised function to use field param as string or object.
336
- */
337
- var attrs = api.getFieldAttrs(field);
338
- if ( 'function' === typeof WPGlobusAdmin[attrs.fieldFunction] ) {
339
- WPGlobusAdmin[attrs.fieldFunction](attrs);
340
- }
341
- });
342
- },
343
- textField: function(attrs){
344
- var id = attrs.id;
345
- var elementBy = 'name';
346
- var node = document.getElementsByName(id);
347
- var $element;
348
-
349
- if ( 0 == node.length ) {
350
- elementBy = 'id';
351
- node = document.getElementById(id);
352
- }
353
-
354
- if ( null === node ) {
355
- return true;
356
- } else {
357
- if ( 'id' == elementBy ) {
358
- $element = $('#'+id);
359
- } else {
360
- var nodeName = node[0].nodeName;
361
- nodeName = nodeName.toLowerCase();
362
- $element = $(nodeName+'[name="'+id+'"]');
363
- }
364
- $element.addClass(WPGlobusAdmin.builder.translatableClass);
365
- }
366
- },
367
- wysiwygField: function(attrs){
368
- $(document).on('wpglobus_wysiwyg_field', function(evnt,params) {
369
- params.callback(attrs);
370
- });
371
- },
372
- fileField: function(attrs){
373
- // @since 2.5.17 @W.I.P
374
- /*
375
- $(document).on('wpglobus_file_field', function(evnt,params) {
376
- params.callback(attrs);
377
- }); // */
378
- },
379
- getFieldAttrs: function(field){
380
- var defaultAttrs = {
381
- 'id': false,
382
- 'type': 'text',
383
- 'fieldFunction': 'textField'
384
- }
385
- var attrs = {};
386
- if ( 'string' === typeof field ) {
387
- attrs['id'] = field;
388
- } else if ( 'object' === typeof field ) {
389
- if ( 'undefined' !== typeof field.id ) {
390
- attrs['id'] = field.id;
391
- }
392
- if ( 'undefined' !== typeof field.type ) {
393
- attrs['type'] = field.type;
394
- attrs['fieldFunction'] = field.type+'Field';
395
- }
396
- }
397
- return $.extend({}, defaultAttrs, attrs);
398
- }
399
- }
400
-
401
- WPGlobusAdmin = $.extend({}, WPGlobusAdmin, api);
402
- WPGlobusAdmin.init();
403
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/builders/assets/wpglobus-admin-builder-56.min.js DELETED
@@ -1 +0,0 @@
1
- var WPGlobusCore;!function(l){var s=WPGlobusCore={strpos:function(t,e,a){var o=(t=""+t).indexOf(e,a);return 0<=o&&o},TextFilter:function(t,e,a){if(void 0===t||""===t)return t;var o,n,l=[],i=!1;e=""==e?"en":e,a=void 0===a||""==a?"RETURN_IN_DEFAULT_LANGUAGE":a,l[0]=[],l[0].start=WPGlobusCoreData.locale_tag_start.replace("%s",e),l[0].end=WPGlobusCoreData.locale_tag_end,l[1]=[],l[1].start="\x3c!--:"+e+"--\x3e",l[1].end="\x3c!--:--\x3e",l[2]=[],l[2].start="[:"+e+"]",l[2].end="[:";for(var u=0;u<3;u++)if(!1!==(o=s.strpos(t,l[u].start))){o+=l[u].start.length,t=!1===(n=s.strpos(t,l[u].end,o))?t.substr(o):t.substr(o,n-o),i=!0;break}return i||("RETURN_EMPTY"==a?e==WPGlobusCoreData.default_language&&!/(\{:|\[:|<!--:)[a-z]{2}/.test(t)||(t=""):e==WPGlobusCoreData.default_language?/(\{:|\[:|<!--:)[a-z]{2}/.test(t)&&(t=""):t=s.TextFilter(t,WPGlobusCoreData.default_language)),t},addLocaleMarks:function(t,e){return WPGlobusCoreData.locale_tag_start.replace("%s",e)+t+WPGlobusCoreData.locale_tag_end},getTranslations:function(a){var o,n={};return l.each(WPGlobusCoreData.enabled_languages,function(t,e){o=e==WPGlobusCoreData.default_language?"RETURN_IN_DEFAULT_LANGUAGE":"RETURN_EMPTY",n[e]=s.TextFilter(a,e,o)}),n},getString:function(t,e,a){if(void 0===t)return t;void 0===e&&(e=""),void 0===a&&(a=WPGlobusCoreData.language),(t=s.getTranslations(t))[a]=e;var o="";return l.each(t,function(t,e){""!=e&&t!=WPGlobusCoreData.default_language&&(o+=s.addLocaleMarks(e,t))}),""!=t[WPGlobusCoreData.default_language]&&(o=""==o?t[WPGlobusCoreData.default_language]:s.addLocaleMarks(t[WPGlobusCoreData.default_language],WPGlobusCoreData.default_language)+o),o}}}(jQuery),jQuery(document).ready(function(l){"use strict";var n;"undefined"!=typeof WPGlobusAdmin&&(n={languageSelectorBoxDelta:0,locationPathname:"/wp-admin/post.php",init:function(){"taxonomy-edit"===WPGlobusAdmin.page?n.taxonomyEdit():n.start()},_info:function(){var t=void 0;0<l("#language").length&&(t=l("#language").val()),console.log("Current language from hidden (#language) : ",t),t=void 0,0<l("#wpglobus-language").length&&(t=l("#wpglobus-language").val()),console.log("Current language from hidden (#wpglobus-language) : ",t),t=void 0,0<l('input[name="wpglobus-language"]').length&&(t=l('input[name="wpglobus-language"]').val()),console.log('Current language from hidden (input[name="wpglobus-language"]) : ',t),t=void 0,0<l('input[name="wpglobus_language"]').length&&(t=l('input[name="wpglobus_language"]').val()),console.log('Current language from hidden (input[name="wpglobus_language"]) : ',t),console.log("Builder : ",WPGlobusAdmin.builder);var e=l("#content").val();""==e?console.log("Editor content (#content) : (empty)"):console.log(e)},checkCookie:function(){if(-1!=window.location.search.indexOf("language="))return!1;if("post.php"==WPGlobusAdmin.page){var t=wpCookies.get(WPGlobusAdmin.builder.languageCookie);if(null!==t&&history.pushState){var e=(t=t.split("+"))[0];if(void 0!==t[1]&&t[1]+0==WPGlobusAdmin.$_get.post){var a=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search+"&language="+e;return window.history.pushState({path:a},"",a),e}}}return!1},setCookie:function(){var t=n.checkCookie();t||void 0===(t=WPGlobusAdmin.$_get.language)&&(t=WPGlobusAdmin.data.default_language),wpCookies.set(WPGlobusAdmin.builder.languageCookie,t+"+"+WPGlobusAdmin.$_get.post,31536e3,n.locationPathname)},setLocationSearch:function(){var t;history.pushState&&-1==window.location.search.indexOf("language=")&&WPGlobusAdmin.data.default_language!=WPGlobusAdmin.currentTab&&(t=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search+"&language="+WPGlobusAdmin.currentTab,window.history.pushState({path:t},"",t))},taxonomyEdit:function(){l(".wpglobus-taxonomy-tabs").insertAfter("#ajax-response"),l(".wrap").tabs(),l(WPGlobusAdmin.data.multilingualSlug.title).insertAfter(".term-slug-wrap th label"),WPGlobusAdmin.currentTab!==WPGlobusAdmin.data.default_language&&(l(".wpglobus-tax-edit-tab").removeClass("ui-tabs-active ui-state-active"),l("#wpglobus-link-tab-"+WPGlobusAdmin.currentTab).addClass("ui-tabs-active ui-state-active")),l(document).on("click",".wpglobus-tax-edit-tab a",function(t){t.preventDefault();var e=l(this).data("href");location.href=e}),n.setMultilingualFields(),l(document).on("tinymce-editor-init",function(t,e){l("#"+e.getContainer().id).find("iframe").addClass(WPGlobusAdmin.builder.translatableClass).css({width:""})})},start:function(){n.setLocationSearch();var a="#postdivrich",o=!0,t="#post-body-content";!1===WPGlobusAdmin.data.support.editor&&(o=!(a="#titlediv")),!1===WPGlobusAdmin.data.support.title&&(o=!1),l(t).prepend(l(".wpglobus-post-body-tabs-list")),l.each(WPGlobusAdmin.tabs,function(t,e){"default"===e?(l(a).wrap('<div id="tab-default"></div>'),o&&l(l("#titlediv")).insertBefore(a)):(l(a+"-"+e).wrap('<div id="tab-'+e+'"></div>'),o&&l(l("#titlediv-"+e)).insertBefore(a+"-"+e))}),l(t).addClass("wpglobus-post-body-tabs"),n.setMultilingualFields(),"post.php"===WPGlobusAdmin.page&&this.postEdit()},postEdit:function(){l(document).triggerHandler("wpglobus_after_post_edit")},ajaxPrefilter:function(){l.ajaxPrefilter(function(t,e,a){})},setMultilingualFields:function(){l.each(WPGlobusAdmin.builder.multilingualFields,function(t,e){var a=n.getFieldAttrs(e);"function"==typeof WPGlobusAdmin[a.fieldFunction]&&WPGlobusAdmin[a.fieldFunction](a)})},textField:function(t){var e,a=t.id,o="name",n=document.getElementsByName(a);if(0==n.length&&(o="id",n=document.getElementById(a)),null===n)return!0;("id"==o?l("#"+a):(e=(e=n[0].nodeName).toLowerCase(),l(e+'[name="'+a+'"]'))).addClass(WPGlobusAdmin.builder.translatableClass)},wysiwygField:function(a){l(document).on("wpglobus_wysiwyg_field",function(t,e){e.callback(a)})},fileField:function(t){},getFieldAttrs:function(t){var e={};return"string"==typeof t?e.id=t:"object"==typeof t&&(void 0!==t.id&&(e.id=t.id),void 0!==t.type&&(e.type=t.type,e.fieldFunction=t.type+"Field")),l.extend({},{id:!1,type:"text",fieldFunction:"textField"},e)}},(WPGlobusAdmin=l.extend({},WPGlobusAdmin,n)).init())});
 
trunk/includes/builders/class-wpglobus-builder-update-post.php DELETED
@@ -1,149 +0,0 @@
1
- <?php
2
- /**
3
- * File: class-wpglobus-builder-update-post.php
4
- *
5
- * @since 2.2.35
6
- * @since 2.4.3 Added `wp_insert_post_data` filter.
7
- *
8
- * @package WPGlobus\Builders
9
- * @author Alex Gor(alexgff)
10
- */
11
-
12
- /**
13
- * Class WPGlobus_Builder_Update_Post.
14
- */
15
- if ( ! class_exists( 'WPGlobus_Builder_Update_Post' ) ) :
16
-
17
- class WPGlobus_Builder_Update_Post {
18
-
19
- /**
20
- * Builder ID.
21
- */
22
- protected $id = null;
23
-
24
- /**
25
- * Constructor.
26
- */
27
- public function __construct( $id ) {
28
-
29
- $this->id = $id;
30
-
31
- /**
32
- * Do not start for `gutenberg`.
33
- * The block editor prohibits saving post with an empty post title from post edit page.
34
- */
35
- if ( 'gutenberg' == $this->id ) {
36
- return;
37
- }
38
-
39
- add_filter( 'wp_insert_post_empty_content', array( $this, 'filter__post_empty_content' ), 10, 2);
40
-
41
- /**
42
- * @since 2.4.3
43
- * @todo incorrect the saving post in extra languages with priority = 10
44
- */
45
- add_filter( 'wp_insert_post_data', array( $this, 'filter__wp_insert_post_data' ), 100, 2 );
46
- }
47
-
48
- /**
49
- * Filters whether the post should be considered "empty".
50
- *
51
- * @see wp-includes\post.php
52
- *
53
- * @param bool $maybe_empty Whether the post should be considered "empty".
54
- * @param array $postarr Array of post data.
55
- */
56
- public function filter__post_empty_content( $maybe_empty, $postarr ) {
57
-
58
- if ( WPGlobus::Config()->builder->is_default_language() ) {
59
- return $maybe_empty;
60
- }
61
-
62
- /**
63
- * Don't return a truthy value for extra language.
64
- */
65
- return false;
66
- }
67
-
68
- /**
69
- * Callback for 'wp_insert_post_data'.
70
- *
71
- * @since 2.4.3
72
- * @param array $data
73
- * @param array $postarr
74
- *
75
- * @return mixed
76
- */
77
- public function filter__wp_insert_post_data( $data, $postarr ) {
78
-
79
- /**
80
- * Prevent to filter disabled post type.
81
- */
82
- if ( in_array( $data['post_type'], WPGlobus::Config()->disabled_entities, true ) ) {
83
- return $data;
84
- }
85
-
86
- global $wpdb;
87
- $_post = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE ID = %d AND post_type = %s LIMIT 1", $postarr['ID'], $postarr['post_type'] ) );
88
-
89
- $fields = array();
90
- if ( isset( $postarr['post_title'] ) ) {
91
- $fields['post_title'] = $postarr['post_title'];
92
- }
93
-
94
- if ( isset( $postarr['post_content'] ) ) {
95
- $fields['post_content'] = $postarr['post_content'];
96
- }
97
-
98
- if ( isset( $postarr['post_excerpt'] ) ) {
99
- $fields['post_excerpt'] = $postarr['post_excerpt'];
100
- }
101
-
102
- $builder_language = WPGlobus::Config()->builder->get_language();
103
-
104
- if ( empty( $builder_language ) ) {
105
-
106
- if ( empty( $postarr[ WPGlobus::get_language_meta_key() ] ) ) {
107
- $builder_language = WPGlobus::Config()->default_language;
108
- } else {
109
- $builder_language = $postarr[ WPGlobus::get_language_meta_key() ];
110
- }
111
- }
112
-
113
- foreach ( $fields as $field => $value ) {
114
-
115
- $tr = array();
116
-
117
- foreach ( WPGlobus::Config()->enabled_languages as $lang ) :
118
-
119
- if ( $lang === $builder_language ) {
120
-
121
- $text = $value;
122
- if ( WPGlobus_Core::has_translations( $value ) ) {
123
- $text = WPGlobus_Core::text_filter( $value, $lang, WPGlobus::RETURN_EMPTY );
124
- }
125
- if ( ! empty( $text ) ) {
126
- $tr[ $lang ] = $text;
127
- }
128
- } else {
129
- if ( isset( $_post->$field ) ) {
130
- $text = WPGlobus_Core::text_filter( $_post->$field, $lang, WPGlobus::RETURN_EMPTY );
131
- if ( ! empty( $text ) ) {
132
- $tr[ $lang ] = $text;
133
- }
134
- }
135
- }
136
-
137
- endforeach;
138
-
139
- $data[ $field ] = WPGlobus_Utils::build_multilingual_string( $tr );
140
-
141
- }
142
-
143
- return $data;
144
- }
145
- } // class WPGlobus_Builder_Update_Post.
146
-
147
- endif;
148
-
149
- # --- EOF
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/builders/class-wpglobus-builder.php DELETED
@@ -1,424 +0,0 @@
1
- <?php
2
- /**
3
- * File: class-wpglobus-builder.php
4
- *
5
- * @package WPGlobus\Builders
6
- * @author Alex Gor(alexgff)
7
- */
8
-
9
- /**
10
- * Class WPGlobus_Builder.
11
- *
12
- * @since 1.9.17
13
- */
14
- if ( ! class_exists( 'WPGlobus_Builder' ) ) :
15
-
16
- class WPGlobus_Builder {
17
-
18
- /**
19
- * Current language of post.
20
- */
21
- protected $language = null;
22
-
23
- /**
24
- * Builder ID.
25
- */
26
- protected $id = null;
27
-
28
- /**
29
- * Array of activated builders.
30
- *
31
- * @since 1.9.17
32
- * @access protected
33
- * @var array
34
- */
35
- // phpcs:ignore
36
- //protected $builders = array(); TODO remove
37
-
38
- /**
39
- * @var array
40
- * @todo Unused?
41
- */
42
- protected $builder_post = null;
43
-
44
- /**
45
- * Constructor method.
46
- *
47
- * @since 1.9.17
48
- *
49
- * @param string $id The Builder ID, such as 'gutenberg'.
50
- */
51
- public function __construct( $id ) {
52
-
53
- $this->id = $id;
54
-
55
- $this->set_current_language();
56
-
57
- // phpcs:ignore
58
- // if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
59
- /**
60
- * @todo Add the handling of AJAX.
61
- */
62
- // }
63
-
64
- if ( is_admin() ) {
65
-
66
- add_action( 'redirect_post_location', array( $this, 'on__redirect' ), 5, 2 );
67
-
68
- add_filter( 'admin_body_class', array( $this, 'filter__add_admin_body_class' ) );
69
-
70
- /**
71
- * Add builder/add-on label to admin bar.
72
- *
73
- * @since 1.9.27
74
- */
75
- add_action( 'admin_bar_menu', array( $this, 'on__admin_bar_menu' ), 11 );
76
-
77
- /**
78
- * @see "{$field_no_prefix}_edit_pre" in wp-includes\post.php
79
- */
80
- add_filter( 'content_edit_pre', array( $this, 'filter__content' ), 5, 2 );
81
- add_filter( 'title_edit_pre', array( $this, 'filter__title' ), 5, 2 );
82
- add_filter( 'excerpt_edit_pre', array( $this, 'filter__excerpt' ), 5, 2 );
83
-
84
- }
85
-
86
- /**
87
- * Show language tabs in post.php page.
88
- *
89
- * @see_file wpglobus\includes\class-wpglobus.php
90
- */
91
- add_filter( 'wpglobus_show_language_tabs', array( $this, 'filter__show_language_tabs' ), 5 );
92
-
93
- }
94
-
95
- /**
96
- * Filter title.
97
- *
98
- * @param string $value The title.
99
- * @param int $post_id Unused.
100
- *
101
- * @return string
102
- */
103
- public function filter__title(
104
- $value, /** @noinspection PhpUnusedParameterInspection */
105
- $post_id
106
- ) {
107
- $value = WPGlobus_Core::text_filter( $value, $this->get_current_language(), WPGlobus::RETURN_EMPTY );
108
-
109
- return $value;
110
- }
111
-
112
- /**
113
- * Filter content.
114
- *
115
- * @param string $content The content.
116
- * @param int $post_id Post ID - Unused.
117
- *
118
- * @return string
119
- */
120
- public function filter__content(
121
- $content, /** @noinspection PhpUnusedParameterInspection */
122
- $post_id
123
- ) {
124
- $content = WPGlobus_Core::text_filter( $content, $this->get_current_language(), WPGlobus::RETURN_EMPTY );
125
-
126
- return $content;
127
- }
128
-
129
- /**
130
- * Filter excerpt.
131
- *
132
- * @param string $excerpt The excerpt.
133
- * @param int $post_id Post ID - Unused.
134
- *
135
- * @return string
136
- */
137
- public function filter__excerpt(
138
- $excerpt, /** @noinspection PhpUnusedParameterInspection */
139
- $post_id
140
- ) {
141
- $excerpt = WPGlobus_Core::text_filter( $excerpt, $this->get_current_language(), WPGlobus::RETURN_EMPTY );
142
-
143
- return $excerpt;
144
- }
145
-
146
- /**
147
- * Redirect.
148
- *
149
- * @param string $location
150
- * @param int $post_id Post ID - Unused.
151
- *
152
- * @return string
153
- */
154
- public function on__redirect(
155
- $location, /** @noinspection PhpUnusedParameterInspection */
156
- $post_id
157
- ) {
158
- /**
159
- * Tested with:
160
- * - Page Builder by SiteOrigin OK.
161
- */
162
- return $location . '&language=' . $this->language;
163
- }
164
-
165
- /**
166
- * Getter.
167
- *
168
- * @return null|string
169
- */
170
- public function get_id() {
171
- return $this->id;
172
- }
173
-
174
- /**
175
- * Is this a "builder" post?
176
- *
177
- * @return bool
178
- * @todo Unused?
179
- */
180
- public function is_builder_post() {
181
- if ( is_null( $this->builder_post ) ) {
182
- return false;
183
- }
184
-
185
- return true;
186
- }
187
-
188
- /**
189
- * Get hidden "wpglobus-language" field.
190
- *
191
- * @since 1.9.17
192
- * @return string
193
- */
194
- public function get_language_field() {
195
- /**
196
- * @see on_add_devmode_switcher() in wpglobus\includes\class-wpglobus.php
197
- * @todo may be add special function to get hidden language field.
198
- */
199
- return '<input type="hidden" id="' . esc_attr( WPGlobus::get_language_meta_key() ) . '" name="' . esc_attr( WPGlobus::get_language_meta_key() ) . '" value="' . esc_attr( $this->get_current_language() ) . '" />';
200
- }
201
-
202
- /**
203
- * Return current language.
204
- *
205
- * @since 1.9.17
206
- * @return string
207
- */
208
- public function get_current_language() {
209
- return $this->language;
210
- }
211
-
212
- /**
213
- * Set current language.
214
- *
215
- * @since 1.9.17
216
- * @return void
217
- */
218
- public function set_current_language() {
219
-
220
- if ( ! is_null( $this->language ) ) {
221
- return;
222
- }
223
-
224
- /**
225
- * Don't duplicate the defining of current language.
226
- * Let's just get it from WPGlobus::Config()->builder.
227
- */
228
- $language = WPGlobus::Config()->builder->get_language();
229
-
230
- if ( $language ) {
231
- // Language was set in WPGlobus_Config_Builder class.
232
- $this->language = $language;
233
- }
234
-
235
- $post_id = 0;
236
- if ( ! empty( $_REQUEST['post'] ) ) { // phpcs:ignore WordPress.CSRF.NonceVerification
237
- $post_id = (int) $_REQUEST['post'];
238
- } elseif ( ! empty( $_REQUEST['id'] ) ) { // phpcs:ignore WordPress.CSRF.NonceVerification
239
- $post_id = (int) $_REQUEST['id'];
240
- } elseif ( ! empty( $_REQUEST['post_ID'] ) ) { // phpcs:ignore WordPress.CSRF.NonceVerification
241
- $post_id = (int) $_REQUEST['post_ID'];
242
- }
243
-
244
- if ( $post_id && ! is_null( $this->language ) ) {
245
- update_post_meta( $post_id, WPGlobus::Config()->builder->get_language_meta_key(), $this->language );
246
- }
247
-
248
- }
249
-
250
- /**
251
- * Show language tabs on post.php page.
252
- *
253
- * @see_file includes\class-wpglobus.php
254
- *
255
- * @param bool $value
256
- *
257
- * @return bool
258
- */
259
- public function filter__show_language_tabs(
260
- /** @noinspection PhpUnusedParameterInspection */
261
- $value
262
- ) {
263
-
264
- global $pagenow;
265
-
266
- $classes = array();
267
- $classes['wpglobus-post-tab'] = 'wpglobus-post-tab';
268
- $classes['ui-state-default'] = 'ui-state-default';
269
- $classes['ui-corner-top'] = 'ui-corner-top';
270
- $classes['ui-tabs-active'] = 'ui-tabs-active';
271
- $classes['ui-tabs-loading'] = 'ui-tabs-loading';
272
-
273
- $link_class = array();
274
- $link_style = array();
275
- $link_title = '';
276
- if ( 'post-new.php' === $pagenow ) {
277
- $link_style['cursor'] = 'cursor:not-allowed';
278
- $link_title = esc_html__( 'Save draft before using extra language.', 'wpglobus' );
279
- }
280
-
281
- ?>
282
- <ul class="wpglobus-post-body-tabs-list">
283
- <?php
284
- $order = 0;
285
-
286
- $get_array = $_GET; // phpcs:ignore WordPress.CSRF.NonceVerification
287
- /**
288
- * Unset unneeded elements.
289
- */
290
- unset( $get_array['language'] );
291
- unset( $get_array['message'] );
292
-
293
- foreach ( WPGlobus::Config()->open_languages as $language ) {
294
-
295
- $tab_suffix = WPGlobus::Config()->default_language === $language ? 'default' : $language;
296
-
297
- $_classes = $classes;
298
-
299
- $_link_class = $link_class;
300
- $_link_style = $link_style;
301
-
302
- if ( 'post-new.php' === $pagenow && WPGLobus::Config()->default_language === $language ) {
303
- $_link_style['cursor'] = '';
304
- }
305
-
306
- $_link_class['tab-link-active'] = WPGlobus::Config()->builder->get_language() === $language ? 'wpglobus-tab-link-active' : '';
307
-
308
- if ( $language === $this->language ) {
309
- $_classes[] = 'ui-state-active';
310
- }
311
-
312
- $link = add_query_arg( array_merge( $get_array, array( 'language' => $language ) ), admin_url( $pagenow ) );
313
- $_link_title = '';
314
- if ( 'post-new.php' === $pagenow && WPGLobus::Config()->default_language !== $language ) {
315
- $link = '#';
316
- $_link_title = $link_title;
317
- }
318
- ?>
319
- <li id="link-tab-<?php echo esc_attr( $tab_suffix ); ?>"
320
- data-language="<?php echo esc_attr( $language ); ?>"
321
- data-order="<?php echo esc_attr( $order ); ?>"
322
- class="<?php echo esc_attr( implode( ' ', $_classes ) ); ?>">
323
- <!--<a href="#tab-<?php echo esc_attr( $tab_suffix ); ?>"><?php echo esc_html( WPGlobus::Config()->en_language_name[ $language ] ); ?></a>-->
324
- <a style="<?php echo esc_attr( implode( ';', $_link_style ) ); ?>"
325
- title="<?php echo esc_attr( $_link_title ); ?>"
326
- class="<?php echo esc_attr( implode( ' ', $_link_class ) ); ?>"
327
- href="<?php echo esc_url( $link ); ?>"><?php echo esc_html( WPGlobus::Config()->en_language_name[ $language ] ); ?></a>
328
- </li>
329
- <?php
330
- $order++;
331
- }
332
- ?>
333
- </ul>
334
- <?php
335
- /**
336
- * Return false to prevent output standard WPGlobus tabs.
337
- */
338
- return false;
339
- }
340
-
341
- /**
342
- * Add class to body in admin.
343
- *
344
- * @see admin_body_class filter
345
- *
346
- * @since 1.9.17
347
- *
348
- * @param string $classes
349
- *
350
- * @return string
351
- */
352
- public function filter__add_admin_body_class( $classes ) {
353
- return $classes . ' wpglobus-wp-admin-builder wpglobus-wp-admin-builder-' . $this->id;
354
- }
355
-
356
- /**
357
- * Add builder label to admin bar.
358
- *
359
- * @since 1.9.27
360
- *
361
- * @param WP_Admin_Bar $wp_admin_bar
362
- */
363
- public function on__admin_bar_menu( WP_Admin_Bar $wp_admin_bar ) {
364
-
365
- global $pagenow;
366
-
367
- if ( ! in_array( $pagenow, array( 'post.php', 'post-new.php', 'term.php' ), true ) ) {
368
- return;
369
- }
370
-
371
- $_builder_label = esc_html__( 'Builder', 'wpglobus' ) . ': ';
372
- if ( class_exists( 'WPGlobus_Builders' ) ) {
373
- $_builder = WPGlobus_Builders::get_addon( $this->id );
374
-
375
- if ( ! empty( $_builder['admin_bar_label'] ) ) {
376
- $_builder_label = $_builder['admin_bar_label'] . ': ';
377
- }
378
- if ( empty( $_builder['admin_bar_builder_label'] ) ) {
379
- $_builder_label .= $_builder['plugin_name'];
380
- } else {
381
- $_builder_label .= $_builder['admin_bar_builder_label'];
382
- }
383
- } else {
384
- $_builder_label .= $this->id;
385
- }
386
-
387
- $wp_admin_bar->add_menu(
388
- array(
389
- 'id' => 'wpglobus-builder-id',
390
- 'parent' => 'top-secondary',
391
- 'title' => '<span class="ab-label">' . $_builder_label . '</span>',
392
- )
393
- );
394
-
395
- $_title = esc_html__( 'Сompatibility Settings', 'wpglobus' );
396
-
397
- $_url = admin_url(
398
- add_query_arg(
399
- array(
400
- 'page' => 'wpglobus_options',
401
- 'tab' => 'compatibility',
402
- ),
403
- 'admin.php'
404
- )
405
- );
406
-
407
- $wp_admin_bar->add_menu(
408
- array(
409
- 'parent' => 'wpglobus-builder-id',
410
- 'id' => 'wpglobus-builder-compatibility-link',
411
- 'title' => '<span>' . $_title . '</span>',
412
- 'href' => $_url,
413
- 'meta' => array(
414
- '_target' => 'blank',
415
- 'tabindex' => -1,
416
- ),
417
- )
418
- );
419
-
420
- }
421
-
422
- }
423
-
424
- endif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/builders/class-wpglobus-builders.php DELETED
@@ -1,1627 +0,0 @@
1
- <?php
2
- /**
3
- * File: class-wpglobus-builders.php
4
- *
5
- * @package WPGlobus\Builders
6
- * @author Alex Gor(alexgff)
7
- */
8
-
9
- /**
10
- * Elementor.
11
- * @since 2.4.11
12
- */
13
- use Elementor\Modules\Gutenberg;
14
-
15
- if ( ! defined( 'ABSPATH' ) ) {
16
- exit; // Exit if accessed directly.
17
- }
18
-
19
- /**
20
- * Class WPGlobus_Builders.
21
- */
22
- if ( ! class_exists( 'WPGlobus_Builders' ) ) :
23
-
24
- class WPGlobus_Builders {
25
-
26
- /**
27
- * @var array
28
- */
29
- protected static $attrs = array();
30
-
31
- /**
32
- * @var array
33
- */
34
- protected static $admin_attrs = array();
35
-
36
- /**
37
- * @var array
38
- */
39
- protected static $add_on = array();
40
-
41
- /**
42
- * @var string
43
- * @since 2.2.11
44
- */
45
- protected static $post_type = null;
46
-
47
- /**
48
- * @var array
49
- * @since 2.2.24
50
- */
51
- protected static $init_attrs = null;
52
-
53
- /**
54
- * @return array
55
- */
56
- public static function get_addons() {
57
-
58
- if ( ! empty( self::$add_on ) ) {
59
- return self::$add_on;
60
- }
61
-
62
- global $wp_version;
63
-
64
- self::$add_on['gutenberg'] = array(
65
- 'id' => 'gutenberg',
66
- 'role' => 'builder',
67
- 'admin_bar_label' => version_compare( $wp_version, '4.9.99', '>' ) ? 'Core' : 'Builder',
68
- 'supported_min_version' => '4.0.0',
69
- 'const' => 'GUTENBERG_VERSION',
70
- 'plugin_name' => 'Gutenberg',
71
- 'admin_bar_builder_label' => '',
72
- 'plugin_uri' => 'https://github.com/WordPress/gutenberg',
73
- 'path' => 'gutenberg/gutenberg.php',
74
- 'stage' => 'production',
75
- );
76
-
77
- self::$add_on['js_composer'] = array(
78
- 'id' => 'js_composer',
79
- 'role' => 'builder',
80
- 'supported_min_version' => '5.4.0',
81
- 'const' => 'WPB_VC_VERSION',
82
- 'plugin_name' => 'WPBakery Page Builder',
83
- 'admin_bar_builder_label' => 'WPBakery PB',
84
- 'plugin_uri' => 'https://wpbakery.com/',
85
- 'path' => 'js_composer/js_composer.php',
86
- 'stage' => 'production',
87
- );
88
-
89
- self::$add_on['elementor'] = array(
90
- 'id' => 'elementor',
91
- 'role' => 'builder',
92
- 'supported_min_version' => '2.5.14',
93
- 'const' => 'ELEMENTOR_VERSION',
94
- 'plugin_name' => 'Elementor',
95
- 'plugin_uri' => 'https://wordpress.org/plugins/elementor/',
96
- 'path' => 'elementor/elementor.php',
97
- 'stage' => 'beta',
98
- 'beta_version' => '3',
99
- );
100
-
101
- if ( file_exists( WP_PLUGIN_DIR . '/wordpress-seo-premium/wp-seo-premium.php' ) ) {
102
-
103
- self::$add_on['yoast_seo'] = array(
104
- 'id' => 'yoast_seo',
105
- 'role' => 'builder',
106
- 'admin_bar_label' => 'Add-on',
107
- 'supported_min_version' => '7.7',
108
- 'const' => 'WPSEO_VERSION',
109
- 'plugin_name' => 'Yoast SEO Premium',
110
- 'plugin_uri' => 'https://yoast.com/wordpress/plugins/seo/',
111
- 'path' => 'wordpress-seo-premium/wp-seo-premium.php',
112
- 'stage' => 'production',
113
- );
114
-
115
- }
116
-
117
- /**
118
- * @since 2.3.11
119
- */
120
- $_file = 'wordpress-seo/wp-seo.php';
121
- $_plugin_name = 'Yoast SEO';
122
- if ( defined( 'WPGLOBUS_YOAST_PLUGIN_FILE' ) ) {
123
- $_file = WPGLOBUS_YOAST_PLUGIN_FILE;
124
- $_plugin_name = 'Yoast SEO('.$_file.')';
125
- }
126
-
127
- if ( file_exists( WP_PLUGIN_DIR . '/' . $_file ) ) {
128
-
129
- if ( ! defined( 'WPSEO_PREMIUM_PLUGIN_FILE' ) ) {
130
-
131
- self::$add_on['yoast_seo'] = array(
132
- 'id' => 'yoast_seo',
133
- 'role' => 'builder',
134
- 'admin_bar_label' => 'Add-on',
135
- 'supported_min_version' => '7.7',
136
- 'const' => 'WPSEO_VERSION',
137
- 'plugin_name' => $_plugin_name,
138
- 'plugin_uri' => 'https://wordpress.org/plugins/wordpress-seo/',
139
- 'path' => $_file,
140
- 'stage' => 'production',
141
- );
142
-
143
- }
144
- }
145
-
146
- self::$add_on['woocommerce'] = array(
147
- 'id' => 'woocommerce',
148
- 'role' => 'add-on',
149
- 'config_file' => 'woocommerce.json',
150
- 'supported_min_version' => '3.5.1',
151
- 'const' => 'WC_PLUGIN_FILE',
152
- 'plugin_name' => 'WooCommerce',
153
- 'plugin_uri' => 'https://woocommerce.com',
154
- 'path' => 'woocommerce/woocommerce.php',
155
- 'stage' => 'production',
156
- );
157
-
158
- /**
159
- * @since 2.3.0
160
- */
161
- self::$add_on['pods'] = array(
162
- 'id' => 'pods',
163
- 'role' => 'builder',
164
- 'admin_bar_label' => 'Add-on',
165
- 'config_file' => 'pods.json',
166
- 'supported_min_version' => '2.7.16',
167
- 'const' => 'PODS_VERSION',
168
- 'plugin_name' => 'Pods-Custom Content Types and Fields',
169
- 'plugin_uri' => 'https://wordpress.org/plugins/pods/',
170
- 'path' => 'pods/init.php',
171
- 'stage' => 'production',
172
- 'admin_bar_builder_label' => 'Pods',
173
- );
174
-
175
- /**
176
- * @since 2.4.3
177
- */
178
- self::$add_on['rank_math_seo'] = array(
179
- 'id' => 'rank_math_seo',
180
- 'role' => 'builder',
181
- 'admin_bar_label' => 'Add-on',
182
- 'config_file' => 'rank-math-seo.json',
183
- 'supported_min_version' => '1.0.42',
184
- 'const' => 'RANK_MATH_VERSION',
185
- 'plugin_name' => 'Rank Math SEO',
186
- 'plugin_uri' => 'https://wordpress.org/plugins/seo-by-rank-math/',
187
- 'path' => 'seo-by-rank-math/rank-math.php',
188
- 'stage' => 'beta',
189
- 'admin_bar_builder_label' => 'Rank Math SEO',
190
- );
191
-
192
- /**
193
- * self::$add_on['wp-subtitle'] = array(
194
- * 'id' => 'wp-subtitle',
195
- * 'role' => 'add-on',
196
- * 'config_file' => 'wp-subtitle.json',
197
- * 'supported_min_version' => '3.1',
198
- * 'const' => 'WPSUBTITLE_DIR',
199
- * 'plugin_name' => 'WP Subtitle',
200
- * 'plugin_uri' => 'http://wordpress.org/plugins/wp-subtitle/',
201
- * 'path' => 'wp-subtitle/wp-subtitle.php',
202
- * 'stage' => 'production',
203
- * );
204
- * // */
205
-
206
- /**
207
- * self::$add_on['__test'] = array(
208
- * 'id' => '__test',
209
- * 'supported_min_version' => '1.0',
210
- * 'const' => '__TEST_VERSION',
211
- * 'plugin_name' => 'Test Add-on',
212
- * 'plugin_uri' => '',
213
- * 'path' => 'test-add-on/test-add-on.php',
214
- * );
215
- * // */
216
-
217
- return self::$add_on;
218
- }
219
-
220
- /**
221
- * @param bool $builder
222
- *
223
- * @return false|array
224
- */
225
- public static function get_addon( $builder = false ) {
226
- if ( ! $builder ) {
227
- return false;
228
- }
229
- if ( isset( self::$add_on[ $builder ] ) ) {
230
- return self::$add_on[ $builder ];
231
- }
232
-
233
- return false;
234
- }
235
-
236
- /**
237
- * @param bool $init
238
- * @param array $init_attrs added @since 2.2.24
239
- *
240
- * @return array|bool
241
- */
242
- public static function get( $init = true, $init_attrs = array() ) {
243
-
244
- // if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
245
- //return false;
246
- // }
247
-
248
- /**
249
- * @since 2.2.26
250
- */
251
- if ( empty($init_attrs) ) {
252
- return false;
253
- }
254
-
255
- /**
256
- * @since 2.2.24
257
- */
258
- self::$init_attrs = $init_attrs;
259
-
260
- /**
261
- * @since 2.2.24
262
- */
263
- $post_types = $init_attrs['post_types'];
264
-
265
- /** @global string $pagenow */
266
- global $pagenow;
267
-
268
- self::$attrs = array(
269
- 'id' => false,
270
- 'context' => 'add-on',
271
- 'version' => '',
272
- 'class' => '',
273
- 'post_type' => '',
274
- 'post_id' => '',
275
- 'is_admin' => true,
276
- 'pagenow' => $pagenow,
277
- 'builder_page' => false,
278
- 'doing_ajax' => WPGlobus_WP::is_doing_ajax(),
279
- 'language' => '',
280
- 'message' => '',
281
- 'ajax_actions' => '',
282
- 'builder_support' => true, // @since 2.4.12
283
- );
284
-
285
- self::$admin_attrs = array(
286
- 'multilingualFields' => array( 'post_title', 'excerpt' ),
287
- 'translatableClass' => 'wpglobus-translatable',
288
- );
289
-
290
- /**
291
- * @since 2.2.11
292
- */
293
- if ( in_array( $pagenow, array('post.php', 'post-new.php', 'media-new.php') ) ) {
294
-
295
- /**
296
- * @W.I.P @since 2.2.14
297
- * if ( in_array( $pagenow, array('post.php', 'post-new.php', 'media-new.php', 'admin-ajax.php') ) ) {
298
- */
299
- $post_type = self::get_post_type_2();
300
-
301
- /**
302
- * Filter for post types.
303
- *
304
- * @since 2.2.11
305
- *
306
- * @param array $post_types Array of post types.
307
- * @param string $post_type Current post type.
308
- *
309
- * @return array
310
- */
311
- $post_types = apply_filters( 'wpglobus_builders_post_types', $post_types, $post_type );
312
-
313
- if ( ! array_key_exists( $post_type, $post_types ) ) {
314
- return self::$attrs;
315
- } else if ( ! $post_types[$post_type] ) {
316
- return self::$attrs;
317
- }
318
- }
319
-
320
- if ( $init ) {
321
-
322
- //$builder = false;
323
-
324
- self::get_addons();
325
-
326
- /**
327
- * @since 1.9.17
328
- */
329
- $builder = self::is_gutenberg();
330
- if ( $builder && $builder['builder_page'] ) {
331
- return $builder;
332
- }
333
-
334
- /**
335
- * JS Composer.
336
- *
337
- * @since 1.9.17
338
- * @since 2.2.3 Start js_composer as a builder.
339
- */
340
- if ( ! $builder || ! $builder['builder_page'] ) {
341
- $builder = self::is_js_composer();
342
- if ( $builder && $builder['builder_page'] ) {
343
- return $builder;
344
- }
345
- }
346
-
347
- /**
348
- * Elementor.
349
- *
350
- * @since 1.9.17
351
- */
352
- if ( ! $builder || ! $builder['builder_page'] ) {
353
- $builder = self::is_elementor();
354
- if ( $builder ) {
355
- if ( $builder['is_admin'] ) {
356
- if ( $builder['builder_page'] ) {
357
- return $builder;
358
- }
359
- } else {
360
- /** @noinspection PhpIncludeInspection */
361
- include_once WPGlobus::$PLUGIN_DIR_PATH . 'includes/builders/elementor/class-wpglobus-elementor-front.php';
362
- WPGlobus_Elementor_Front::init( $builder );
363
- }
364
- }
365
- }
366
-
367
- /**
368
- * @since 1.9.17
369
- * @W.I.P
370
- */
371
- /*
372
- $builder = self::is_siteorigin_panels();
373
- if ( $builder ) {
374
- return $builder;
375
- }
376
- // */
377
-
378
- /**
379
- * @since 1.9.17
380
- */
381
- if ( ! $builder || ! $builder['builder_page'] ) {
382
- $builder = self::is_yoast_seo();
383
- if ( $builder && $builder['builder_page'] ) {
384
- return $builder;
385
- }
386
- }
387
-
388
- /**
389
- * Pods – Custom Content Types and Fields.
390
- *
391
- * @since 2.3.0
392
- */
393
- if ( ! $builder || ! $builder['builder_page'] ) {
394
- $builder = self::is_pods();
395
- if ( $builder && $builder['builder_page'] ) {
396
- return $builder;
397
- }
398
-
399
- }
400
-
401
- /**
402
- * Rank Math SEO.
403
- *
404
- * @since 2.4.3
405
- */
406
- if ( ! $builder || ! $builder['builder_page'] ) {
407
- $builder = self::is_rank_math_seo();
408
- if ( $builder && $builder['builder_page'] ) {
409
- return $builder;
410
- }
411
-
412
- }
413
- }
414
-
415
- return self::$attrs;
416
-
417
- }
418
-
419
- /**
420
- * Page Builder by SiteOrigin.
421
- * @W.I.P
422
- * https://wordpress.org/plugins/siteorigin-panels/
423
- */
424
- protected static function is_siteorigin_panels() {}
425
-
426
- /**
427
- * Elementor Page Builder.
428
- * https://wordpress.org/plugins/elementor/
429
- */
430
- protected static function is_elementor() {
431
-
432
- if ( ! defined( 'ELEMENTOR_VERSION' ) ) {
433
- return false;
434
- }
435
-
436
- $__builder = self::get_addon( 'elementor' );
437
-
438
- if ( ! $__builder ) {
439
- return false;
440
- }
441
-
442
- /** @global string $pagenow */
443
- global $pagenow;
444
-
445
- $load_elementor = false;
446
-
447
- if ( version_compare( ELEMENTOR_VERSION, $__builder['supported_min_version'], '<' ) ) {
448
-
449
- $message = 'Unsupported Elementor version.';
450
-
451
- $_attrs = array(
452
- 'id' => 'elementor',
453
- 'version' => ELEMENTOR_VERSION,
454
- 'class' => 'WPGlobus_Elementor',
455
- 'is_admin' => false,
456
- 'builder_page' => false,
457
- 'message' => $message,
458
- );
459
-
460
- $attrs = self::get_attrs( $_attrs );
461
-
462
- return $attrs;
463
-
464
- } else {
465
-
466
- if ( in_array( $pagenow, array( 'admin-ajax.php', 'post.php', 'index.php', 'post-new.php' ), true ) ) {
467
-
468
- /**
469
- * Init current post type.
470
- */
471
- $post_type = is_null(self::$post_type) ? '' : self::$post_type;
472
-
473
- /**
474
- * Init post ID.
475
- */
476
- $post_id = '';
477
-
478
- /**
479
- * Init `builder_support`.
480
- * @since 2.4.12
481
- */
482
- $builder_support = true;
483
-
484
- $ajax_actions = '';
485
- $is_admin = true;
486
-
487
- if ( 'admin-ajax.php' === $pagenow ) {
488
-
489
- // phpcs:ignore WordPress.Security.NonceVerification.Recommended
490
- if ( ! isset( $_REQUEST['action'] ) || 'elementor_ajax' !== $_REQUEST['action'] ) {
491
- return false;
492
- }
493
- // phpcs:ignore WordPress.Security.NonceVerification.Recommended
494
- if ( false !== strpos( $_REQUEST['actions'], 'save_builder' ) ) {
495
- $ajax_actions = 'save_builder';
496
- // phpcs:ignore WordPress.Security.NonceVerification.Recommended
497
- } elseif ( false !== strpos( $_REQUEST['actions'], '"action":"render_widget"' ) ) {
498
- $ajax_actions = 'render_widget';
499
- } else {
500
- return false;
501
- }
502
- $load_elementor = true;
503
- // phpcs:ignore WordPress.Security.NonceVerification.Recommended
504
- $post_id = sanitize_text_field( $_REQUEST['editor_post_id'] );
505
-
506
- } elseif ( 'index.php' === $pagenow ) {
507
-
508
- /**
509
- * @todo remove after testing.
510
- * if ( ! isset( $_GET['elementor-preview'] ) ) {
511
- * return false;
512
- * }
513
- * // */
514
- // @W.I.P @since 2.2.11
515
- // [REQUEST_URI] => /?p=75&elementor-preview=75&ver=1561202861
516
-
517
- $load_elementor = false;
518
- $is_admin = false;
519
- $builder_support = null; // @since 2.4.12
520
-
521
- /**
522
- * @todo Preview page for draft status.
523
- * [REQUEST_URI] => /?p=75&elementor-preview=75&ver=1561202861
524
- * @W.I.P
525
- * @since 2.2.11 [REQUEST_URI] was changed to `?p=75&preview_id=75&preview_nonce=da660129a7&preview=true`.
526
- */
527
- /*
528
- if ( ! empty( $_GET['p'] ) ) {
529
- $load_elementor = true;
530
- $is_admin = true;
531
- $post_id = sanitize_text_field( $_GET['p'] );
532
- $post_type = self::get_post_type($post_id);
533
-
534
- }
535
- // */
536
-
537
- } elseif ( 'post.php' === $pagenow ) {
538
-
539
- $is_admin = true;
540
- // phpcs:ignore WordPress.Security.NonceVerification.Recommended
541
- if ( isset( $_GET['action'] ) && 'elementor' === $_GET['action'] ) {
542
- //$is_admin = false;
543
- $load_elementor = true;
544
- }
545
-
546
- /**
547
- * $cpt_support = get_option( 'elementor_cpt_support', array('page', 'post') );
548
- *
549
- * @see_file elementor\includes\plugin.php
550
- */
551
- $cpt_support = get_option( 'elementor_cpt_support', array( 'page', 'post' ) );
552
-
553
- // phpcs:ignore WordPress.Security.NonceVerification.Recommended
554
- if ( empty( $post_type ) && isset( $_GET['post_type'] ) ) {
555
- /**
556
- * For post-new.php page.
557
- */
558
- // phpcs:ignore WordPress.Security.NonceVerification.Recommended
559
- $post_type = sanitize_text_field( $_GET['post_type'] );
560
- }
561
-
562
- if ( empty( $post_type ) ) {
563
- // phpcs:ignore WordPress.CSRF.NonceVerification
564
- if ( isset( $_GET['post'] ) ) {
565
- $post_type = self::get_post_type( $_GET['post'] ); // phpcs:ignore WordPress.CSRF.NonceVerification
566
- } elseif ( isset( $_REQUEST['post_ID'] ) ) { // phpcs:ignore WordPress.CSRF.NonceVerification
567
- $post_type = self::get_post_type( $_REQUEST['post_ID'] ); // phpcs:ignore WordPress.CSRF.NonceVerification
568
- }
569
- }
570
-
571
- /**
572
- * @since 2.4.12
573
- */
574
- if ( isset( $_GET['post'] ) ) {
575
- $post_id = sanitize_text_field( $_GET['post'] );
576
- }
577
-
578
- // if ( empty( $post_type ) ) {
579
- /**
580
- * Post type by default.
581
- * If we can not define post type then we don't set it to default value.
582
- * Because it may cause incorrect behavior later.
583
- */
584
- //$post_type = 'post';
585
- // }
586
-
587
- if ( in_array( $post_type, $cpt_support, true ) ) {
588
- $load_elementor = true;
589
- }
590
-
591
- /**
592
- * @since 2.4.12
593
- */
594
- if ( $load_elementor ) {
595
-
596
- if ( ! empty($post_id) && (int) $post_id > 0 ) {
597
-
598
- $wpglobus_elementor_support = get_post_meta( $post_id, '_wpglobus_elementor_support', true );
599
- if ( 'off' === $wpglobus_elementor_support ) {
600
- $builder_support = false;
601
- }
602
-
603
- if ( $builder_support ) {
604
-
605
- $elementor_edit_mode = get_post_meta( $post_id, '_elementor_edit_mode', true );
606
-
607
- if ( 'builder' !== $elementor_edit_mode ) {
608
- /**
609
- * Disable elementor support for post, that doesn't use elementor builder.
610
- */
611
- $builder_support = false;
612
- }
613
- }
614
- }
615
- }
616
-
617
- } else {
618
- /**
619
- * @todo may be use @see is_built_with_elementor() in elementor\core\base\document.php
620
- */
621
- $load_elementor = true;
622
- }
623
-
624
- $_attrs = array(
625
- 'id' => 'elementor',
626
- 'version' => ELEMENTOR_VERSION,
627
- 'is_admin' => $is_admin,
628
- 'class' => 'WPGlobus_Elementor',
629
- 'post_type' => $post_type,
630
- 'post_id' => $post_id,
631
- 'builder_page' => false,
632
- 'ajax_actions' => $ajax_actions,
633
- 'post_css_meta_key' => '_wpglobus_elementor_css',
634
- 'post_support_meta_key' => '_wpglobus_elementor_support', // @since 2.4.12
635
- 'elementor_data_meta_key' => '_elementor_data',
636
- 'elementor_css_meta_key' => '_elementor_css',
637
- 'elementor_edit_mode_meta_key' => '_elementor_edit_mode', // @since 2.4.12
638
- 'elementor_css_print_method' => get_option('elementor_css_print_method', 'external'), // @since 2.2.31
639
- );
640
-
641
- if ( $load_elementor ) {
642
- $_attrs['builder_page'] = true;
643
- } else {
644
- $_attrs['builder_page'] = false;
645
- }
646
-
647
- /**
648
- * @since 2.4.12
649
- */
650
- $_attrs['builder_support'] = $builder_support;
651
-
652
- $attrs = self::get_attrs( $_attrs );
653
-
654
- return $attrs;
655
- }
656
- }
657
-
658
- return false;
659
- }
660
-
661
- /**
662
- * WPBakery Page Builder.
663
- * https://wpbakery.com/
664
- */
665
- protected static function is_js_composer() {
666
-
667
- if ( ! defined( 'WPB_VC_VERSION' ) ) {
668
- return false;
669
- }
670
-
671
- /** @global string $pagenow */
672
- global $pagenow;
673
-
674
- /** @global wpdb $wpdb */
675
- // global $wpdb;
676
-
677
- if ( 'post.php' === $pagenow ) {
678
-
679
- $_builder_page = true;
680
-
681
- /**
682
- * @see vc_editor_post_types() (js_composer\include\helpers\helpers_api.php) doesn't work here.
683
- * so let's check the roles.
684
- */
685
- $_opts = wp_roles()->roles;
686
-
687
- if ( ! function_exists( 'wp_get_current_user' ) ) {
688
- /** @noinspection PhpIncludeInspection */
689
- require_once ABSPATH . WPINC . '/pluggable.php';
690
- }
691
-
692
- $_user = wp_get_current_user();
693
-
694
- $post_id = WPGlobus_Utils::safe_get( 'post' );
695
-
696
- if ( empty( $post_id ) ) {
697
- /**
698
- * Before update post we can get empty $_GET array.
699
- * Let's check $_POST.
700
- */
701
- // phpcs:ignore WordPress.Security.NonceVerification.Missing
702
- $post_id = isset( $_POST['post_ID'] ) ? sanitize_text_field( $_POST['post_ID'] ) : '';
703
- }
704
-
705
- // if ( empty( $post_id ) ) {
706
- // @todo add handling this case.
707
- // }
708
-
709
- // $_post_type = $wpdb->get_col( $wpdb->prepare( "SELECT post_type FROM {$wpdb->prefix}posts WHERE ID = %d", $post_id ) );
710
- //
711
- // $post_type = '';
712
- // if ( ! empty( $_post_type[0] ) ) {
713
- // $post_type = $_post_type[0];
714
- // }
715
-
716
- $post = get_post( $post_id );
717
- $post_type = ( $post ? $post->post_type : '' );
718
-
719
- if ( ! isset( $_opts[ $_user->roles[0] ]['capabilities']['vc_access_rules_post_types'] ) ) {
720
- /**
721
- * WPBakery Page Builder is available for pages only (settings were not saved yet).
722
- */
723
- if ( 'page' !== $post_type ) {
724
- $_builder_page = false;
725
- }
726
- } elseif ( empty( $_opts[ $_user->roles[0] ]['capabilities']['vc_access_rules_post_types'] ) ) {
727
- /**
728
- * Settings exist but set to False, so all post types are disabled in WPBakery Page Builder.
729
- */
730
- $_builder_page = false;
731
-
732
- } elseif ( true === $_opts[ $_user->roles[0] ]['capabilities']['vc_access_rules_post_types'] ) {
733
- /**
734
- * WPBakery Page Builder is available for pages only.
735
- */
736
- if ( 'page' !== $post_type ) {
737
- $_builder_page = false;
738
- }
739
- } elseif ( 'custom' === $_opts[ $_user->roles[0] ]['capabilities']['vc_access_rules_post_types'] ) {
740
-
741
- /**
742
- * Custom settings for post types in WPBakery Page Builder.
743
- */
744
- if ( ! empty( $_opts[ $_user->roles[0] ]['capabilities'][ 'vc_access_rules_post_types/' . $post_type ] ) ) {
745
- // Setting for this post type exists and set to True.
746
- $_builder_page = true;
747
- } else {
748
- $_builder_page = false;
749
- }
750
- } else {
751
- $_builder_page = false;
752
- }
753
-
754
- $_attrs = array(
755
- 'id' => 'js_composer',
756
- 'version' => WPB_VC_VERSION,
757
- 'class' => 'WPGlobus_JS_Composer',
758
- 'post_type' => $post_type,
759
- 'builder_page' => $_builder_page,
760
- );
761
-
762
- /**
763
- * @since 2.2.11
764
- * @W.I.P
765
- */
766
- //self::$admin_attrs['multilingualFields'][] = 'wpb_visual_composer';
767
-
768
- $attrs = self::get_attrs( $_attrs );
769
-
770
- return $attrs;
771
-
772
- }
773
-
774
- return false;
775
- }
776
-
777
- /**
778
- * Gutenberg.
779
- *
780
- * @since 1.9.17
781
- */
782
- protected static function is_gutenberg() {
783
-
784
- $load_gutenberg = false;
785
- $message = '';
786
-
787
- /** @global string $pagenow */
788
- global $pagenow, $wp_version;
789
-
790
- if ( version_compare( $wp_version, '4.9.99', '>' ) ) {
791
-
792
- $context = 'core';
793
-
794
- /**
795
- * @since 2.0
796
- */
797
- if ( 'post-new.php' === $pagenow ) {
798
-
799
- /**
800
- * Load specific language switcher for this page.
801
- *
802
- * @see get_switcher_box() in wpglobus\includes\builders\gutenberg\class-wpglobus-gutenberg.php
803
- */
804
- //if ( ! isset( $_GET['classic-editor'] ) ) { // phpcs:ignore WordPress.CSRF.NonceVerification
805
- // Start Gutenberg support if classic editor was not requested.
806
- //$load_gutenberg = true;
807
- //}
808
-
809
- $load_gutenberg = true;
810
-
811
- $load_gutenberg = self::get_3rd_party_status_for_gutenberg( $load_gutenberg );
812
-
813
- } elseif ( 'index.php' === $pagenow ) {
814
-
815
- /**
816
- * When Update button was clicked.
817
- */
818
- if ( ! is_admin() ) {
819
- /**
820
- * Gutenberg updates post as from front.
821
- *
822
- * @see $_SERVER['REQUEST_URI']
823
- */
824
- //$actions = array( 'edit' );
825
- // @todo check 'wp/v2/' in wp.api.versionString (JS).
826
-
827
- // /wp-json/wp/v2/posts/
828
- // /wp-json/wp/v2/pages/
829
- /**
830
- * We need define post type for correct work.
831
- *
832
- * @todo check
833
- * /wp-json/wp/v2/taxonomies?context=edit
834
- * /wp-json/wp/v2/taxonomies?context=edit&_locale=user
835
- * /wp-json/wp/v2/types/wp_block?_locale=user
836
- * /wp-json/wp/v2/blocks?per_page=100&_locale=user
837
- */
838
-
839
- $_request_uri = explode( '/', $_SERVER['REQUEST_URI'] );
840
- $post_id = end( $_request_uri );
841
- $post_id = preg_replace( '/\?.*/', '', $post_id );
842
-
843
- /**
844
- * @todo @see https://wpglobus.freshdesk.com/a/tickets/4103
845
- */
846
-
847
- /**
848
- * @since 2.3.5 Added checking $_request_uri[4].
849
- */
850
- $_continue = false;
851
- if ( 0 !== (int) $post_id && ! empty($_request_uri[4]) ) {
852
-
853
- $GLOBALS['WPGlobus']['builder'] = 'gutenberg';
854
- $GLOBALS['WPGlobus']['context'] = $context;
855
- $GLOBALS['WPGlobus']['post_id'] = $post_id;
856
- switch ( $_request_uri[4] ) {
857
- case 'posts':
858
- $post_type = 'post';
859
- break;
860
- case 'pages':
861
- $post_type = 'page';
862
- break;
863
- default:
864
- $post_type = $_request_uri[4];
865
- }
866
- $GLOBALS['WPGlobus']['post_type'] = $post_type;
867
- $_continue = true;
868
- }
869
-
870
- if ( false !== strpos( $_SERVER['REQUEST_URI'], 'wp/v2/posts' )
871
- || false !== strpos( $_SERVER['REQUEST_URI'], 'wp/v2/pages' )
872
- || $_continue ) {
873
- $load_gutenberg = true;
874
- }
875
- }
876
- } elseif ( 'post.php' === $pagenow ) {
877
-
878
- $load_gutenberg = true;
879
-
880
- $post_type = is_null(self::$post_type) ? '' : self::$post_type;
881
-
882
- /**
883
- * Check out $_POST['post_type'] to define post type.
884
- *
885
- * @since 2.1.6
886
- */
887
- if ( empty( $post_type ) && ! empty( $_POST['post_type'] ) ) { // phpcs:ignore WordPress.CSRF.NonceVerification
888
- $post_type = $_POST['post_type']; // phpcs:ignore WordPress.CSRF.NonceVerification
889
- }
890
-
891
- if ( empty( $post_type ) && ! empty( $_GET['post'] ) ) { // phpcs:ignore WordPress.CSRF.NonceVerification
892
- $post_type = self::get_post_type( $_GET['post'] ); // phpcs:ignore WordPress.CSRF.NonceVerification
893
- }
894
-
895
- /**
896
- * @todo don't check post type @since 2.1.2
897
- */
898
- // if ( ! in_array( $post_type, array( 'post', 'page' ), true ) ) {
899
- // $load_gutenberg = false;
900
- // }
901
-
902
- /**
903
- * @since 2.2.24
904
- */
905
- if ( ! self::use_block_editor_for_post_type($post_type) ) {
906
- /**
907
- * Don't start Block Editor support.
908
- */
909
- return false;
910
-
911
- }
912
-
913
- $load_gutenberg = self::get_3rd_party_status_for_gutenberg( $load_gutenberg, $post_type );
914
-
915
- }
916
-
917
- $_attrs = array(
918
- 'id' => 'gutenberg',
919
- 'version' => $wp_version,
920
- 'class' => 'WPGlobus_Gutenberg',
921
- 'builder_page' => false,
922
- 'pagenow' => $pagenow,
923
- 'post_type' => empty( $post_type ) ? '' : $post_type,
924
- 'message' => $message,
925
- 'context' => $context,
926
- );
927
-
928
- if ( $load_gutenberg ) {
929
- $_attrs['builder_page'] = true;
930
- }
931
-
932
- $attrs = self::get_attrs( $_attrs );
933
-
934
- self::$add_on['gutenberg']['admin_bar_builder_label'] = 'Block Editor';
935
-
936
- return $attrs;
937
-
938
- }
939
-
940
- if ( defined( 'GUTENBERG_VERSION' ) ) {
941
-
942
- $__builder = self::get_addon( 'gutenberg' );
943
-
944
- if ( ! $__builder ) {
945
- return false;
946
- }
947
-
948
- if ( version_compare( GUTENBERG_VERSION, $__builder['supported_min_version'], '<' ) ) {
949
-
950
- $message = 'Unsupported Gutenberg version.';
951
-
952
- } else {
953
-
954
- if ( self::is_gutenberg_ajax() ) {
955
-
956
- $load_gutenberg = true;
957
-
958
- } else {
959
-
960
- if ( 'post-new.php' === $pagenow ) {
961
-
962
- /**
963
- * Load specific language switcher for this page.
964
- *
965
- * @see get_switcher_box() in wpglobus\includes\builders\gutenberg\class-wpglobus-gutenberg.php
966
- */
967
- if ( ! isset( $_GET['classic-editor'] ) ) { // phpcs:ignore WordPress.CSRF.NonceVerification
968
- // Start Gutenberg support if classic editor was not requested.
969
- $load_gutenberg = true;
970
- }
971
-
972
- /**
973
- * @since 1.9.30
974
- */
975
- $load_gutenberg = self::get_3rd_party_status_for_gutenberg( $load_gutenberg );
976
-
977
- } elseif ( 'index.php' === $pagenow ) {
978
-
979
- /**
980
- * When Update button was clicked.
981
- */
982
- if ( ! is_admin() ) {
983
- /**
984
- * Gutenberg updates post as from front.
985
- *
986
- * @see $_SERVER['REQUEST_URI']
987
- */
988
- //$actions = array( 'edit' );
989
- // @todo check 'wp/v2/' in wp.api.versionString (JS).
990
-
991
- // /wp-json/wp/v2/posts/
992
- // /wp-json/wp/v2/pages/
993
- // @todo check /wp-json/wp/v2/taxonomies?context=edit
994
- if ( false !== strpos( $_SERVER['REQUEST_URI'], 'wp/v2/posts' )
995
- || false !== strpos( $_SERVER['REQUEST_URI'], 'wp/v2/pages' ) ) {
996
- $load_gutenberg = true;
997
- }
998
- }
999
- } elseif ( 'post.php' === $pagenow ) {
1000
-
1001
- $load_gutenberg = true;
1002
-
1003
- $actions = array( 'edit', 'editpost' );
1004
- // phpcs:ignore WordPress.Security.NonceVerification.Recommended
1005
- if ( ! empty( $_GET['action'] ) ) {
1006
- // phpcs:ignore WordPress.Security.NonceVerification.Recommended
1007
- if ( in_array( $_GET['action'], $actions, true ) ) {
1008
- // phpcs:ignore WordPress.Security.NonceVerification.Recommended
1009
- if ( array_key_exists( 'classic-editor', $_GET ) ) {
1010
- $load_gutenberg = false;
1011
- }
1012
- // phpcs:ignore WordPress.Security.NonceVerification.Recommended
1013
- if ( isset( $_GET['meta_box'] ) && 1 === (int) $_GET['meta_box'] ) {
1014
- $load_gutenberg = true;
1015
- }
1016
- }
1017
- } elseif ( ! empty( $_POST['action'] ) ) { // phpcs:ignore WordPress.CSRF.NonceVerification
1018
- // phpcs:ignore WordPress.Security.NonceVerification.Missing
1019
- if ( in_array( $_POST['action'], $actions, true ) ) {
1020
- // phpcs:ignore WordPress.Security.NonceVerification.Missing
1021
- if ( array_key_exists( 'classic-editor', $_POST ) ) {
1022
- $load_gutenberg = false;
1023
- }
1024
- // phpcs:ignore WordPress.Security.NonceVerification.Missing
1025
- if ( isset( $_POST['meta_box'] ) && 1 === (int) $_POST['meta_box'] ) {
1026
- $load_gutenberg = true;
1027
- }
1028
- }
1029
- }
1030
-
1031
- $post_type = is_null(self::$post_type) ? '' : self::$post_type;
1032
-
1033
- if ( empty($post_type) && ! empty( $_GET['post'] ) ) { // phpcs:ignore WordPress.CSRF.NonceVerification
1034
- $post_type = self::get_post_type( $_GET['post'] ); // phpcs:ignore WordPress.CSRF.NonceVerification
1035
- }
1036
-
1037
- /**
1038
- * Since 1.9.17 Gutenberg support will be start for posts and pages only.
1039
- */
1040
- if ( ! in_array( $post_type, array( 'post', 'page' ), true ) ) {
1041
- $load_gutenberg = false;
1042
- }
1043
-
1044
- /**
1045
- * @since 1.9.30
1046
- */
1047
- $load_gutenberg = self::get_3rd_party_status_for_gutenberg( $load_gutenberg );
1048
-
1049
- }
1050
- }
1051
- }
1052
-
1053
- $_attrs = array(
1054
- 'id' => 'gutenberg',
1055
- 'version' => GUTENBERG_VERSION,
1056
- 'class' => 'WPGlobus_Gutenberg',
1057
- 'builder_page' => false,
1058
- 'pagenow' => $pagenow,
1059
- 'post_type' => empty( $post_type ) ? '' : $post_type,
1060
- 'message' => $message,
1061
- );
1062
-
1063
- if ( $load_gutenberg ) {
1064
- $_attrs['builder_page'] = true;
1065
- }
1066
-
1067
- $attrs = self::get_attrs( $_attrs );
1068
-
1069
- return $attrs;
1070
-
1071
- }
1072
-
1073
- return $load_gutenberg;
1074
- }
1075
-
1076
- /**
1077
- * @since 1.9.30
1078
- *
1079
- * @param bool $load_gutenberg
1080
- * @param string $post_type @since 2.1.6
1081
- *
1082
- * @return bool
1083
- */
1084
- protected static function get_3rd_party_status_for_gutenberg( $load_gutenberg, $post_type = '' ) {
1085
-
1086
- if ( '' === $post_type ) {
1087
- $post_type = self::get_post_type_2();
1088
- }
1089
-
1090
- if ( defined( 'WC_PLUGIN_FILE' ) ) {
1091
- /**
1092
- * WooCommerce.
1093
- */
1094
- if ( 'product' === $post_type ) {
1095
-
1096
- $load_gutenberg = false;
1097
-
1098
- } elseif ( '' === $post_type ) {
1099
-
1100
- if ( ! empty( $_POST['post_type'] ) ) { // phpcs:ignore WordPress.CSRF.NonceVerification
1101
- $post_type = $_POST['post_type']; // phpcs:ignore WordPress.CSRF.NonceVerification
1102
- }
1103
-
1104
- if ( empty( $post_type ) && ! empty( $_GET['post'] ) ) { // phpcs:ignore WordPress.CSRF.NonceVerification
1105
- $post_type = self::get_post_type( $_GET['post'] ); // phpcs:ignore WordPress.CSRF.NonceVerification
1106
- }
1107
-
1108
- if ( empty( $post_type ) && ! empty( $_GET['post_type'] ) ) { // phpcs:ignore WordPress.CSRF.NonceVerification
1109
- $post_type = $_GET['post_type']; // phpcs:ignore WordPress.CSRF.NonceVerification
1110
- }
1111
-
1112
- if ( 'product' === $post_type ) {
1113
- $load_gutenberg = false;
1114
- }
1115
- }
1116
- }
1117
-
1118
- /**
1119
- * Elementor.
1120
- *
1121
- * @since 2.4.11
1122
- * @see elementor\modules\gutenberg\module.php
1123
- */
1124
- if ( defined( 'ELEMENTOR_VERSION' ) ) {
1125
- $gutenberg_module = new Gutenberg\Module();
1126
- if ( $gutenberg_module->is_active() ) {
1127
- if ( isset($_GET['action']) && 'elementor' == $_GET['action'] ) {
1128
- /**
1129
- * Prevent init block editor support when elementor edit page is loading.
1130
- */
1131
- return false;
1132
- }
1133
- }
1134
- }
1135
-
1136
- if ( function_exists( 'classic_editor_settings' ) ) {
1137
- /**
1138
- * @see ver.0.5 https://wordpress.org/plugins/classic-editor/#developers
1139
- */
1140
- if ( isset( $_GET['classic-editor'] ) ) { // phpcs:ignore WordPress.CSRF.NonceVerification
1141
- /**
1142
- * Option 'Use the Block editor by default and include optional links back to the Classic editor' was selected.
1143
- */
1144
- $load_gutenberg = false;
1145
- } else {
1146
- $classic_editor_replace = get_option( 'classic-editor-replace' );
1147
- if ( empty( $classic_editor_replace ) || 'replace' === $classic_editor_replace ) {
1148
- $load_gutenberg = false;
1149
- }
1150
- }
1151
- }
1152
-
1153
- if ( class_exists( 'Classic_Editor' ) ) {
1154
- /** @global string $wp_version */
1155
- global $wp_version;
1156
-
1157
- if ( version_compare( $wp_version, '4.9.99', '>' ) ) { // phpcs:ignore Generic.CodeAnalysis.EmptyStatement
1158
- // continue
1159
- } else {
1160
- /**
1161
- * Incorrect work with WP 4.9
1162
- *
1163
- * @see https://wordpress.org/support/topic/does-nor-work-anymore-since-v-1-0/
1164
- */
1165
- return $load_gutenberg;
1166
- }
1167
-
1168
- /**
1169
- * ver.1.0 https://wordpress.org/plugins/classic-editor/
1170
- */
1171
- if ( isset( $_GET['classic-editor'] ) ) { // phpcs:ignore WordPress.CSRF.NonceVerification
1172
- /**
1173
- * @todo
1174
- * 1. set 'classic-editor-remember' as 'block-editor'.
1175
- * 2. load your-site/wp-admin/post.php?post=POST_ID&action=edit&classic-editor.
1176
- * 3. incorrect loading post page.
1177
- */
1178
- //update_post_meta( POST_ID, 'classic-editor-remember', 'classic-editor' );
1179
-
1180
- $load_gutenberg = false;
1181
- } elseif ( isset( $_GET['classic-editor__forget'] ) ) { // phpcs:ignore WordPress.CSRF.NonceVerification
1182
- $load_gutenberg = true;
1183
- } else {
1184
- $post_id = isset( $_GET['post'] ) ? (int) $_GET['post'] : 0; // phpcs:ignore WordPress.CSRF.NonceVerification
1185
-
1186
- if ( 0 === $post_id ) {
1187
- /**
1188
- * We need to check $_POST when the saving post in 'classic-editor' mode.
1189
- * As option we can use $_POST['classic-editor'], but now get 'classic-editor-remember' meta.
1190
- */
1191
- $post_id = isset( $_POST['post_ID'] ) ? (int) $_POST['post_ID'] : 0; // phpcs:ignore WordPress.CSRF.NonceVerification
1192
- }
1193
-
1194
- if ( 0 !== $post_id ) {
1195
- $classic_editor_remember = get_post_meta( $post_id, 'classic-editor-remember', true );
1196
- if ( 'classic-editor' === $classic_editor_remember ) {
1197
- $load_gutenberg = false;
1198
-
1199
- return $load_gutenberg;
1200
- } elseif ( 'block-editor' === $classic_editor_remember ) {
1201
- $load_gutenberg = true;
1202
-
1203
- return $load_gutenberg;
1204
- }
1205
- //else {
1206
- /**
1207
- * @todo meta doesn't exist?
1208
- */
1209
- //}
1210
- }
1211
-
1212
- $classic_editor_replace = get_option( 'classic-editor-replace' );
1213
- if ( empty( $classic_editor_replace ) || 'classic' === $classic_editor_replace ) {
1214
- $load_gutenberg = false;
1215
- } elseif ( 'block' === $classic_editor_replace ) {
1216
- $load_gutenberg = true;
1217
- } else {
1218
- $load_gutenberg = false;
1219
-
1220
- }
1221
- }
1222
- }
1223
-
1224
- return $load_gutenberg;
1225
- }
1226
-
1227
- /**
1228
- * Check for gutenberg ajax.
1229
- */
1230
- protected static function is_gutenberg_ajax() {
1231
- $result = false;
1232
-
1233
- // phpcs:ignore WordPress.Security.NonceVerification.Missing
1234
- if ( empty( $_POST ) || empty( $_POST['action'] ) ) {
1235
- return $result;
1236
- }
1237
-
1238
- $actions = array( 'edit', 'editpost' );
1239
- if ( in_array( $_POST['action'], $actions, true ) ) { // phpcs:ignore WordPress.CSRF.NonceVerification
1240
- if ( array_key_exists( 'gutenberg_meta_boxes', $_POST ) ) { // phpcs:ignore WordPress.CSRF.NonceVerification
1241
- $result = true;
1242
- }
1243
- }
1244
-
1245
- return $result;
1246
- }
1247
-
1248
- /**
1249
- * Check for Yoast SEO.
1250
- *
1251
- * @since 1.9.17
1252
- */
1253
- protected static function is_yoast_seo() {
1254
-
1255
- if ( defined( 'WPSEO_VERSION' ) ) {
1256
-
1257
- /** @global string $pagenow */
1258
- global $pagenow;
1259
-
1260
- $wpseo_titles = get_option( 'wpseo_titles' );
1261
-
1262
- if ( 'post.php' === $pagenow ) {
1263
-
1264
- $post_type = is_null(self::$post_type) ? '' : self::$post_type;
1265
-
1266
- if ( empty( $post_type ) && ! empty( $_GET['post'] ) ) { // phpcs:ignore WordPress.CSRF.NonceVerification
1267
- $post_type = self::get_post_type( $_GET['post'] ); // phpcs:ignore WordPress.CSRF.NonceVerification
1268
- }
1269
-
1270
- if ( empty( $post_type ) ) {
1271
- /**
1272
- * Check $_REQUEST when post is updated.
1273
- */
1274
- if ( ! empty( $_REQUEST['post_type'] ) ) { // phpcs:ignore WordPress.CSRF.NonceVerification
1275
- $post_type = $_REQUEST['post_type']; // phpcs:ignore WordPress.CSRF.NonceVerification
1276
- }
1277
- }
1278
-
1279
- $_attrs = array(
1280
- 'id' => 'yoast_seo',
1281
- 'version' => WPSEO_VERSION,
1282
- 'class' => 'WPGlobus_Yoast_SEO',
1283
- 'builder_page' => false,
1284
- 'post_type' => empty( $post_type ) ? '' : $post_type,
1285
- );
1286
-
1287
- if ( empty( $post_type ) ) {
1288
- /**
1289
- * @since 1.9.17 detect builder page using $pagenow.
1290
- */
1291
- $_attrs['builder_page'] = true;
1292
- } else {
1293
-
1294
- if ( ! array_key_exists( 'display-metabox-pt-' . $post_type, $wpseo_titles ) ) {
1295
- /**
1296
- * @since 2.2.25
1297
- */
1298
- $_attrs['builder_page'] = true;
1299
- } elseif ( 0 === (int) $wpseo_titles[ 'display-metabox-pt-' . $post_type ] ) {
1300
- $_attrs['builder_page'] = false;
1301
- } else {
1302
- $_attrs['builder_page'] = true;
1303
- }
1304
-
1305
- }
1306
-
1307
- $attrs = self::get_attrs( $_attrs );
1308
-
1309
- return $attrs;
1310
-
1311
- } elseif ( 'term.php' === $pagenow ) {
1312
-
1313
- $tax = empty( $_GET['taxonomy'] ) ? false : sanitize_text_field( wp_unslash( $_GET['taxonomy'] ) ); // phpcs:ignore WordPress.CSRF.NonceVerification
1314
-
1315
- if ( $tax ) {
1316
-
1317
- $_attrs = array(
1318
- 'id' => 'yoast_seo',
1319
- 'version' => WPSEO_VERSION,
1320
- 'class' => 'WPGlobus_Yoast_SEO',
1321
- 'builder_page' => false,
1322
- 'post_type' => '',
1323
- 'taxonomy' => $tax,
1324
- );
1325
-
1326
- self::$admin_attrs = array(
1327
- 'multilingualFields' => array( 'name', 'description_ifr' ),
1328
- 'translatableClass' => 'wpglobus-translatable',
1329
- );
1330
-
1331
- if ( isset( $wpseo_titles[ 'display-metabox-tax-' . $tax ] ) && 0 === (int) $wpseo_titles[ 'display-metabox-tax-' . $tax ] ) {
1332
- $_attrs['builder_page'] = false;
1333
- } else {
1334
- $_attrs['builder_page'] = true;
1335
- }
1336
-
1337
- $attrs = self::get_attrs( $_attrs );
1338
-
1339
- return $attrs;
1340
- }
1341
- } elseif ( 'edit-tags.php' === $pagenow ) {
1342
- /**
1343
- * Case when Update button was clicked on term.php page .
1344
- */
1345
- // phpcs:ignore WordPress.Security.NonceVerification.Missing
1346
- $tax = empty( $_POST['taxonomy'] ) ? false : sanitize_text_field( wp_unslash( $_POST['taxonomy'] ) );
1347
-
1348
- if ( $tax ) {
1349
-
1350
- $_attrs = array(
1351
- 'id' => 'yoast_seo',
1352
- 'version' => WPSEO_VERSION,
1353
- 'class' => 'WPGlobus_Yoast_SEO',
1354
- 'builder_page' => false,
1355
- 'post_type' => '',
1356
- 'taxonomy' => $tax,
1357
- );
1358
-
1359
- self::$admin_attrs = array(
1360
- 'multilingualFields' => array( 'name', 'description_ifr' ),
1361
- 'translatableClass' => 'wpglobus-translatable',
1362
- );
1363
-
1364
- if ( isset( $_POST['action'] ) && 'editedtag' === $_POST['action'] ) { // phpcs:ignore WordPress.CSRF.NonceVerification
1365
- $_attrs['builder_page'] = true;
1366
- }
1367
-
1368
- $attrs = self::get_attrs( $_attrs );
1369
-
1370
- return $attrs;
1371
- }
1372
- }
1373
- }
1374
-
1375
- return false;
1376
-
1377
- }
1378
-
1379
- /**
1380
- * Check for Pods – Custom Content Types and Fields.
1381
- *
1382
- * @since 2.3.0
1383
- */
1384
- protected static function is_pods() {
1385
-
1386
- if ( ! defined( 'PODS_VERSION' ) ) {
1387
- return false;
1388
- }
1389
-
1390
- $post_type = self::get_post_type_2();
1391
-
1392
- $_attrs = array(
1393
- 'id' => 'pods',
1394
- 'version' => PODS_VERSION,
1395
- 'class' => 'WPGlobus_Pods',
1396
- 'builder_page' => false,
1397
- 'post_type' => empty( $post_type ) ? '' : $post_type,
1398
- );
1399
-
1400
- require_once 'pods/class-wpglobus-builder-pods.php';
1401
- $_attrs = WPGlobus_Builder_Pods::get_attrs( self::get_attrs( $_attrs ) );
1402
-
1403
- if ( ! $_attrs ) {
1404
- return false;
1405
- }
1406
-
1407
- return $_attrs;
1408
- }
1409
-
1410
- /**
1411
- * Check for Rank Math SEO Plugin.
1412
- *
1413
- * @since 2.4.3
1414
- */
1415
- protected static function is_rank_math_seo() {
1416
-
1417
- if ( ! defined( 'RANK_MATH_VERSION' ) ) {
1418
- return false;
1419
- }
1420
-
1421
- $post_type = self::get_post_type_2();
1422
-
1423
- $_attrs = array(
1424
- 'id' => 'rank_math_seo',
1425
- 'version' => RANK_MATH_VERSION,
1426
- 'class' => 'WPGlobus_RankMathSEO',
1427
- 'builder_page' => false,
1428
- 'post_type' => empty( $post_type ) ? '' : $post_type,
1429
- 'taxonomy' => ''
1430
- );
1431
-
1432
- require_once 'rank_math_seo/class-wpglobus-builder-rank_math_seo.php';
1433
- $_attrs = WPGlobus_Builder_RankMathSEO::get_attrs( self::get_attrs( $_attrs ) );
1434
-
1435
- if ( ! $_attrs ) {
1436
- return false;
1437
- }
1438
-
1439
- return $_attrs;
1440
- }
1441
-
1442
- /**
1443
- * Get attributes.
1444
- *
1445
- * @param array $attrs
1446
- *
1447
- * @return array
1448
- */
1449
- protected static function get_attrs( $attrs ) {
1450
- $_attrs = array_merge( self::$attrs, $attrs );
1451
- // phpcs:ignore Generic.CodeAnalysis.EmptyStatement.DetectedIf
1452
- if ( isset( $_attrs['is_admin'] ) && ! $_attrs['is_admin'] ) {
1453
- // do nothing.
1454
- } else {
1455
- $_attrs = array_merge( $_attrs, self::$admin_attrs );
1456
- }
1457
-
1458
- if ( empty( $_attrs['post_id'] ) ) {
1459
- if ( isset( $_GET['post'] ) && is_string( $_GET['post'] ) ) { // phpcs:ignore WordPress.CSRF.NonceVerification
1460
- /**
1461
- * With bulk action (trash, untrash) we get $_GET['post'] as array.
1462
- *
1463
- * @since WPGlobus 2.0 we are working with single post only.
1464
- */
1465
- // phpcs:ignore WordPress.Security.NonceVerification.Recommended
1466
- $_attrs['post_id'] = sanitize_text_field( $_GET['post'] );
1467
- // phpcs:ignore WordPress.Security.NonceVerification.Recommended
1468
- } elseif ( isset( $_REQUEST['post_ID'] ) && is_string( $_REQUEST['post_ID'] ) ) {
1469
- // phpcs:ignore WordPress.Security.NonceVerification.Recommended
1470
- $_attrs['post_id'] = sanitize_text_field( $_REQUEST['post_ID'] );
1471
- // } else {
1472
- // @todo Check additional ways to get post ID.
1473
- }
1474
- }
1475
-
1476
- // @todo may be disable post type here.
1477
- // $_attrs['builder_page'] = false;
1478
- return $_attrs;
1479
- }
1480
-
1481
- /**
1482
- * Get post type.
1483
- *
1484
- * @param string $id
1485
- *
1486
- * @return null|string
1487
- */
1488
- protected static function get_post_type( $id = '' ) {
1489
-
1490
- /**
1491
- * Get post type.
1492
- *
1493
- * @since 2.2.11
1494
- */
1495
- if ( ! is_null( self::$post_type ) ) {
1496
- return self::$post_type;
1497
- }
1498
-
1499
- /**
1500
- * @since 2.2.11
1501
- * @W.I.P to use get_post_type_2()
1502
- */
1503
- if ( 0 === (int) $id ) {
1504
- return null;
1505
- }
1506
-
1507
- /** @global wpdb $wpdb */
1508
- global $wpdb;
1509
-
1510
- $post_type = $wpdb->get_var( $wpdb->prepare( "SELECT post_type FROM $wpdb->posts WHERE ID = %d", $id ) );
1511
-
1512
- return $post_type;
1513
- }
1514
-
1515
- /**
1516
- * Get post type 2.
1517
- *
1518
- * @since 2.2.11
1519
- */
1520
- protected static function get_post_type_2() {
1521
-
1522
- if ( ! is_null( self::$post_type ) ) {
1523
- return self::$post_type;
1524
- }
1525
-
1526
- /** @global string $pagenow */
1527
- global $pagenow;
1528
-
1529
- $post_type = '';
1530
- $post_id = '';
1531
-
1532
- switch ($pagenow) {
1533
- case 'media-new.php' :
1534
- $post_type = 'attachment';
1535
- break;
1536
- case 'post-new.php':
1537
- if ( isset( $_GET['post_type'] ) ) {
1538
- // phpcs:ignore WordPress.Security.NonceVerification.Recommended
1539
- $post_type = sanitize_text_field( $_GET['post_type'] );
1540
- } else {
1541
- $post_type = 'post';
1542
- }
1543
- break;
1544
- /**
1545
- * @W.I.P @since 2.2.14
1546
- case 'admin-ajax.php' :
1547
- $post_type = '';
1548
- break;
1549
- // */
1550
- default:
1551
- // post.php page.
1552
- if ( isset( $_GET['post'] ) ) { // phpcs:ignore WordPress.CSRF.NonceVerification
1553
- $post_id = $_GET['post']; // phpcs:ignore WordPress.CSRF.NonceVerification
1554
- } else if ( isset( $_GET['post_id'] ) ) { // phpcs:ignore WordPress.CSRF.NonceVerification
1555
- /**
1556
- * For example when loading WPBakery PB's front editor.
1557
- * @since 2.3.7
1558
- */
1559
- $post_id = $_GET['post_id']; // phpcs:ignore WordPress.CSRF.NonceVerification
1560
- } else if ( isset( $_REQUEST['post_ID'] ) ) { // phpcs:ignore WordPress.CSRF.NonceVerification
1561
- /**
1562
- * Case when Update button was clicked.
1563
- */
1564
- $post_id = $_REQUEST['post_ID']; // phpcs:ignore WordPress.CSRF.NonceVerification
1565
- }
1566
- break;
1567
- }
1568
-
1569
- if ( ! empty($post_type) ) {
1570
- self::$post_type = $post_type;
1571
- return self::$post_type;
1572
- }
1573
-
1574
- if ( 0 === (int) $post_id ) {
1575
- return false;
1576
- }
1577
-
1578
- /** @global wpdb $wpdb */
1579
- global $wpdb;
1580
-
1581
- self::$post_type = $wpdb->get_var( $wpdb->prepare( "SELECT post_type FROM $wpdb->posts WHERE ID = %d", $post_id ) );
1582
-
1583
- return self::$post_type;
1584
- }
1585
-
1586
- /**
1587
- * Check for post type supports.
1588
- *
1589
- * @since 2.2.24
1590
- * @since 2.2.34 Fix with empty `show_in_rest`.
1591
- *
1592
- * @return bool
1593
- */
1594
- protected static function use_block_editor_for_post_type($post_type) {
1595
-
1596
- $_opts = get_option(self::$init_attrs['options']['register_post_types']);
1597
-
1598
- if ( empty($_opts[$post_type]) ) {
1599
- /**
1600
- * We don't have info about post type.
1601
- */
1602
- return true;
1603
- }
1604
-
1605
- if ( empty($_opts[$post_type]['features']['editor']) || (int) $_opts[$post_type]['features']['editor'] == 0 ) {
1606
- /**
1607
- * Don't start Block Editor support.
1608
- * @see `use_block_editor_for_post_type()` in wp-admin\includes\post.php
1609
- */
1610
- return false;
1611
- }
1612
-
1613
- if ( empty($_opts[$post_type]['show_in_rest']) || (int) $_opts[$post_type]['show_in_rest'] == 0 ) {
1614
- /**
1615
- * Don't start Block Editor support.
1616
- * @see `use_block_editor_for_post_type()` in wp-admin\includes\post.php
1617
- */
1618
- return false;
1619
- }
1620
-
1621
- return true;
1622
- }
1623
- }
1624
-
1625
- endif;
1626
-
1627
- # --- EOF
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/builders/class-wpglobus-config-builder.php DELETED
@@ -1,563 +0,0 @@
1
- <?php
2
- /**
3
- * File: class-wpglobus-config-builder.php
4
- *
5
- * @package WPGlobus\Builders
6
- * @author Alex Gor(alexgff)
7
- */
8
-
9
- if ( ! class_exists( 'WPGlobus_Config_Builder' ) ) :
10
-
11
- class WPGlobus_Config_Builder {
12
-
13
- /**
14
- * @var string|false
15
- */
16
- protected $id = false;
17
-
18
- protected $is_run = false;
19
-
20
- /**
21
- * May be to use "wpglobus_language" meta (reserved in WPGlobus).
22
- *
23
- * @todo remove after test
24
- */
25
- //protected $language_meta_key = '_wpglobus_builder_language';
26
-
27
- protected $language_cookie = 'wpglobus-builder-language';
28
-
29
- protected $attrs = array();
30
-
31
- protected $__class = null;
32
-
33
- protected $__builder_page = false;
34
-
35
- protected $__is_admin = false;
36
-
37
- protected $language = false;
38
-
39
- protected $default_language;
40
-
41
- /**
42
- * @since 2.2.11
43
- */
44
- public $post_types = array();
45
-
46
- /**
47
- * Constructor.
48
- *
49
- * @param bool $init
50
- * @param array $init_attrs
51
- */
52
- public function __construct( $init = true, $init_attrs = array() ) {
53
-
54
- if ( isset( $init_attrs['default_language'] ) ) {
55
- $this->default_language = $init_attrs['default_language'];
56
- }
57
-
58
- /**
59
- * @since 2.2.11
60
- */
61
- if ( isset( $init_attrs['post_types'] ) ) {
62
- $this->post_types = $init_attrs['post_types'];
63
- }
64
-
65
- if ( $init ) {
66
-
67
- require_once dirname( __FILE__ ) . '/class-wpglobus-builders.php';
68
- /**
69
- * @since 2.2.24 added $init_attrs.
70
- */
71
- $builder = WPGlobus_Builders::get(true, $init_attrs);
72
-
73
- $this->id = $builder['id'];
74
- unset( $builder['id'] );
75
-
76
- if ( $this->id ) {
77
-
78
- $this->attrs['version'] = null;
79
-
80
- foreach ( $builder as $key => $value ) {
81
- if ( 'class' === $key ) {
82
- $this->__class = $value;
83
- } elseif ( 'builder_page' === $key ) {
84
- $this->__builder_page = $value;
85
- } elseif ( 'is_admin' === $key ) {
86
- $this->__is_admin = $value;
87
- }
88
- $this->attrs[ $key ] = $value;
89
- }
90
-
91
- $this->language = $this->get_language();
92
- $this->attrs['language'] = $this->language;
93
-
94
- } else {
95
- unset( $this->attrs );
96
- }
97
- } else {
98
-
99
- require_once dirname( __FILE__ ) . '/class-wpglobus-builders.php';
100
- /** @noinspection PhpUnusedLocalVariableInspection */
101
- $builder = WPGlobus_Builders::get( false );
102
-
103
- }
104
-
105
- }
106
-
107
- /**
108
- * Try to run builder.
109
- *
110
- * @param string $builder
111
- * @param bool $set_run_flag
112
- *
113
- * @return bool
114
- */
115
- public function maybe_run( $builder = '', $set_run_flag = false ) {
116
-
117
- //if ( defined('DOING_AJAX') && DOING_AJAX ) {
118
- //return false;
119
- //}
120
-
121
- if ( ! $this->id ) {
122
- return false;
123
- }
124
-
125
- $check_run_flag = true;
126
-
127
- if ( is_bool( $builder ) ) {
128
- // phpcs:ignore Generic.CodeAnalysis.EmptyStatement.DetectedIF
129
- if ( $builder ) {
130
- // @todo
131
- } else {
132
- $check_run_flag = false;
133
- $set_run_flag = false;
134
- }
135
- }
136
-
137
- if ( $check_run_flag && $this->is_run ) {
138
- /**
139
- * Don't run again.
140
- */
141
- return false;
142
- }
143
-
144
- if ( '' === $builder ) {
145
- $builder = $this->id;
146
- }
147
-
148
- if ( ! $builder ) {
149
- return false;
150
- }
151
-
152
- if ( $builder !== $this->id ) {
153
- return false;
154
- }
155
-
156
- if ( $this->is_front() ) {
157
- if ( $set_run_flag ) {
158
- $this->is_run = true;
159
- }
160
-
161
- return true;
162
- }
163
-
164
- if ( $this->is_builder_page() ) {
165
- if ( $set_run_flag ) {
166
- $this->is_run = true;
167
- }
168
-
169
- return true;
170
- }
171
-
172
- return false;
173
-
174
- }
175
-
176
- /**
177
- * Get attribute.
178
- *
179
- * @param string $attr
180
- *
181
- * @return bool|mixed
182
- */
183
- public function get( $attr = 'id' ) {
184
- if ( ! $this->id ) {
185
- return false;
186
- }
187
- if ( 'id' === $attr ) {
188
- return $this->get_id();
189
- }
190
- if ( ! empty( $this->attrs[ $attr ] ) ) {
191
- return $this->attrs[ $attr ];
192
- }
193
-
194
- return false;
195
- }
196
-
197
- /**
198
- * Set builder language.
199
- *
200
- * @param string $language
201
- */
202
- public function set_language( $language = '' ) {
203
- if ( ! empty( $language ) ) {
204
- $this->language = $language;
205
- $this->attrs['language'] = $this->language;
206
- }
207
- }
208
-
209
- /**
210
- * Get builder language.
211
- *
212
- * @param int|string $post_id
213
- *
214
- * @return array|bool|mixed|string
215
- */
216
- public function get_language( $post_id = '' ) {
217
-
218
- if ( ! $this->id ) {
219
- return false;
220
- }
221
-
222
- if ( ! $this->is_builder_page() ) {
223
- /**
224
- * @todo maybe need to check the matching of $this->language and WPGlobus::Config()->language.
225
- * @see Set language for builder in wpglobus\includes\class-wpglobus-config.php
226
- */
227
- return $this->language;
228
- }
229
-
230
- if ( $this->language ) {
231
- return $this->language;
232
- }
233
-
234
- /** @global string $pagenow */
235
- global $pagenow;
236
-
237
- if ( 'post-new.php' === $pagenow ) {
238
- /**
239
- * Correctly define language for the 'post-new.php' page.
240
- *
241
- * @since 2.1.1
242
- */
243
- $this->language = $this->default_language;
244
-
245
- return $this->language;
246
- }
247
-
248
- $post_id = (int) $post_id;
249
- if ( ! $post_id ) {
250
- // Post ID not passed..getting from global Post.
251
- $global_post = get_post();
252
- if ( $global_post instanceof WP_Post ) {
253
- $post_id = $global_post->ID;
254
- }
255
- }
256
-
257
- $language = false;
258
- if ( $post_id ) {
259
- $language = get_post_meta( $post_id, $this->get_language_meta_key(), true );
260
- }
261
-
262
- if ( ! $language ) {
263
-
264
- if ( empty( $_REQUEST ) ) { // phpcs:ignore WordPress.CSRF.NonceVerification
265
-
266
- if ( empty( $_SERVER['HTTP_REFERER'] ) ) {
267
- /**
268
- * @todo front-end? check it.
269
- */
270
- return false;
271
-
272
- } elseif ( false !== strpos( $_SERVER['HTTP_REFERER'], 'language=' ) ) {
273
- $language = explode( 'language=', $_SERVER['HTTP_REFERER'] );
274
- $language = $language[1];
275
- }
276
- } else {
277
-
278
- if ( ! empty( $_REQUEST['language'] ) ) { // phpcs:ignore WordPress.CSRF.NonceVerification
279
- $language = sanitize_text_field( $_REQUEST['language'] );
280
- }
281
-
282
- if ( isset( $_REQUEST[ WPGlobus::get_language_meta_key() ] ) ) { // phpcs:ignore WordPress.CSRF.NonceVerification
283
- $language = sanitize_text_field( $_REQUEST[ WPGlobus::get_language_meta_key() ] );
284
- }
285
- }
286
- }
287
-
288
- if ( ! $language ) {
289
-
290
- if ( isset( $_REQUEST['post'] ) && 0 !== (int) $_REQUEST['post'] ) { // phpcs:ignore WordPress.CSRF.NonceVerification
291
-
292
- $language = get_post_meta( $_REQUEST['post'], $this->get_language_meta_key(), true ); // phpcs:ignore WordPress.CSRF.NonceVerification
293
-
294
- } elseif ( isset( $_REQUEST['id'] ) && 0 !== (int) $_REQUEST['id'] ) { // phpcs:ignore WordPress.CSRF.NonceVerification
295
-
296
- /**
297
- * Case when post in draft status is autosaved.
298
- */
299
- $language = get_post_meta( $_REQUEST['id'], $this->get_language_meta_key(), true ); // phpcs:ignore WordPress.CSRF.NonceVerification
300
-
301
- } elseif ( isset( $_SERVER['REQUEST_URI'] ) ) {
302
-
303
- /**
304
- * See also the Update action in @see \WPGlobus_Builders
305
- */
306
- $_continue = false;
307
-
308
- /**
309
- * @since 2.5.17 Check $GLOBALS['WPGlobus'] for an array to prevent an occurring error `Cannot use object of type WPGlobus as array`.
310
- * @todo In a rare case (so far only one) $GLOBALS['WPGlobus'] defined as object. Need an investigation.
311
- */
312
- if ( isset( $GLOBALS['WPGlobus'] ) &&
313
- is_array( $GLOBALS['WPGlobus'] ) &&
314
- ! empty( $GLOBALS['WPGlobus']['post_type'] )
315
- )
316
- {
317
- $_continue = true;
318
- }
319
- if ( false !== strpos( $_SERVER['REQUEST_URI'], '/wp-json/wp/v2/posts/' )
320
- || false !== strpos( $_SERVER['REQUEST_URI'], '/wp-json/wp/v2/pages/' )
321
- || $_continue ) {
322
- /**
323
- * Case when post status was changed ( draft->publish or publish->draft ) in Gutenberg.
324
- *
325
- * @see \WPGlobus_Builders::is_gutenberg()
326
- */
327
- if ( isset( $GLOBALS['WPGlobus'] ) && ! empty( $GLOBALS['WPGlobus']['post_id'] ) ) {
328
- $post_id = $GLOBALS['WPGlobus']['post_id'];
329
- } else {
330
- $_request_uri = explode( '/', $_SERVER['REQUEST_URI'] );
331
-
332
- $post_id = end( $_request_uri );
333
- $post_id = preg_replace( '/\?.*/', '', $post_id );
334
- }
335
-
336
- if ( 0 !== (int) $post_id ) {
337
- $language = get_post_meta( $post_id, $this->get_language_meta_key(), true ); // phpcs:ignore WordPress.CSRF.NonceVerification
338
- }
339
- }
340
- }
341
- }
342
-
343
- if ( ! $language ) {
344
- if ( $this->get_post_id() ) {
345
- $language = get_post_meta( $this->get_post_id(), $this->get_language_meta_key(), true );
346
- }
347
- }
348
-
349
- if ( ! $language && ! empty( $this->default_language ) ) {
350
- /**
351
- * Possible options when the language is not defined:
352
- * - new post, post-new.php page;
353
- */
354
- $language = $this->default_language;
355
- /**
356
- * @todo test point if was incorrect setting of $language.
357
- */
358
-
359
- }
360
-
361
- $this->language = $language;
362
-
363
- return $language;
364
-
365
- }
366
-
367
- /**
368
- * Check if builder is run.
369
- */
370
- public function is_run() {
371
- if ( ! $this->id ) {
372
- return false;
373
- }
374
-
375
- return $this->is_run;
376
- }
377
-
378
- /**
379
- * Check if builder is run.
380
- */
381
- public function is_running() {
382
- return $this->is_run();
383
- }
384
-
385
- /**
386
- * Check if builder is in admin.
387
- */
388
- public function is_admin() {
389
- if ( ! $this->id ) {
390
- return false;
391
- }
392
-
393
- return $this->__is_admin;
394
- }
395
-
396
- /**
397
- * Check if builder is in front.
398
- */
399
- public function is_front() {
400
- if ( ! $this->id ) {
401
- return false;
402
- }
403
-
404
- return ! $this->__is_admin;
405
- }
406
-
407
- /**
408
- * Get builder ID.
409
- */
410
- public function get_id() {
411
- return $this->id;
412
- }
413
-
414
- /**
415
- * Get post ID.
416
- */
417
- public function get_post_id() {
418
- if ( isset( $this->attrs['post_id'] ) && (int) $this->attrs['post_id'] > 0 ) {
419
- return $this->attrs['post_id'];
420
- }
421
-
422
- return false;
423
- }
424
-
425
- /**
426
- * Get builder class.
427
- */
428
- public function get_class() {
429
- if ( ! $this->id ) {
430
- return false;
431
- }
432
-
433
- return $this->__class;
434
- }
435
-
436
- /**
437
- *
438
- */
439
- public function get_language_meta_key() {
440
- if ( ! $this->id ) {
441
- return false;
442
- }
443
-
444
- return WPGlobus::get_language_meta_key();
445
- }
446
-
447
- /**
448
- *
449
- */
450
- public function get_cookie_name() {
451
- if ( ! $this->id ) {
452
- return false;
453
- }
454
-
455
- return $this->language_cookie;
456
- }
457
-
458
- /**
459
- * @param string $cookie_name
460
- *
461
- * @return bool|null
462
- */
463
- public function get_cookie( $cookie_name = '' ) {
464
-
465
- if ( ! $this->id ) {
466
- return false;
467
- }
468
-
469
- static $_cookie_value = null;
470
-
471
- if ( is_null( $_cookie_value ) ) {
472
- if ( empty( $cookie_name ) ) {
473
- $cookie_name = $this->get_cookie_name();
474
- }
475
- if ( empty( $_COOKIE[ $cookie_name ] ) ) {
476
- $_cookie_value = false;
477
- } else {
478
- $_cookie_value = $_COOKIE[ $cookie_name ];
479
- }
480
- }
481
-
482
- return $_cookie_value;
483
- }
484
-
485
- /**
486
- * Check if current page is builder's page.
487
- */
488
- public function is_builder_page() {
489
- if ( ! $this->id ) {
490
- return false;
491
- }
492
-
493
- return $this->__builder_page;
494
- }
495
-
496
- /**
497
- * Get all builder data.
498
- */
499
- public function get_data() {
500
-
501
- if ( ! $this->id ) {
502
- return false;
503
- }
504
-
505
- $data = array();
506
- $data['id'] = $this->get_id();
507
-
508
- if ( empty( $data['id'] ) ) {
509
- return false;
510
- }
511
-
512
- if ( ! empty( $this->attrs ) ) {
513
- foreach ( $this->attrs as $key => $value ) {
514
- $data[ $key ] = $value;
515
- }
516
- }
517
-
518
- $data['language'] = $this->get_language();
519
-
520
- return $data;
521
-
522
- }
523
-
524
- /**
525
- * If $this->default_language was not set, returns `null`.
526
- * If the language is equal to the default_language, returns `true`,
527
- * otherwise it returns `false`.
528
- *
529
- * @since 2.2.6
530
- *
531
- * @return null|boolean
532
- */
533
- public function is_default_language() {
534
-
535
- if ( empty( $this->default_language ) ) {
536
- return null;
537
- }
538
- if ( $this->language === $this->default_language ) {
539
- return true;
540
- }
541
-
542
- return false;
543
- }
544
-
545
- /**
546
- * Set multilingual fields.
547
- *
548
- * @param array $multilingual_fields
549
- */
550
- public function set_multilingual_fields( $multilingual_fields ) {
551
-
552
- if ( ! isset( $this->attrs ) ) {
553
- return;
554
- }
555
-
556
- if ( is_array( $multilingual_fields ) && ! empty( $multilingual_fields ) ) {
557
- $this->attrs['multilingualFields'] = array_merge( $this->attrs['multilingualFields'], $multilingual_fields );
558
- }
559
- }
560
-
561
- }
562
-
563
- endif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/builders/elementor/class-wpglobus-elementor-front.php DELETED
@@ -1,516 +0,0 @@
1
- <?php
2
- /**
3
- * File: class-wpglobus-elementor-front.php
4
- *
5
- * @package WPGlobus\Builders\Elementor
6
- * @author Alex Gor(alexgff)
7
- */
8
-
9
- /**
10
- * @see elementor\core\files\css\post.php
11
- */
12
- use Elementor\Core\Files\CSS\Post as Post_CSS;
13
- /**
14
- * @since 2.5.5
15
- * @see elementor\core\files\css\post-preview.php
16
- */
17
- use Elementor\Core\Files\CSS\Post_Preview as Post_Preview;
18
- /**
19
- * @since 2.5.5
20
- * @see elementor\core\kits\manager.php
21
- */
22
- use Elementor\Core\Kits\Manager as Manager;
23
-
24
- if ( ! class_exists( 'WPGlobus_Elementor_Front' ) ) :
25
-
26
- /**
27
- * Class WPGlobus_Elementor_Front.
28
- */
29
- class WPGlobus_Elementor_Front {
30
-
31
- public static $file_prefix = 'post-';
32
-
33
- /**
34
- * @since 2.1.15
35
- */
36
- protected static $post_css_meta_key = null;
37
-
38
- /**
39
- * @since 2.1.15
40
- */
41
- protected static $elementor_data_meta_key = null;
42
-
43
- /**
44
- * @since 2.1.15
45
- */
46
- protected static $elementor_css_meta_key = null;
47
-
48
- /**
49
- * @since 2.4.12
50
- */
51
- protected static $elementor_edit_mode_meta_key = null;
52
-
53
- /**
54
- * @since 2.4.12
55
- */
56
- protected static $post_elementor_support_meta_key = null;
57
-
58
- /**
59
- * @since 2.4.12
60
- */
61
- protected static $post_elementor_support = null;
62
-
63
- /**
64
- * Init.
65
- */
66
- public static function init($attrs) {
67
-
68
- if ( ! empty($attrs['post_css_meta_key']) ) {
69
- self::$post_css_meta_key = $attrs['post_css_meta_key'];
70
- }
71
-
72
- if ( ! empty($attrs['elementor_data_meta_key']) ) {
73
- self::$elementor_data_meta_key = $attrs['elementor_data_meta_key'];
74
- }
75
-
76
- if ( ! empty($attrs['elementor_css_meta_key']) ) {
77
- self::$elementor_css_meta_key = $attrs['elementor_css_meta_key'];
78
- }
79
-
80
- /**
81
- * @since 2.4.12
82
- */
83
- if ( ! empty($attrs['elementor_edit_mode_meta_key']) ) {
84
- self::$elementor_edit_mode_meta_key = $attrs['elementor_edit_mode_meta_key'];
85
- }
86
-
87
- /**
88
- * @since 2.4.12
89
- */
90
- if ( ! empty($attrs['post_support_meta_key']) ) {
91
- self::$post_elementor_support_meta_key = $attrs['post_support_meta_key'];
92
- }
93
-
94
- add_filter( 'get_post_metadata', array( __CLASS__, 'filter__get_metadata' ), 5, 4 );
95
-
96
- /**
97
- * @since 2.1.15
98
- */
99
- add_filter( 'update_post_metadata', array( __CLASS__, 'filter__update_metadata' ), 5, 5 );
100
-
101
- /**
102
- * @since 2.1.15
103
- */
104
- add_action( 'wp_enqueue_scripts', array( __CLASS__, 'on__enqueue_styles' ), 20 );
105
-
106
- /**
107
- * @since 2.5.5
108
- * @see `do_action` in elementor\includes\frontend.php
109
- * @see callback function name and using it in elementor\core\kits\manager.php
110
- */
111
- add_action( 'elementor/frontend/after_enqueue_styles', array( __CLASS__, 'frontend_before_enqueue_styles' ), 0 );
112
-
113
- /**
114
- * @since 2.1.13
115
- * @see elementor\core\files\base.php
116
- */
117
- add_action( 'elementor/files/file_name', array( __CLASS__, 'filter__elementor_files_file_name' ), 5, 4 );
118
-
119
- /**
120
- * @since 2.2.11
121
- * @W.I.P
122
- * @todo maybe we need to use these filters.
123
- */
124
- //add_filter( 'elementor/editor/localize_settings', array( __CLASS__, 'filter__localize_settings' ), 10, 2 );
125
- //add_action( 'elementor/editor/after_enqueue_scripts', array( __CLASS__, 'filter__localize_settings' ) );
126
-
127
- /**
128
- * @since 2.3.6
129
- */
130
- add_filter( 'wpglobus_plus_publish_template_include_handler', array( __CLASS__, 'filter__template_include_handler' ) );
131
-
132
- /**
133
- * @since 2.4.12
134
- */
135
- add_action( 'template_include', array( __CLASS__, 'on__template_include' ) );
136
- }
137
-
138
- /**
139
- * @since 2.4.12
140
- */
141
- public static function is_builder_support() {
142
- if ( is_null( self::$post_elementor_support ) || self::$post_elementor_support ) {
143
- return true;
144
- }
145
- return false;
146
- }
147
-
148
- /**
149
- * @since 2.4.12
150
- */
151
- public static function on__template_include( $template ) {
152
-
153
- if ( ! is_singular() ) {
154
- return $template;
155
- }
156
-
157
- if ( is_null( self::$post_elementor_support ) ) {
158
-
159
- /** @global WP_Post $post */
160
- global $post;
161
-
162
- $_support = get_post_meta( $post->ID, self::$post_elementor_support_meta_key, true );
163
-
164
- if ( 'off' === $_support ) {
165
- self::$post_elementor_support = false;
166
- } else {
167
- self::$post_elementor_support = true;
168
- }
169
-
170
- if ( self::$post_elementor_support ) {
171
-
172
- $_support = get_post_meta( $post->ID, self::$elementor_edit_mode_meta_key, true );
173
-
174
- if ( 'builder' !== $_support ) {
175
- /**
176
- * Disable elementor support for post, that doesn't use elementor builder.
177
- */
178
- self::$post_elementor_support = false;
179
- }
180
- }
181
- }
182
-
183
- return $template;
184
- }
185
-
186
- /**
187
- * @since 2.5.5
188
- */
189
- public static function frontend_before_enqueue_styles() {
190
-
191
- if ( WPGlobus::Config()->language == WPGlobus::Config()->default_language ) {
192
- return;
193
- }
194
-
195
- if ( ! self::is_builder_support() ) {
196
- return;
197
- }
198
-
199
- $manager = new Manager();
200
-
201
- $kit = $manager->get_kit_for_frontend();
202
-
203
- if ( $kit ) {
204
- if ( $kit->is_autosave() ) {
205
- $css_file = Post_Preview::create( $kit->get_id() );
206
- } else {
207
- $css_file = Post_CSS::create( $kit->get_id() );
208
- }
209
-
210
- $handle = 'elementor-post-' . $css_file->get_post_id() .'-' . WPGlobus::Config()->language;
211
-
212
- $url = $css_file->get_url();
213
-
214
- /**
215
- * @since 2.5.5 @W.I.P `enqueue` doesn't work here.
216
- * @see `frontend_before_enqueue_styles` in elementor\core\kits\manager.php.
217
- */
218
- // $css_file->enqueue();
219
-
220
- wp_register_style(
221
- $handle,
222
- $url,
223
- array(),
224
- 'wpglobus-' . WPGLOBUS_VERSION
225
-
226
- );
227
- wp_enqueue_style($handle);
228
- }
229
- }
230
-
231
- /**
232
- * @since 2.1.15
233
- */
234
- public static function on__enqueue_styles() {
235
-
236
- if ( WPGlobus::Config()->language == WPGlobus::Config()->default_language ) {
237
- return;
238
- }
239
-
240
- /**
241
- * @since 2.4.12
242
- */
243
- if ( ! self::is_builder_support() ) {
244
- return;
245
- }
246
-
247
- $css_file = new Post_CSS( get_the_ID() );
248
-
249
- /**
250
- * @see elementor\core\files\css\post.php
251
- */
252
- $handle = 'elementor-post-' . $css_file->get_post_id() .'-' . WPGlobus::Config()->language;
253
-
254
- /**
255
- * @see elementor\core\files\base.php
256
- */
257
- $url = $css_file->get_url();
258
-
259
- wp_register_style(
260
- $handle,
261
- $url,
262
- array(),
263
- 'wpglobus-' . WPGLOBUS_VERSION
264
-
265
- );
266
- wp_enqueue_style($handle);
267
- }
268
-
269
- /**
270
- * Filters the file name.
271
- *
272
- * @since 2.1.13
273
- * @since 2.3.3 Handle multiple file names.
274
- *
275
- * @param string $file_name CSS file name.
276
- * @param object $instance The file instance, which inherits Elementor\Core\Files
277
- */
278
- public static function filter__elementor_files_file_name( $file_name, $instance ) {
279
-
280
- if ( WPGlobus::Config()->language == WPGlobus::Config()->default_language ) {
281
- return $file_name;
282
- }
283
-
284
- if ( false === strpos( $file_name, self::$file_prefix ) ) {
285
- return $file_name;
286
- }
287
-
288
- /**
289
- * @since 2.4.12
290
- */
291
- if ( ! self::is_builder_support() ) {
292
- return $file_name;
293
- }
294
-
295
- /**
296
- * @since 2.3.3 @W.I.P May be check out for global post ID.
297
- */
298
- //global $post;
299
- //if ( ! $post instanceof WP_Post ) {
300
- //return $file_name;
301
- //}
302
- //$file_unique_part = str_replace( self::$file_prefix, '', $file_name );
303
- //if ( false === strpos( $file_unique_part, $post->ID . '.' ) ) {
304
- //return $file_name;
305
- //}
306
-
307
- static $_file_names = null;
308
-
309
- if ( ! is_null( $_file_names ) && ! empty( $_file_names[$file_name] ) ) {
310
- return $_file_names[$file_name];
311
- }
312
-
313
- $_file_name = $file_name;
314
- if ( false !== strpos( $file_name, '.css' ) ) {
315
- $_file_name = str_replace( '.css', '-' . WPGlobus::Config()->language . '.css', $file_name );
316
- }
317
-
318
- $_file_names[$file_name] = $_file_name;
319
-
320
- return $_file_name;
321
- }
322
-
323
- /**
324
- * Get meta callback.
325
- *
326
- * @scope front.
327
- * @param $check
328
- * @param $object_id
329
- * @param $meta_key
330
- * @param $single
331
- *
332
- * @return string
333
- */
334
- public static function filter__get_metadata(
335
- $check, $object_id, $meta_key, /** @noinspection PhpUnusedParameterInspection */
336
- $single
337
- ) {
338
-
339
- if ( self::$elementor_data_meta_key === $meta_key ) {
340
-
341
- $meta_cache = wp_cache_get( $object_id, 'post_meta' );
342
-
343
- if ( isset( $meta_cache[ $meta_key ] ) && isset( $meta_cache[ $meta_key ][0] ) ) {
344
-
345
- /** @noinspection PhpUnusedLocalVariableInspection */
346
- $_value = '';
347
-
348
- if ( WPGlobus_Core::has_translations( $meta_cache[ $meta_key ][0] ) ) {
349
- $_value = WPGlobus_Core::text_filter( $meta_cache[ $meta_key ][0], WPGlobus::Config()->language );
350
- } else {
351
- $_value = $meta_cache[ $meta_key ][0];
352
- }
353
-
354
- return $_value;
355
-
356
- }
357
-
358
- } elseif ( self::$elementor_css_meta_key === $meta_key ) {
359
-
360
- if ( WPGlobus::Config()->language == WPGlobus::Config()->default_language ) {
361
- return $check;
362
- }
363
-
364
- $meta_cache = wp_cache_get( $object_id, 'post_meta' );
365
-
366
- if ( isset( $meta_cache[ self::$post_css_meta_key ] ) && isset( $meta_cache[ self::$post_css_meta_key ][0] ) ) {
367
-
368
- $_value = '';
369
-
370
- $has_translations = WPGlobus_Core::has_translations( $meta_cache[ self::$post_css_meta_key ][0] );
371
-
372
- if ( $has_translations ) {
373
- $_value = WPGlobus_Core::text_filter( $meta_cache[ self::$post_css_meta_key ][0], WPGlobus::Config()->language, WPGlobus::RETURN_EMPTY );
374
- }
375
-
376
- if ( ! empty($_value) ) {
377
- $_value = maybe_unserialize( $_value );
378
-
379
- /**
380
- * @todo may be better return value for default language.
381
- */
382
- //if ( isset( $meta_cache[ self::$elementor_css_meta_key ] ) && isset( $meta_cache[ self::$elementor_css_meta_key ][0] ) ) {
383
- //$_value = maybe_unserialize( $meta_cache[ self::$elementor_css_meta_key ] );
384
- //}
385
- }
386
-
387
- return $_value;
388
- }
389
-
390
- }
391
-
392
- return $check;
393
- }
394
-
395
- /**
396
- * @since 2.1.15
397
- */
398
- public static function filter__update_metadata( $check, $object_id, $meta_key, $meta_value, $prev_value ) {
399
-
400
- if ( self::$elementor_css_meta_key != $meta_key ) {
401
- return $check;
402
- }
403
-
404
- if ( WPGlobus::Config()->language == WPGlobus::Config()->default_language ) {
405
- return $check;
406
- }
407
-
408
- $meta_cache = wp_cache_get( $object_id, 'post_meta' );
409
-
410
- if ( isset( $meta_cache[ self::$post_css_meta_key ] ) && isset( $meta_cache[ self::$post_css_meta_key ][0] ) ) {
411
-
412
- $new_value = $check;
413
- $_tr = array();
414
-
415
- foreach( WPGlobus::Config()->enabled_languages as $language ) {
416
- $_s = WPGlobus_Core::text_filter( $meta_cache[ self::$post_css_meta_key ][0], $language, WPGlobus::RETURN_EMPTY );
417
- if ( ! empty( $_s ) ) {
418
- $_tr[$language] = $_s;
419
- }
420
- }
421
-
422
- /**
423
- * Fix for $meta_value[0].
424
- */
425
- $meta_value[0] = '';
426
-
427
- $_tr[WPGlobus::Config()->language] = maybe_serialize($meta_value);
428
- $new_value = WPGlobus_Utils::build_multilingual_string($_tr);
429
-
430
- if ( $new_value != $check ) {
431
-
432
- global $wpdb;
433
-
434
- $meta_value = $new_value;
435
- $table = _get_meta_table('post');
436
- $data = compact( 'meta_value' );
437
- $where = array(
438
- 'post_id' => $object_id,
439
- 'meta_key' => self::$post_css_meta_key
440
- );
441
-
442
- $result = $wpdb->update( $table, $data, $where );
443
-
444
- if ( ! $result ) {
445
- return false;
446
- }
447
-
448
- }
449
-
450
- return $new_value;
451
-
452
- } else {
453
-
454
- /**
455
- * $meta_cache[ $meta_key ] is undefined.
456
- */
457
-
458
- global $wpdb;
459
-
460
- $_tr = array();
461
- $_tr[WPGlobus::Config()->language] = maybe_serialize($meta_value);
462
- $new_value = WPGlobus_Utils::build_multilingual_string($_tr);
463
-
464
- $table = _get_meta_table('post');
465
-
466
- $result = $wpdb->insert(
467
- $table,
468
- array(
469
- 'post_id' => $object_id,
470
- 'meta_key' => self::$post_css_meta_key,
471
- 'meta_value' => $new_value
472
- ),
473
- array(
474
- '%d',
475
- '%s',
476
- '%s'
477
- )
478
- );
479
-
480
- if ( ! $result ) {
481
- return false;
482
- }
483
-
484
- return $new_value;
485
- }
486
-
487
- return $check;
488
-
489
- }
490
-
491
- /**
492
- * @since 2.3.6
493
- */
494
- public static function filter__template_include_handler($handler) {
495
-
496
- /**
497
- * @W.I.P @since 2.4.12 Do we need to check is_builder_support?
498
- */
499
- //if ( ! self::is_builder_support() ) {
500
- //return $handler;
501
- //}
502
-
503
- /**
504
- * Don't fire `template_include` filter with active Elementor
505
- * to prevent `The preview could not be loaded` for language in draft status.
506
- */
507
- if ( empty( $_GET['elementor-preview'] ) ) {
508
- return $handler;
509
- }
510
- return false;
511
- }
512
- } // end class WPGlobus_Elementor_Front.
513
-
514
- endif;
515
-
516
- # --- EOF
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/builders/elementor/class-wpglobus-elementor-update-post.php DELETED
@@ -1,118 +0,0 @@
1
- <?php
2
- /**
3
- * File: class-wpglobus-elementor-update-post.php
4
- *
5
- * @package WPGlobus\Builders\Elementor
6
- * @author Alex Gor(alexgff)
7
- */
8
-
9
- /**
10
- * Class WPGlobus_elementor_Update_Post.
11
- */
12
- if ( ! class_exists( 'WPGlobus_elementor_Update_Post' ) ) :
13
-
14
- // phpcs:ignore PEAR.NamingConventions
15
- class WPGlobus_elementor_Update_Post extends WPGlobus_Builder_Update_Post {
16
-
17
- /**
18
- * Constructor.
19
- */
20
- public function __construct() {
21
-
22
- parent::__construct( 'elementor' );
23
-
24
- /**
25
- * @see_file wpglobus\includes\class-wpglobus.php
26
- */
27
- remove_action( 'wp_insert_post_data', array( 'WPGlobus', 'on_save_post_data' ), 10 );
28
-
29
- /**
30
- * @todo incorrect the saving post in extra languages with priority = 10
31
- */
32
- add_filter( 'wp_insert_post_data', array( $this, 'filter__wp_insert_post_data' ), 100, 2 );
33
-
34
- }
35
-
36
- /**
37
- * Callback for 'wp_insert_post_data'.
38
- *
39
- * @param array $data
40
- * @param array $postarr
41
- *
42
- * @return mixed
43
- */
44
- public function filter__wp_insert_post_data( $data, $postarr ) {
45
-
46
- /**
47
- * Prevent to filter disabled post type.
48
- *
49
- * @since 2.1.4
50
- */
51
- if ( in_array( $data['post_type'], WPGlobus::Config()->disabled_entities, true ) ) {
52
- return $data;
53
- }
54
-
55
- global $wpdb;
56
- $_post = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE ID = %d AND post_type = %s LIMIT 1", $postarr['ID'], $postarr['post_type'] ) );
57
-
58
- $fields = array();
59
- if ( isset( $postarr['post_title'] ) ) {
60
- $fields['post_title'] = $postarr['post_title'];
61
- }
62
-
63
- if ( isset( $postarr['post_content'] ) ) {
64
- $fields['post_content'] = $postarr['post_content'];
65
- }
66
-
67
- if ( isset( $postarr['post_excerpt'] ) ) {
68
- $fields['post_excerpt'] = $postarr['post_excerpt'];
69
- }
70
-
71
- $builder_language = WPGlobus::Config()->builder->get_language();
72
-
73
- if ( empty( $builder_language ) ) {
74
-
75
- if ( empty( $postarr[ WPGlobus::get_language_meta_key() ] ) ) {
76
- $builder_language = WPGlobus::Config()->default_language;
77
- } else {
78
- $builder_language = $postarr[ WPGlobus::get_language_meta_key() ];
79
- }
80
- }
81
-
82
- foreach ( $fields as $field => $value ) {
83
-
84
- $tr = array();
85
-
86
- foreach ( WPGlobus::Config()->enabled_languages as $lang ) :
87
-
88
- if ( $lang === $builder_language ) {
89
-
90
- $text = $value;
91
- if ( WPGlobus_Core::has_translations( $value ) ) {
92
- $text = WPGlobus_Core::text_filter( $value, $lang, WPGlobus::RETURN_EMPTY );
93
- }
94
- if ( ! empty( $text ) ) {
95
- $tr[ $lang ] = $text;
96
- }
97
- } else {
98
- if ( isset( $_post->$field ) ) {
99
- $text = WPGlobus_Core::text_filter( $_post->$field, $lang, WPGlobus::RETURN_EMPTY );
100
- if ( ! empty( $text ) ) {
101
- $tr[ $lang ] = $text;
102
- }
103
- }
104
- }
105
-
106
- endforeach;
107
-
108
- $data[ $field ] = WPGlobus_Utils::build_multilingual_string( $tr );
109
-
110
- }
111
-
112
- return $data;
113
-
114
- }
115
-
116
- }
117
-
118
- endif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/builders/elementor/class-wpglobus-elementor.php DELETED
@@ -1,687 +0,0 @@
1
- <?php
2
- /**
3
- * File: class-wpglobus-elementor.php
4
- *
5
- * @since 2.2.31 We are providing support for `External File` only. @see elementor\core\files\css\base.php::use_external_file().
6
- * @since 2.4.12 Disable elementor support for post, that doesn't use elementor builder.
7
- Add submit box switcher to ON/OFF elementor's support.
8
- *
9
- * @package WPGlobus\Builders\Elementor
10
- * @author Alex Gor(alexgff)
11
- */
12
-
13
- if ( file_exists( WP_PLUGIN_DIR . '/elementor/core/files/manager.php' ) ) {
14
- require_once( WP_PLUGIN_DIR . '/elementor/core/files/manager.php' );
15
- }
16
-
17
- if ( ! class_exists( 'WPGlobus_Elementor' ) ) :
18
-
19
- /**
20
- * Class WPGlobus_Elementor.
21
- */
22
- class WPGlobus_Elementor extends WPGlobus_Builder {
23
-
24
- protected $base_redirect_url = '';
25
-
26
- protected $post_content = null;
27
-
28
- /**
29
- * @since 2.1.15
30
- */
31
- protected static $post_css_meta_key = null;
32
-
33
- /**
34
- * @since 2.1.15
35
- */
36
- protected static $elementor_data_meta_key = null;
37
-
38
- /**
39
- * @since 2.4.12
40
- */
41
- protected static $elementor_edit_mode_meta_key = null;
42
-
43
- /**
44
- * @since 2.4.12
45
- */
46
- protected static $post_elementor_support_meta_key = null;
47
-
48
- /**
49
- * @since 2.4.12
50
- */
51
- protected static $post_elementor_support_get_key = 'wpglobus-elementor-support';
52
-
53
- /**
54
- * @since 2.4.12
55
- */
56
- protected static $post_elementor_support = null;
57
-
58
- /**
59
- * Constructor.
60
- */
61
- public function __construct() {
62
-
63
- parent::__construct( 'elementor' );
64
-
65
- $_post_css_meta_key = WPGlobus::Config()->builder->get('post_css_meta_key');
66
- if ( ! empty( $_post_css_meta_key ) ) {
67
- self::$post_css_meta_key = $_post_css_meta_key;
68
- }
69
-
70
- /**
71
- * @since 2.4.12
72
- */
73
- $_post_support_meta_key = WPGlobus::Config()->builder->get('post_support_meta_key');
74
- if ( ! empty( $_post_support_meta_key ) ) {
75
- self::$post_elementor_support_meta_key = $_post_support_meta_key;
76
- }
77
-
78
- $_elementor_data_meta_key = WPGlobus::Config()->builder->get('elementor_data_meta_key');
79
- if ( ! empty( $_elementor_data_meta_key ) ) {
80
- self::$elementor_data_meta_key = $_elementor_data_meta_key;
81
- }
82
-
83
- /**
84
- * @since 2.4.12
85
- */
86
- $_elementor_edit_mode_meta_key = WPGlobus::Config()->builder->get('elementor_edit_mode_meta_key');
87
- if ( ! empty( $_elementor_edit_mode_meta_key ) ) {
88
- self::$elementor_edit_mode_meta_key = $_elementor_edit_mode_meta_key;
89
- }
90
-
91
- if ( isset( $_GET['action'] ) && 'elementor' === $_GET['action'] ) { // phpcs:ignore WordPress.CSRF.NonceVerification
92
- /**
93
- * @see wp-includes/revision.php
94
- */
95
- $post_id = $_GET['post']; // phpcs:ignore WordPress.CSRF.NonceVerification
96
- if ( (int) $post_id > 0 ) {
97
- $revision = wp_get_post_autosave( $post_id );
98
- if ( is_object( $revision ) ) {
99
- wp_delete_post_revision( $revision->ID );
100
- }
101
- }
102
- }
103
-
104
- /**
105
- * @see wpglobus\includes\class-wpglobus.php
106
- *
107
- * @since 2.4.12
108
- */
109
- add_action( 'wpglobus_submitbox_action', array( $this, 'on__submitbox_switcher' ) );
110
-
111
- /**
112
- * @see_file wpglobus\includes\class-wpglobus.php
113
- * @todo remove after test.
114
- */
115
- remove_action( 'wp_insert_post_data', array( 'WPGlobus', 'on_save_post_data' ), 10 );
116
-
117
- add_filter( 'get_post_metadata', array( $this, 'filter__post_metadata' ), 13, 4 );
118
-
119
- // @todo may be need this filter for admin, @see includes\builders\elementor\class-wpglobus-elementor-front.php
120
- //add_filter( 'update_post_metadata', array( $this, 'filter__update_metadata' ), 5, 5 );
121
-
122
- /**
123
- * Elementor editor footer.
124
- *
125
- * @see_file elementor\includes\editor.php
126
- */
127
- add_action( 'elementor/editor/footer', array( $this, 'on__elementor_footer' ), 100 );
128
-
129
- /**
130
- * @since 2.2.11
131
- * @W.I.P
132
- * @see meta classic-editor-remember = block-editor OR classic-editor
133
- * @todo maybe to use `wp_footer` action instead of `elementor/editor/footer`.
134
- */
135
- //add_action( 'wp_footer', array( $this, 'on__elementor_footer' ), 100 );
136
-
137
- /**
138
- * @since 2.2.11
139
- * @W.I.P
140
- * @todo maybe useful
141
- */
142
- //add_filter( 'elementor/editor/localize_settings', array( $this, 'on__localize_settings' ), 10, 2 );
143
- //add_action( 'elementor/editor/after_enqueue_scripts', array( $this, 'on__localize_settings' ) );
144
-
145
- /**
146
- * AJAX handling.
147
- */
148
- if ( defined('DOING_AJAX') && DOING_AJAX ) {
149
- if ( 'elementor_ajax' == $_POST['action'] && false !== strpos($_POST['actions'], '"action":"save_builder"') ) {
150
- if ( class_exists( '\Elementor\Core\Files\Manager' ) ) {
151
- /**
152
- * Clear Elementor cache and WPGlobus css meta.
153
- * @since 2.1.15
154
- */
155
- $_fm = new \Elementor\Core\Files\Manager;
156
- $_fm->clear_cache();
157
- if ( ! is_null(self::$post_css_meta_key) ) {
158
- update_post_meta( WPGlobus::Config()->builder->get('post_id'), self::$post_css_meta_key, '' );
159
- }
160
- }
161
- }
162
- }
163
-
164
- if ( is_admin() ) {
165
-
166
- /**
167
- * @since 2.2.31
168
- */
169
- add_action( 'admin_notices', array( $this, 'on__admin_notice' ) );
170
-
171
- add_filter( 'the_post', array( $this, 'filter__the_post' ), 5 );
172
-
173
- /**
174
- * @see_file elementor\core\base\document.php
175
- */
176
- add_filter( 'elementor/document/urls/edit', array( $this, 'filter__url' ), 5, 2 );
177
-
178
- /**
179
- * @see_file elementor\core\base\document.php
180
- */
181
- add_filter( 'elementor/document/urls/exit_to_dashboard', array( $this, 'filter__url' ), 5, 2 );
182
-
183
- /**
184
- * Filter Preview Button link in elementor side panel.
185
- *
186
- * @see_file elementor\core\base\document.php
187
- */
188
- add_filter( 'elementor/document/urls/wp_preview', array( $this, 'filter__preview_url' ), 5, 2 );
189
-
190
- /**
191
- * Filter for URL in elementor-preview-iframe.
192
- *
193
- * @see_file elementor\core\base\document.php
194
- */
195
- add_filter( 'elementor/document/urls/preview', array( $this, 'filter__preview_url' ), 5, 2 );
196
-
197
- /**
198
- * Filters the editor localized settings.
199
- *
200
- * @since 2.2.6
201
- *
202
- * @see_file elementor\includes\editor.php
203
- */
204
- add_filter( 'elementor/editor/localize_settings', array( $this, 'filter__localize_settings' ), 5, 2 );
205
- }
206
-
207
- }
208
-
209
- /**
210
- * @since 2.4.12
211
- */
212
- public function on__submitbox_switcher( $post ) {
213
-
214
- if ( ! $post instanceof WP_Post ) {
215
- return;
216
- }
217
-
218
- if ( 'builder' !== get_post_meta( $post->ID, $this->get_elementor_edit_mode_meta_key(), true ) ) {
219
- /**
220
- * Disable elementor support for post, that doesn't use elementor builder.
221
- */
222
- self::$post_elementor_support = false;
223
- return;
224
- }
225
-
226
- if ( ! empty( $_GET[ self::$post_elementor_support_get_key ] ) ) {
227
- $current_mode = sanitize_text_field( $_GET[ self::$post_elementor_support_get_key ] );
228
- if ( in_array( $current_mode, array('on', 'off') ) ) {
229
- update_post_meta( $post->ID, self::$post_elementor_support_meta_key, $current_mode );
230
- }
231
- }
232
-
233
- $elementor_support = get_post_meta( $post->ID, self::$post_elementor_support_meta_key, true );
234
-
235
- if ( 'off' === $elementor_support ) {
236
- self::$post_elementor_support = false;
237
- } else {
238
- $elementor_support = 'on';
239
- self::$post_elementor_support = true;
240
- }
241
-
242
- // "Reverse" logic here. It's the mode to turn to, not the current one.
243
- $switch_to_mode = 'off';
244
- if ( 'off' === $elementor_support ) {
245
- $switch_to_mode = 'on';
246
- }
247
-
248
- if ( 'off' === $elementor_support ) {
249
- // Translators: ON/OFF status of WPGlobus on the edit pages.
250
- $status_text = __( 'OFF', 'wpglobus' );
251
- $toggle_text = __( 'Turn on', 'wpglobus' );
252
- $highlight_class = 'wp-ui-text-notification';
253
- } else {
254
- // Translators: ON/OFF status of WPGlobus on the edit pages.
255
- $status_text = __( 'ON', 'wpglobus' );
256
- $toggle_text = __( 'Turn off', 'wpglobus' );
257
- $highlight_class = 'wp-ui-text-highlight';
258
- }
259
-
260
- $query_string = explode( '&', $_SERVER['QUERY_STRING'] );
261
-
262
- foreach ( $query_string as $key => $_q ) {
263
- if ( false !== strpos( $_q, 'wpglobus=' ) ) {
264
- unset( $query_string[ $key ] );
265
- }
266
- }
267
-
268
- $query = implode( '&', $query_string );
269
-
270
- $url = admin_url(
271
- add_query_arg(
272
- array( self::$post_elementor_support_get_key => $switch_to_mode ),
273
- 'post.php?' . $query
274
- )
275
- );
276
-
277
- ?>
278
- <div class="misc-pub-section wpglobus-elementor-support-switch">
279
- <span id="wpglobus-elementor-support-raw" style="margin-right: 2px;"
280
- class="dashicons dashicons-admin-site <?php echo esc_attr( $highlight_class ); ?>"></span>
281
- <?php esc_html_e( 'Elementor', 'wpglobus' ); ?>:
282
- <strong class="<?php echo esc_attr( $highlight_class ); ?>"><?php echo esc_html( $status_text ); ?></strong>
283
- <a class="button button-small" style="margin:-3px 0 0 3px;"
284
- href="<?php echo esc_url( $url ); ?>"><?php echo esc_html( $toggle_text ); ?></a>
285
- </div>
286
- <?php
287
- }
288
-
289
- /**
290
- * @since 2.4.12
291
- */
292
- public function is_elementor_support() {
293
-
294
- if ( is_null( self::$post_elementor_support ) ) {
295
-
296
- global $post;
297
-
298
- $elementor_support = get_post_meta( $post->ID, self::$post_elementor_support_meta_key, true );
299
-
300
- if ( 'off' === $elementor_support ) {
301
- self::$post_elementor_support = false;
302
- } else {
303
- self::$post_elementor_support = true;
304
- }
305
- }
306
-
307
- if ( self::$post_elementor_support ) {
308
- return true;
309
- }
310
-
311
- return false;
312
- }
313
-
314
- /**
315
- * @since 2.4.12
316
- */
317
- public function get_elementor_edit_mode_meta_key() {
318
- return self::$elementor_edit_mode_meta_key;
319
- }
320
-
321
- /**
322
- * Localize editor settings.
323
- *
324
- * Filters the editor localized settings.
325
- *
326
- * @since 2.2.6
327
- *
328
- * @param array $localized_settings Localized settings.
329
- * @param int $post_id The ID of the current post being edited.
330
- *
331
- * @return array
332
- */
333
- public function filter__localize_settings( $localized_settings, $post_id ) {
334
-
335
- if ( WPGlobus::Config()->builder->is_default_language() ) {
336
- return $localized_settings;
337
- }
338
-
339
- /**
340
- * @since 2.4.12
341
- */
342
- if ( ! $this->is_elementor_support() ) {
343
- return $localized_settings;
344
- }
345
-
346
- /**
347
- * @since 2.2.31
348
- */
349
- if ( 'external' !== WPGlobus::Config()->builder->get('elementor_css_print_method') ) {
350
- return $localized_settings;
351
- }
352
-
353
- $url = get_permalink( $post_id );
354
-
355
- $localized_settings['document']['urls']['permalink'] = WPGlobus_Utils::localize_url( $url, WPGlobus::Config()->builder->get_language() );
356
-
357
- return $localized_settings;
358
- }
359
-
360
- /**
361
- * To avoid output content with language marks from $post->post_content field on elementor builder page
362
- * if "_elementor_data" meta has not content in extra language.
363
- *
364
- * @param WP_Post $object
365
- *
366
- * @return WP_Post
367
- */
368
- public function filter__the_post( $object ) {
369
-
370
- if ( 'post.php' !== WPGlobus::Config()->builder->get( 'pagenow' ) ) {
371
- return $object;
372
- }
373
-
374
- /**
375
- * @since 2.4.12
376
- */
377
- if ( ! $this->is_elementor_support() ) {
378
- return $object;
379
- }
380
-
381
- if ( is_null( $this->post_content ) ) {
382
- $this->post_content = $object->post_content;
383
- }
384
-
385
- $_post = clone( $object );
386
- $_post->post_content = WPGlobus_Core::text_filter( $this->post_content, WPGlobus::Config()->builder->get_language(), WPGlobus::RETURN_EMPTY );
387
-
388
- /**
389
- * @see \wp-includes\cache.php
390
- */
391
- wp_cache_replace( $object->ID, $_post, 'posts' );
392
-
393
- return $object;
394
- }
395
-
396
- /**
397
- * @todo W.I.P
398
- */
399
- public static function filter__update_metadata( $check, $object_id, $meta_key, $meta_value, $prev_value ) {
400
- if ( '_elementor_css' != $meta_key ) {
401
- return $check;
402
- }
403
- return $check;
404
- }
405
-
406
- /**
407
- * Get meta callback.
408
- *
409
- * @param $check
410
- * @param $object_id
411
- * @param $meta_key
412
- * @param $single
413
- *
414
- * @return string
415
- */
416
- public static function filter__post_metadata(
417
- $check, $object_id, $meta_key, /** @noinspection PhpUnusedParameterInspection */
418
- $single
419
- ) {
420
-
421
- if ( self::$elementor_data_meta_key === $meta_key ) {
422
-
423
- $meta_cache = wp_cache_get( $object_id, 'post_meta' );
424
-
425
- if ( is_admin() ) {
426
-
427
- if ( isset( $meta_cache[ $meta_key ] ) && isset( $meta_cache[ $meta_key ][0] ) ) {
428
-
429
- $_value = '';
430
-
431
- if ( WPGlobus_Core::has_translations( $meta_cache[ $meta_key ][0] ) ) {
432
- $_value = WPGlobus_Core::text_filter( $meta_cache[ $meta_key ][0], WPGlobus::Config()->builder->get_language() );
433
- } else {
434
- $_value = $meta_cache[ $meta_key ][0];
435
- }
436
-
437
- return $_value;
438
-
439
- }
440
- } else {
441
-
442
- /**
443
- * scope front.
444
- */
445
-
446
- if ( isset( $meta_cache[ $meta_key ] ) && isset( $meta_cache[ $meta_key ][0] ) ) {
447
-
448
- /** @noinspection PhpUnusedLocalVariableInspection */
449
- $_value = '';
450
-
451
- if ( WPGlobus_Core::has_translations( $meta_cache[ $meta_key ][0] ) ) {
452
- //$_value = WPGlobus_Core::text_filter( $meta_cache[ $meta_key ][0], WPGlobus::Config()->builder->get_language(), WPGlobus::RETURN_EMPTY );
453
- /**
454
- * We can get current language from WPGlobus::Config().
455
- *
456
- * @todo just for testing purposes.
457
- */
458
- //$_value = WPGlobus_Core::text_filter( $meta_cache[ $meta_key ][0], WPGlobus::Config()->language );
459
-
460
- $_value = WPGlobus_Core::text_filter( $meta_cache[ $meta_key ][0], WPGlobus::Config()->builder->get_language() );
461
- } else {
462
- $_value = $meta_cache[ $meta_key ][0];
463
- }
464
-
465
- return $_value;
466
-
467
- }
468
- }
469
- }
470
-
471
- return $check;
472
-
473
- }
474
-
475
- /**
476
- * Elementor editor footer.
477
- *
478
- * Fires on Elementor editor before closing the body tag.
479
- * Used to prints scripts or any other HTML before closing the body tag.
480
- */
481
- public function on__elementor_footer() {
482
-
483
- /**
484
- * @since 2.4.12
485
- */
486
- if ( ! $this->is_elementor_support() ) {
487
- return;
488
- }
489
-
490
- /**
491
- * @since 2.2.31
492
- */
493
- if ( 'external' != WPGlobus::Config()->builder->get('elementor_css_print_method') ) {
494
- return;
495
- }
496
-
497
- $this->base_redirect_url = str_replace( array( '&language=' . WPGlobus::Config()->builder->get_language() ), '', $this->base_redirect_url );
498
- $this->base_redirect_url = str_replace( '&action=edit', '&action=elementor', $this->base_redirect_url );
499
- ?>
500
- <div id="wpglobus-elementor-wrapper">
501
- <div class="elementor-panel-menu-item" id="wpglobus-elementor-panel-menu-item" style="cursor:auto;">
502
- <div class="elementor-panel-menu-item-icon">
503
- <i class="fa fa-globe"></i>
504
- </div>
505
- <div class="elementor-panel-menu-item-title" id="wpglobus-elementor-selector-box"
506
- style="padding-top:0;">
507
- <span id="wpglobus-elementor-selector-title"
508
- style="cursor:pointer;"><?php esc_html_e( 'WPGlobus languages', 'wpglobus' ); ?></span>
509
- <ul id="wpglobus-elementor-selector" style="display:none;margin:10px;" class="hidden">
510
- <?php
511
- foreach ( WPGlobus::Config()->enabled_languages as $language ) {
512
- $_current = '';
513
- if ( $language == WPGlobus::Config()->builder->get_language() ) {
514
- $_current = esc_html__( 'current', 'wpglobus' );
515
- $_current = ' - ' . $_current;
516
- }
517
- ?>
518
- <li style="margin-bottom:10px;cursor:auto;">
519
- <a href="<?php echo esc_url( $this->base_redirect_url . '&language=' . $language ); ?>"><?php echo esc_html( WPGlobus::Config()->en_language_name[ $language ] . " ($language)" ); echo $_current; ?></a>
520
- </li>
521
- <?php
522
- }
523
- ?>
524
- </ul>
525
- </div>
526
- </div>
527
- </div>
528
- <?php // phpcs:disable ?>
529
- <script type='text/javascript'>
530
- /* <![CDATA[ */
531
- var WPGlobusTimeID;
532
- WPGlobusTimeID = setInterval(function(){
533
- if ( jQuery("#elementor-panel-header-menu-button").length === 0 || 'undefined' === typeof elementor.config.version ) {
534
- return;
535
- }
536
- clearInterval(WPGlobusTimeID);
537
- var wpglobusElementorPanelMenu = jQuery("#wpglobus-elementor-wrapper").html();
538
- jQuery(document).on('click', "#elementor-panel-header-menu-button", function () {
539
- if ( elementor.config.version[0] == '3' ) {
540
- jQuery(".elementor-panel-menu-item-exit-to-dashboard").before(wpglobusElementorPanelMenu);
541
- } else {
542
- jQuery(".elementor-panel-menu-item").eq(7).after(wpglobusElementorPanelMenu);
543
- }
544
- });
545
- jQuery(document).on('click', "#wpglobus-elementor-selector-title", function () {
546
- var $t = jQuery("#wpglobus-elementor-selector");
547
- $t.toggleClass('hidden');
548
- if ($t.hasClass('hidden')) {
549
- $t.css({'display': 'none'});
550
- jQuery('#wpglobus-elementor-selector-box').css({'padding-top': '0'});
551
- } else {
552
- jQuery('#wpglobus-elementor-selector-box').css({'padding-top': '10px'});
553
- $t.css({'display': 'block'});
554
- }
555
- });
556
- }, 500);
557
- /* ]]> */
558
- </script>
559
- <?php // phpcs:enable ?>
560
- <?php
561
- }
562
-
563
- /**
564
- * Document edit url.
565
- *
566
- * Filters the document edit url.
567
- *
568
- * @param string $url The edit url.
569
- * @param mixed $instance The document instance.
570
- *
571
- * @return string
572
- */
573
- public function filter__url(
574
- $url,
575
- /**
576
- * Unused.
577
- *
578
- * @noinspection PhpUnusedParameterInspection
579
- */
580
- $instance
581
- ) {
582
-
583
- /**
584
- * @since 2.4.12
585
- */
586
- if ( ! $this->is_elementor_support() ) {
587
- return $url;
588
- }
589
-
590
- if ( 'external' === WPGlobus::Config()->builder->get('elementor_css_print_method') ) {
591
- if ( false === strpos( $url, 'language' ) ) {
592
- $url = $url . '&language=' . WPGlobus::Config()->builder->get_language();
593
- }
594
- } else {
595
- if ( false === strpos( $url, 'language' ) ) {
596
- $url = $url . '&language=' . WPGlobus::Config()->default_language;
597
- }
598
- }
599
-
600
- $this->base_redirect_url = $url;
601
-
602
- return $url;
603
- }
604
-
605
- /**
606
- * Document "WordPress preview" URL.
607
- *
608
- * Filters the WordPress preview URL.
609
- *
610
- * @param string $url WordPress preview URL.
611
- * @param mixed $instance The document instance.
612
- *
613
- * @return string
614
- */
615
- public function filter__preview_url(
616
- $url,
617
- /**
618
- * Unused.
619
- *
620
- * @noinspection PhpUnusedParameterInspection
621
- */
622
- $instance
623
- ) {
624
-
625
- /**
626
- * @since 2.4.12
627
- */
628
- if ( ! $this->is_elementor_support() ) {
629
- return $url;
630
- }
631
-
632
- /**
633
- * @since 2.2.31
634
- */
635
- if ( 'external' !== WPGlobus::Config()->builder->get('elementor_css_print_method') ) {
636
- return $url;
637
- }
638
-
639
- $url = WPGlobus_Utils::localize_url( $url, WPGlobus::Config()->builder->get_language() );
640
-
641
- return $url;
642
- }
643
-
644
- /**
645
- * Prints admin screen notices.
646
- *
647
- * @since 2.2.31
648
- */
649
- public function on__admin_notice() {
650
-
651
- if ( 'post.php' != WPGlobus::Config()->builder->get('pagenow') ) {
652
- return;
653
- }
654
-
655
- /**
656
- * @since 2.4.12
657
- */
658
- if ( ! $this->is_elementor_support() ) {
659
- return;
660
- }
661
-
662
- if ( 'external' == WPGlobus::Config()->builder->get('elementor_css_print_method') ) {
663
- return;
664
- }
665
-
666
- $_url = add_query_arg(
667
- array(
668
- 'page' => 'elementor#tab-advanced',
669
- ),
670
- admin_url( 'admin.php' )
671
- );
672
-
673
- echo '<div class="notice error"><p>';
674
- printf(
675
- esc_html__( 'WPGlobus provides multilingual support for Elementor only when the option %1$s%2$s%3$s is set to %4$s.', 'wpglobus' ),
676
- '<a href="'.$_url.'" target="_blank">',
677
- '<strong>CSS Print Method</strong>',
678
- '</a>',
679
- '<strong>External File</strong>'
680
- );
681
- echo '</p></div>';
682
- }
683
- }
684
-
685
- endif;
686
-
687
- # --- EOF
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/builders/elementor/readme.txt DELETED
@@ -1,8 +0,0 @@
1
- /**
2
- * File: readme.txt
3
- *
4
- * @package WPGlobus\Builders\Elementor
5
- * @author Alex Gor(alexgff)
6
- */
7
-
8
- The handling of post meta fields @see wpglobus\configs\elementor.json
 
 
 
 
 
 
 
 
trunk/includes/builders/gutenberg/assets/css/dist/wpglobus-block-editor.css DELETED
@@ -1,3 +0,0 @@
1
- .edit-post-pinned-plugins .components-icon-button.is-toggled svg.dashicons-admin-site,.edit-post-pinned-plugins .components-icon-button.is-toggled svg.dashicons-admin-site *{fill:#0000ff !important;display:none}.edit-post-pinned-plugins .components-icon-button:not(.is-toggled) svg.dashicons-admin-site,.edit-post-pinned-plugins .components-icon-button:not(.is-toggled) svg.dashicons-admin-site *{fill:#0000ff;display:none}.edit-post-pinned-plugins .wpglobus-switcher-button{border-color:#cccccc;border-radius:3px}.wpglobus-block-editor-panel__notice{border-left:0}.wpglobus-block-editor-panel__notice .components-notice__content{margin-top:0;margin-bottom:0;color:#000;font-weight:500}.edit-post-layout .wpglobus-block-editor-panel__notice.components-notice{min-height:0}.edit-post-layout .wpglobus-block-editor-panel__settings-link{float:right;margin-bottom:10px}.edit-post-layout .wpglobus-block-editor-panel__info{float:left;margin-bottom:10px}.edit-post-layout .wpglobus-block-editor-panel__flag{vertical-align:middle}
2
-
3
- /*# sourceMappingURL=wpglobus-block-editor.css.map */
 
 
 
trunk/includes/builders/gutenberg/assets/css/dist/wpglobus-block-editor.css.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["wpglobus-block-editor.scss"],"names":[],"mappings":"AAAA,8KAEE,uBAAwB,CACxB,YAAa,CACd,0LAIC,YAAa,CACb,YAAa,CACd,oDAGC,oBAAqB,CACrB,iBAAkB,CACnB,qCAGC,aAAc,CACf,iEAGC,YAAa,CACb,eAAgB,CAChB,UAAW,CACX,eAAgB,CACjB,yEAGC,YAAa,CACd,8DAGC,WAAY,CACZ,kBAAmB,CACpB,qDAGC,UAAW,CACX,kBAAmB,CACpB,qDAGC,qBAAsB","file":"wpglobus-block-editor.css"}
 
trunk/includes/builders/gutenberg/assets/css/dist/wpglobus-block-editor.scss DELETED
@@ -1,45 +0,0 @@
1
- .edit-post-pinned-plugins .components-icon-button.is-toggled svg.dashicons-admin-site,
2
- .edit-post-pinned-plugins .components-icon-button.is-toggled svg.dashicons-admin-site * {
3
- fill: #0000ff !important;
4
- display: none;
5
- }
6
-
7
- .edit-post-pinned-plugins .components-icon-button:not(.is-toggled) svg.dashicons-admin-site,
8
- .edit-post-pinned-plugins .components-icon-button:not(.is-toggled) svg.dashicons-admin-site * {
9
- fill: #0000ff;
10
- display: none;
11
- }
12
-
13
- .edit-post-pinned-plugins .wpglobus-switcher-button {
14
- border-color: #cccccc;
15
- border-radius: 3px;
16
- }
17
-
18
- .wpglobus-block-editor-panel__notice {
19
- border-left: 0;
20
- }
21
-
22
- .wpglobus-block-editor-panel__notice .components-notice__content {
23
- margin-top: 0;
24
- margin-bottom: 0;
25
- color: #000;
26
- font-weight: 500;
27
- }
28
-
29
- .edit-post-layout .wpglobus-block-editor-panel__notice.components-notice {
30
- min-height: 0;
31
- }
32
-
33
- .edit-post-layout .wpglobus-block-editor-panel__settings-link {
34
- float: right;
35
- margin-bottom: 10px;
36
- }
37
-
38
- .edit-post-layout .wpglobus-block-editor-panel__info {
39
- float: left;
40
- margin-bottom: 10px;
41
- }
42
-
43
- .edit-post-layout .wpglobus-block-editor-panel__flag {
44
- vertical-align: middle;
45
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/builders/gutenberg/assets/css/dist/wpglobus-switcher.css DELETED
@@ -1,116 +0,0 @@
1
- .edit-post-pinned-plugins .components-icon-button.is-toggled svg.dashicons-admin-site,
2
- .edit-post-pinned-plugins .components-icon-button.is-toggled svg.dashicons-admin-site *{fill:#0000ff !important;display:none}
3
- .edit-post-pinned-plugins .components-icon-button:not(.is-toggled) svg.dashicons-admin-site,
4
- .edit-post-pinned-plugins .components-icon-button:not(.is-toggled) svg.dashicons-admin-site *{fill:#0000ff;display:none}
5
- .edit-post-pinned-plugins .wpglobus-switcher-button{border-color:#cccccc;border-radius:3px}
6
- .edit-post-layout .wpglobus-switcher-panel__notice.components-notice{min-height:0}
7
- .edit-post-layout .wpglobus-switcher-panel__settings-link{float:right;margin-bottom:10px}
8
- .edit-post-layout .wpglobus-switcher-panel__info{float:left;margin-bottom:10px}
9
- .edit-post-layout .wpglobus-switcher-panel__flag{vertical-align:middle}
10
- .wpglobus-switcher-panel__notice{border-left:0}
11
- .wpglobus-switcher-panel__notice .components-notice__content{margin-top:0;margin-bottom:0;color:#000;font-weight:500}
12
- .wpglobus-switcher-panel__body .components-base-control__help{margin-top:10px}
13
- .wpglobus-switcher-panel__body.is-opened{padding-top:0;padding-bottom:3em;}
14
- .wpglobus-switcher-components-panel .wpglobus-switcher-message {
15
- z-index:10;width:90%;position:absolute;border:2px solid #ff8100;margin:5px 10px;padding:5px;border-radius:6px;background-color:#ff8100;
16
- font-size:14px;color:#000;font-weight:500;text-align:center;
17
- }
18
- .wpglobus-switcher-pulsate-radio-on {
19
- -webkit-animation: pulsate-radio-on 0.3s ease-in-out both;
20
- animation: pulsate-radio-on 0.3s ease-in-out both;
21
- }
22
- .wpglobus-switcher-pulsate-radio-off {
23
- -webkit-animation: pulsate-radio-off 0.3s ease-in-out both;
24
- animation: pulsate-radio-off 0.3s ease-in-out both;
25
- }
26
- .wpglobus-switcher-pulsate-radio {
27
- -webkit-animation: pulsate-radio 0.5s ease-in-out infinite both;
28
- animation: pulsate-radio 0.5s ease-in-out infinite both;
29
- }
30
- /** animation pulsate-radio-on */
31
- @-webkit-keyframes pulsate-radio-on {
32
- 0% {
33
- -webkit-transform: scale(0);
34
- transform: scale(0);
35
- }
36
- 50% {
37
- -webkit-transform: scale(0.7);
38
- transform: scale(0.7);
39
- }
40
- 100% {
41
- -webkit-transform: scale(1.1);
42
- transform: scale(1.1);
43
- }
44
- }
45
- @keyframes pulsate-radio-on {
46
- 0% {
47
- -webkit-transform: scale(0);
48
- transform: scale(0);
49
- }
50
- 50% {
51
- -webkit-transform: scale(0.7);
52
- transform: scale(0.7);
53
- }
54
- 100% {
55
- -webkit-transform: scale(1.1);
56
- transform: scale(1.1);
57
- }
58
- }
59
- /** animation pulsate-radio-off */
60
- @-webkit-keyframes pulsate-radio-off {
61
- 0% {
62
- -webkit-transform: scale(1.1);
63
- transform: scale(1.1);
64
- }
65
- 50% {
66
- -webkit-transform: scale(0.7);
67
- transform: scale(0.7);
68
- }
69
- 100% {
70
- -webkit-transform: scale(0);
71
- transform: scale(0);
72
- }
73
- }
74
- @keyframes pulsate-radio-off {
75
- 0% {
76
- -webkit-transform: scale(1.1);
77
- transform: scale(1.1);
78
- }
79
- 50% {
80
- -webkit-transform: scale(0.7);
81
- transform: scale(0.7);
82
- }
83
- 100% {
84
- -webkit-transform: scale(0);
85
- transform: scale(0);
86
- }
87
- }
88
- /** animation pulsate-radio */
89
- @-webkit-keyframes pulsate-radio {
90
- 0% {
91
- -webkit-transform: scale(1.1);
92
- transform: scale(1.1);
93
- }
94
- 50% {
95
- -webkit-transform: scale(0.7);
96
- transform: scale(0.7);
97
- }
98
- 100% {
99
- -webkit-transform: scale(1.1);
100
- transform: scale(1.1);
101
- }
102
- }
103
- @keyframes pulsate-radio {
104
- 0% {
105
- -webkit-transform: scale(1.1);
106
- transform: scale(1.1);
107
- }
108
- 50% {
109
- -webkit-transform: scale(0.7);
110
- transform: scale(0.7);
111
- }
112
- 100% {
113
- -webkit-transform: scale(1.1);
114
- transform: scale(1.1);
115
- }
116
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/builders/gutenberg/assets/css/wpglobus-gutenberg.css DELETED
@@ -1,3 +0,0 @@
1
- .wpglobus-selector-grid{display:grid;grid-template-columns:40% 60%;place-items:center;grid-gap:0}.wpglobus-selector-grid .wpglobus-gutenberg-selector-column-2{width:90px}.wpglobus-gutenberg-selector-box{margin-left:220px}@media screen and (max-width: 599px){.wpglobus-gutenberg-selector-box{margin-left:40px}}@media screen and (max-width: 700px){.wpglobus-gutenberg-selector-column-1{height:25px;width:25px}.wpglobus-gutenberg-selector-column-2{display:none}}
2
-
3
- /*# sourceMappingURL=wpglobus-gutenberg.css.map */
 
 
 
trunk/includes/builders/gutenberg/assets/css/wpglobus-gutenberg.css.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["wpglobus-gutenberg.scss"],"names":[],"mappings":"AAAA,wBACE,YAAa,CACb,6BAA8B,CAC9B,kBAAmB,CACnB,UAAW,CACZ,8DAGC,UAAW,CACZ,iCAGC,iBAAkB,CACnB,qCAGC,iCACE,gBAAiB,CAClB,CAGH,qCACE,sCACE,WAAY,CACZ,UAAW,CACZ,sCAEC,YAAa,CACd","file":"wpglobus-gutenberg.css"}
 
trunk/includes/builders/gutenberg/assets/css/wpglobus-gutenberg.scss DELETED
@@ -1,30 +0,0 @@
1
- .wpglobus-selector-grid {
2
- display: grid;
3
- grid-template-columns: 40% 60%;
4
- place-items: center;
5
- grid-gap: 0;
6
- }
7
-
8
- .wpglobus-selector-grid .wpglobus-gutenberg-selector-column-2 {
9
- width: 90px;
10
- }
11
-
12
- .wpglobus-gutenberg-selector-box {
13
- margin-left: 220px;
14
- }
15
-
16
- @media screen and (max-width: 599px) {
17
- .wpglobus-gutenberg-selector-box {
18
- margin-left: 40px;
19
- }
20
- }
21
-
22
- @media screen and (max-width: 700px) {
23
- .wpglobus-gutenberg-selector-column-1 {
24
- height: 25px;
25
- width: 25px;
26
- }
27
- .wpglobus-gutenberg-selector-column-2 {
28
- display: none;
29
- }
30
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/builders/gutenberg/assets/js/dist/wpglobus-block-editor.js DELETED
@@ -1,607 +0,0 @@
1
- /******/ (function(modules) { // webpackBootstrap
2
- /******/ // The module cache
3
- /******/ var installedModules = {};
4
- /******/
5
- /******/ // The require function
6
- /******/ function __webpack_require__(moduleId) {
7
- /******/
8
- /******/ // Check if module is in cache
9
- /******/ if(installedModules[moduleId]) {
10
- /******/ return installedModules[moduleId].exports;
11
- /******/ }
12
- /******/ // Create a new module (and put it into the cache)
13
- /******/ var module = installedModules[moduleId] = {
14
- /******/ i: moduleId,
15
- /******/ l: false,
16
- /******/ exports: {}
17
- /******/ };
18
- /******/
19
- /******/ // Execute the module function
20
- /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
21
- /******/
22
- /******/ // Flag the module as loaded
23
- /******/ module.l = true;
24
- /******/
25
- /******/ // Return the exports of the module
26
- /******/ return module.exports;
27
- /******/ }
28
- /******/
29
- /******/
30
- /******/ // expose the modules object (__webpack_modules__)
31
- /******/ __webpack_require__.m = modules;
32
- /******/
33
- /******/ // expose the module cache
34
- /******/ __webpack_require__.c = installedModules;
35
- /******/
36
- /******/ // define getter function for harmony exports
37
- /******/ __webpack_require__.d = function(exports, name, getter) {
38
- /******/ if(!__webpack_require__.o(exports, name)) {
39
- /******/ Object.defineProperty(exports, name, {
40
- /******/ configurable: false,
41
- /******/ enumerable: true,
42
- /******/ get: getter
43
- /******/ });
44
- /******/ }
45
- /******/ };
46
- /******/
47
- /******/ // getDefaultExport function for compatibility with non-harmony modules
48
- /******/ __webpack_require__.n = function(module) {
49
- /******/ var getter = module && module.__esModule ?
50
- /******/ function getDefault() { return module['default']; } :
51
- /******/ function getModuleExports() { return module; };
52
- /******/ __webpack_require__.d(getter, 'a', getter);
53
- /******/ return getter;
54
- /******/ };
55
- /******/
56
- /******/ // Object.prototype.hasOwnProperty.call
57
- /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
58
- /******/
59
- /******/ // __webpack_public_path__
60
- /******/ __webpack_require__.p = "";
61
- /******/
62
- /******/ // Load entry module and return exports
63
- /******/ return __webpack_require__(__webpack_require__.s = 41);
64
- /******/ })
65
- /************************************************************************/
66
- /******/ ([
67
- /* 0 */
68
- /***/ (function(module, exports) {
69
-
70
- eval("var core = module.exports = { version: '2.6.5' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY29yZS5qcz8xNWUwIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBjb3JlID0gbW9kdWxlLmV4cG9ydHMgPSB7IHZlcnNpb246ICcyLjYuNScgfTtcbmlmICh0eXBlb2YgX19lID09ICdudW1iZXInKSBfX2UgPSBjb3JlOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY29yZS5qc1xuLy8gbW9kdWxlIGlkID0gMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///0\n");
71
-
72
- /***/ }),
73
- /* 1 */
74
- /***/ (function(module, exports) {
75
-
76
- eval("// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZ2xvYmFsLmpzP2VjYWIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg2I2lzc3VlY29tbWVudC0xMTU3NTkwMjhcbnZhciBnbG9iYWwgPSBtb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiB3aW5kb3cgIT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93Lk1hdGggPT0gTWF0aFxuICA/IHdpbmRvdyA6IHR5cGVvZiBzZWxmICE9ICd1bmRlZmluZWQnICYmIHNlbGYuTWF0aCA9PSBNYXRoID8gc2VsZlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmNcbiAgOiBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuaWYgKHR5cGVvZiBfX2cgPT0gJ251bWJlcicpIF9fZyA9IGdsb2JhbDsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2dsb2JhbC5qc1xuLy8gbW9kdWxlIGlkID0gMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///1\n");
77
-
78
- /***/ }),
79
- /* 2 */
80
- /***/ (function(module, exports) {
81
-
82
- eval("var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faGFzLmpzPzBmNjIiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGl0LCBrZXkpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19oYXMuanNcbi8vIG1vZHVsZSBpZCA9IDJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///2\n");
83
-
84
- /***/ }),
85
- /* 3 */
86
- /***/ (function(module, exports, __webpack_require__) {
87
-
88
- eval("var anObject = __webpack_require__(10);\nvar IE8_DOM_DEFINE = __webpack_require__(31);\nvar toPrimitive = __webpack_require__(18);\nvar dP = Object.defineProperty;\n\nexports.f = __webpack_require__(4) ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWRwLmpzPzdhZjAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuL19pZTgtZG9tLWRlZmluZScpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJyk7XG52YXIgZFAgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG5cbmV4cG9ydHMuZiA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuIGRQKE8sIFAsIEF0dHJpYnV0ZXMpO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKCdnZXQnIGluIEF0dHJpYnV0ZXMgfHwgJ3NldCcgaW4gQXR0cmlidXRlcykgdGhyb3cgVHlwZUVycm9yKCdBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCEnKTtcbiAgaWYgKCd2YWx1ZScgaW4gQXR0cmlidXRlcykgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZHAuanNcbi8vIG1vZHVsZSBpZCA9IDNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///3\n");
89
-
90
- /***/ }),
91
- /* 4 */
92
- /***/ (function(module, exports, __webpack_require__) {
93
-
94
- eval("// Thank's IE8 for his funny defineProperty\nmodule.exports = !__webpack_require__(11)(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZGVzY3JpcHRvcnMuanM/Zjg0ZCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGFuaydzIElFOCBmb3IgaGlzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kZXNjcmlwdG9ycy5qc1xuLy8gbW9kdWxlIGlkID0gNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///4\n");
95
-
96
- /***/ }),
97
- /* 5 */
98
- /***/ (function(module, exports, __webpack_require__) {
99
-
100
- eval("var global = __webpack_require__(1);\nvar core = __webpack_require__(0);\nvar ctx = __webpack_require__(30);\nvar hide = __webpack_require__(6);\nvar has = __webpack_require__(2);\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZXhwb3J0LmpzPzkwY2QiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcblxudmFyICRleHBvcnQgPSBmdW5jdGlvbiAodHlwZSwgbmFtZSwgc291cmNlKSB7XG4gIHZhciBJU19GT1JDRUQgPSB0eXBlICYgJGV4cG9ydC5GO1xuICB2YXIgSVNfR0xPQkFMID0gdHlwZSAmICRleHBvcnQuRztcbiAgdmFyIElTX1NUQVRJQyA9IHR5cGUgJiAkZXhwb3J0LlM7XG4gIHZhciBJU19QUk9UTyA9IHR5cGUgJiAkZXhwb3J0LlA7XG4gIHZhciBJU19CSU5EID0gdHlwZSAmICRleHBvcnQuQjtcbiAgdmFyIElTX1dSQVAgPSB0eXBlICYgJGV4cG9ydC5XO1xuICB2YXIgZXhwb3J0cyA9IElTX0dMT0JBTCA/IGNvcmUgOiBjb3JlW25hbWVdIHx8IChjb3JlW25hbWVdID0ge30pO1xuICB2YXIgZXhwUHJvdG8gPSBleHBvcnRzW1BST1RPVFlQRV07XG4gIHZhciB0YXJnZXQgPSBJU19HTE9CQUwgPyBnbG9iYWwgOiBJU19TVEFUSUMgPyBnbG9iYWxbbmFtZV0gOiAoZ2xvYmFsW25hbWVdIHx8IHt9KVtQUk9UT1RZUEVdO1xuICB2YXIga2V5LCBvd24sIG91dDtcbiAgaWYgKElTX0dMT0JBTCkgc291cmNlID0gbmFtZTtcbiAgZm9yIChrZXkgaW4gc291cmNlKSB7XG4gICAgLy8gY29udGFpbnMgaW4gbmF0aXZlXG4gICAgb3duID0gIUlTX0ZPUkNFRCAmJiB0YXJnZXQgJiYgdGFyZ2V0W2tleV0gIT09IHVuZGVmaW5lZDtcbiAgICBpZiAob3duICYmIGhhcyhleHBvcnRzLCBrZXkpKSBjb250aW51ZTtcbiAgICAvLyBleHBvcnQgbmF0aXZlIG9yIHBhc3NlZFxuICAgIG91dCA9IG93biA/IHRhcmdldFtrZXldIDogc291cmNlW2tleV07XG4gICAgLy8gcHJldmVudCBnbG9iYWwgcG9sbHV0aW9uIGZvciBuYW1lc3BhY2VzXG4gICAgZXhwb3J0c1trZXldID0gSVNfR0xPQkFMICYmIHR5cGVvZiB0YXJnZXRba2V5XSAhPSAnZnVuY3Rpb24nID8gc291cmNlW2tleV1cbiAgICAvLyBiaW5kIHRpbWVycyB0byBnbG9iYWwgZm9yIGNhbGwgZnJvbSBleHBvcnQgY29udGV4dFxuICAgIDogSVNfQklORCAmJiBvd24gPyBjdHgob3V0LCBnbG9iYWwpXG4gICAgLy8gd3JhcCBnbG9iYWwgY29uc3RydWN0b3JzIGZvciBwcmV2ZW50IGNoYW5nZSB0aGVtIGluIGxpYnJhcnlcbiAgICA6IElTX1dSQVAgJiYgdGFyZ2V0W2tleV0gPT0gb3V0ID8gKGZ1bmN0aW9uIChDKSB7XG4gICAgICB2YXIgRiA9IGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgQykge1xuICAgICAgICAgIHN3aXRjaCAoYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gbmV3IEMoKTtcbiAgICAgICAgICAgIGNhc2UgMTogcmV0dXJuIG5ldyBDKGEpO1xuICAgICAgICAgICAgY2FzZSAyOiByZXR1cm4gbmV3IEMoYSwgYik7XG4gICAgICAgICAgfSByZXR1cm4gbmV3IEMoYSwgYiwgYyk7XG4gICAgICAgIH0gcmV0dXJuIEMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH07XG4gICAgICBGW1BST1RPVFlQRV0gPSBDW1BST1RPVFlQRV07XG4gICAgICByZXR1cm4gRjtcbiAgICAvLyBtYWtlIHN0YXRpYyB2ZXJzaW9ucyBmb3IgcHJvdG90eXBlIG1ldGhvZHNcbiAgICB9KShvdXQpIDogSVNfUFJPVE8gJiYgdHlwZW9mIG91dCA9PSAnZnVuY3Rpb24nID8gY3R4KEZ1bmN0aW9uLmNhbGwsIG91dCkgOiBvdXQ7XG4gICAgLy8gZXhwb3J0IHByb3RvIG1ldGhvZHMgdG8gY29yZS4lQ09OU1RSVUNUT1IlLm1ldGhvZHMuJU5BTUUlXG4gICAgaWYgKElTX1BST1RPKSB7XG4gICAgICAoZXhwb3J0cy52aXJ0dWFsIHx8IChleHBvcnRzLnZpcnR1YWwgPSB7fSkpW2tleV0gPSBvdXQ7XG4gICAgICAvLyBleHBvcnQgcHJvdG8gbWV0aG9kcyB0byBjb3JlLiVDT05TVFJVQ1RPUiUucHJvdG90eXBlLiVOQU1FJVxuICAgICAgaWYgKHR5cGUgJiAkZXhwb3J0LlIgJiYgZXhwUHJvdG8gJiYgIWV4cFByb3RvW2tleV0pIGhpZGUoZXhwUHJvdG8sIGtleSwgb3V0KTtcbiAgICB9XG4gIH1cbn07XG4vLyB0eXBlIGJpdG1hcFxuJGV4cG9ydC5GID0gMTsgICAvLyBmb3JjZWRcbiRleHBvcnQuRyA9IDI7ICAgLy8gZ2xvYmFsXG4kZXhwb3J0LlMgPSA0OyAgIC8vIHN0YXRpY1xuJGV4cG9ydC5QID0gODsgICAvLyBwcm90b1xuJGV4cG9ydC5CID0gMTY7ICAvLyBiaW5kXG4kZXhwb3J0LlcgPSAzMjsgIC8vIHdyYXBcbiRleHBvcnQuVSA9IDY0OyAgLy8gc2FmZVxuJGV4cG9ydC5SID0gMTI4OyAvLyByZWFsIHByb3RvIG1ldGhvZCBmb3IgYGxpYnJhcnlgXG5tb2R1bGUuZXhwb3J0cyA9ICRleHBvcnQ7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZXhwb3J0LmpzXG4vLyBtb2R1bGUgaWQgPSA1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///5\n");
101
-
102
- /***/ }),
103
- /* 6 */
104
- /***/ (function(module, exports, __webpack_require__) {
105
-
106
- eval("var dP = __webpack_require__(3);\nvar createDesc = __webpack_require__(14);\nmodule.exports = __webpack_require__(4) ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faGlkZS5qcz84NDljIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHJldHVybiBkUC5mKG9iamVjdCwga2V5LCBjcmVhdGVEZXNjKDEsIHZhbHVlKSk7XG59IDogZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19oaWRlLmpzXG4vLyBtb2R1bGUgaWQgPSA2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///6\n");
107
-
108
- /***/ }),
109
- /* 7 */
110
- /***/ (function(module, exports) {
111
-
112
- eval("module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtb2JqZWN0LmpzPzEyYTgiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IHR5cGVvZiBpdCA9PT0gJ2Z1bmN0aW9uJztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtb2JqZWN0LmpzXG4vLyBtb2R1bGUgaWQgPSA3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///7\n");
113
-
114
- /***/ }),
115
- /* 8 */
116
- /***/ (function(module, exports, __webpack_require__) {
117
-
118
- eval("// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(61);\nvar defined = __webpack_require__(15);\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8taW9iamVjdC5qcz80ZGM0Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIHRvIGluZGV4ZWQgb2JqZWN0LCB0b09iamVjdCB3aXRoIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgc3RyaW5nc1xudmFyIElPYmplY3QgPSByZXF1aXJlKCcuL19pb2JqZWN0Jyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBJT2JqZWN0KGRlZmluZWQoaXQpKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8taW9iamVjdC5qc1xuLy8gbW9kdWxlIGlkID0gOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///8\n");
119
-
120
- /***/ }),
121
- /* 9 */
122
- /***/ (function(module, exports, __webpack_require__) {
123
-
124
- eval("var store = __webpack_require__(17)('wks');\nvar uid = __webpack_require__(13);\nvar Symbol = __webpack_require__(1).Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fd2tzLmpzPzc1MmMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHN0b3JlID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ3drcycpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4vX3VpZCcpO1xudmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLlN5bWJvbDtcbnZhciBVU0VfU1lNQk9MID0gdHlwZW9mIFN5bWJvbCA9PSAnZnVuY3Rpb24nO1xuXG52YXIgJGV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHJldHVybiBzdG9yZVtuYW1lXSB8fCAoc3RvcmVbbmFtZV0gPVxuICAgIFVTRV9TWU1CT0wgJiYgU3ltYm9sW25hbWVdIHx8IChVU0VfU1lNQk9MID8gU3ltYm9sIDogdWlkKSgnU3ltYm9sLicgKyBuYW1lKSk7XG59O1xuXG4kZXhwb3J0cy5zdG9yZSA9IHN0b3JlO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3drcy5qc1xuLy8gbW9kdWxlIGlkID0gOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///9\n");
125
-
126
- /***/ }),
127
- /* 10 */
128
- /***/ (function(module, exports, __webpack_require__) {
129
-
130
- eval("var isObject = __webpack_require__(7);\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FuLW9iamVjdC5qcz9lZmIzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKCFpc09iamVjdChpdCkpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGFuIG9iamVjdCEnKTtcbiAgcmV0dXJuIGl0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hbi1vYmplY3QuanNcbi8vIG1vZHVsZSBpZCA9IDEwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///10\n");
131
-
132
- /***/ }),
133
- /* 11 */
134
- /***/ (function(module, exports) {
135
-
136
- eval("module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ZhaWxzLmpzPzRiY2QiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ZhaWxzLmpzXG4vLyBtb2R1bGUgaWQgPSAxMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///11\n");
137
-
138
- /***/ }),
139
- /* 12 */
140
- /***/ (function(module, exports) {
141
-
142
- eval("module.exports = true;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2xpYnJhcnkuanM/M2I4OCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHRydWU7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fbGlicmFyeS5qc1xuLy8gbW9kdWxlIGlkID0gMTJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///12\n");
143
-
144
- /***/ }),
145
- /* 13 */
146
- /***/ (function(module, exports) {
147
-
148
- eval("var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3VpZC5qcz9kYzRhIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBpZCA9IDA7XG52YXIgcHggPSBNYXRoLnJhbmRvbSgpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiAnU3ltYm9sKCcuY29uY2F0KGtleSA9PT0gdW5kZWZpbmVkID8gJycgOiBrZXksICcpXycsICgrK2lkICsgcHgpLnRvU3RyaW5nKDM2KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3VpZC5qc1xuLy8gbW9kdWxlIGlkID0gMTNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///13\n");
149
-
150
- /***/ }),
151
- /* 14 */
152
- /***/ (function(module, exports) {
153
-
154
- eval("module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb3BlcnR5LWRlc2MuanM/NWZjMCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChiaXRtYXAsIHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgZW51bWVyYWJsZTogIShiaXRtYXAgJiAxKSxcbiAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG4gICAgd3JpdGFibGU6ICEoYml0bWFwICYgNCksXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb3BlcnR5LWRlc2MuanNcbi8vIG1vZHVsZSBpZCA9IDE0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///14\n");
155
-
156
- /***/ }),
157
- /* 15 */
158
- /***/ (function(module, exports) {
159
-
160
- eval("// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RlZmluZWQuanM/ZTc2OCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjIuMSBSZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGFyZ3VtZW50KVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGl0ID09IHVuZGVmaW5lZCkgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gIFwiICsgaXQpO1xuICByZXR1cm4gaXQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RlZmluZWQuanNcbi8vIG1vZHVsZSBpZCA9IDE1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///15\n");
161
-
162
- /***/ }),
163
- /* 16 */
164
- /***/ (function(module, exports, __webpack_require__) {
165
-
166
- eval("var shared = __webpack_require__(17)('keys');\nvar uid = __webpack_require__(13);\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC1rZXkuanM/NmIxZCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgc2hhcmVkID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ2tleXMnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuL191aWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gc2hhcmVkW2tleV0gfHwgKHNoYXJlZFtrZXldID0gdWlkKGtleSkpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zaGFyZWQta2V5LmpzXG4vLyBtb2R1bGUgaWQgPSAxNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///16\n");
167
-
168
- /***/ }),
169
- /* 17 */
170
- /***/ (function(module, exports, __webpack_require__) {
171
-
172
- eval("var core = __webpack_require__(0);\nvar global = __webpack_require__(1);\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: __webpack_require__(12) ? 'pure' : 'global',\n copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC5qcz83YmMwIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBjb3JlID0gcmVxdWlyZSgnLi9fY29yZScpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIFNIQVJFRCA9ICdfX2NvcmUtanNfc2hhcmVkX18nO1xudmFyIHN0b3JlID0gZ2xvYmFsW1NIQVJFRF0gfHwgKGdsb2JhbFtTSEFSRURdID0ge30pO1xuXG4obW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICByZXR1cm4gc3RvcmVba2V5XSB8fCAoc3RvcmVba2V5XSA9IHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6IHt9KTtcbn0pKCd2ZXJzaW9ucycsIFtdKS5wdXNoKHtcbiAgdmVyc2lvbjogY29yZS52ZXJzaW9uLFxuICBtb2RlOiByZXF1aXJlKCcuL19saWJyYXJ5JykgPyAncHVyZScgOiAnZ2xvYmFsJyxcbiAgY29weXJpZ2h0OiAnwqkgMjAxOSBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KSdcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC5qc1xuLy8gbW9kdWxlIGlkID0gMTdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///17\n");
173
-
174
- /***/ }),
175
- /* 18 */
176
- /***/ (function(module, exports, __webpack_require__) {
177
-
178
- eval("// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(7);\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLXByaW1pdGl2ZS5qcz8zMjYzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMS4xIFRvUHJpbWl0aXZlKGlucHV0IFssIFByZWZlcnJlZFR5cGVdKVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG4vLyBpbnN0ZWFkIG9mIHRoZSBFUzYgc3BlYyB2ZXJzaW9uLCB3ZSBkaWRuJ3QgaW1wbGVtZW50IEBAdG9QcmltaXRpdmUgY2FzZVxuLy8gYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgLSBmbGFnIC0gcHJlZmVycmVkIHR5cGUgaXMgYSBzdHJpbmdcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBTKSB7XG4gIGlmICghaXNPYmplY3QoaXQpKSByZXR1cm4gaXQ7XG4gIHZhciBmbiwgdmFsO1xuICBpZiAoUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKHR5cGVvZiAoZm4gPSBpdC52YWx1ZU9mKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIGlmICghUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1wcmltaXRpdmUuanNcbi8vIG1vZHVsZSBpZCA9IDE4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///18\n");
179
-
180
- /***/ }),
181
- /* 19 */
182
- /***/ (function(module, exports) {
183
-
184
- eval("// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWludGVnZXIuanM/NTJlMSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjEuNCBUb0ludGVnZXJcbnZhciBjZWlsID0gTWF0aC5jZWlsO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpc05hTihpdCA9ICtpdCkgPyAwIDogKGl0ID4gMCA/IGZsb29yIDogY2VpbCkoaXQpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1pbnRlZ2VyLmpzXG4vLyBtb2R1bGUgaWQgPSAxOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///19\n");
185
-
186
- /***/ }),
187
- /* 20 */
188
- /***/ (function(module, exports) {
189
-
190
- eval("module.exports = {};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXJhdG9ycy5qcz9mZGI0Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0ge307XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlcmF0b3JzLmpzXG4vLyBtb2R1bGUgaWQgPSAyMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///20\n");
191
-
192
- /***/ }),
193
- /* 21 */
194
- /***/ (function(module, exports, __webpack_require__) {
195
-
196
- eval("// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = __webpack_require__(10);\nvar dPs = __webpack_require__(60);\nvar enumBugKeys = __webpack_require__(23);\nvar IE_PROTO = __webpack_require__(16)('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = __webpack_require__(32)('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n __webpack_require__(65).appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1jcmVhdGUuanM/NjI4NiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAxOS4xLjIuMiAvIDE1LjIuMy41IE9iamVjdC5jcmVhdGUoTyBbLCBQcm9wZXJ0aWVzXSlcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGRQcyA9IHJlcXVpcmUoJy4vX29iamVjdC1kcHMnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4vX2VudW0tYnVnLWtleXMnKTtcbnZhciBJRV9QUk9UTyA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcbnZhciBFbXB0eSA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTtcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcblxuLy8gQ3JlYXRlIG9iamVjdCB3aXRoIGZha2UgYG51bGxgIHByb3RvdHlwZTogdXNlIGlmcmFtZSBPYmplY3Qgd2l0aCBjbGVhcmVkIHByb3RvdHlwZVxudmFyIGNyZWF0ZURpY3QgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIFRocmFzaCwgd2FzdGUgYW5kIHNvZG9teTogSUUgR0MgYnVnXG4gIHZhciBpZnJhbWUgPSByZXF1aXJlKCcuL19kb20tY3JlYXRlJykoJ2lmcmFtZScpO1xuICB2YXIgaSA9IGVudW1CdWdLZXlzLmxlbmd0aDtcbiAgdmFyIGx0ID0gJzwnO1xuICB2YXIgZ3QgPSAnPic7XG4gIHZhciBpZnJhbWVEb2N1bWVudDtcbiAgaWZyYW1lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIHJlcXVpcmUoJy4vX2h0bWwnKS5hcHBlbmRDaGlsZChpZnJhbWUpO1xuICBpZnJhbWUuc3JjID0gJ2phdmFzY3JpcHQ6JzsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1zY3JpcHQtdXJsXG4gIC8vIGNyZWF0ZURpY3QgPSBpZnJhbWUuY29udGVudFdpbmRvdy5PYmplY3Q7XG4gIC8vIGh0bWwucmVtb3ZlQ2hpbGQoaWZyYW1lKTtcbiAgaWZyYW1lRG9jdW1lbnQgPSBpZnJhbWUuY29udGVudFdpbmRvdy5kb2N1bWVudDtcbiAgaWZyYW1lRG9jdW1lbnQub3BlbigpO1xuICBpZnJhbWVEb2N1bWVudC53cml0ZShsdCArICdzY3JpcHQnICsgZ3QgKyAnZG9jdW1lbnQuRj1PYmplY3QnICsgbHQgKyAnL3NjcmlwdCcgKyBndCk7XG4gIGlmcmFtZURvY3VtZW50LmNsb3NlKCk7XG4gIGNyZWF0ZURpY3QgPSBpZnJhbWVEb2N1bWVudC5GO1xuICB3aGlsZSAoaS0tKSBkZWxldGUgY3JlYXRlRGljdFtQUk9UT1RZUEVdW2VudW1CdWdLZXlzW2ldXTtcbiAgcmV0dXJuIGNyZWF0ZURpY3QoKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmNyZWF0ZSB8fCBmdW5jdGlvbiBjcmVhdGUoTywgUHJvcGVydGllcykge1xuICB2YXIgcmVzdWx0O1xuICBpZiAoTyAhPT0gbnVsbCkge1xuICAgIEVtcHR5W1BST1RPVFlQRV0gPSBhbk9iamVjdChPKTtcbiAgICByZXN1bHQgPSBuZXcgRW1wdHkoKTtcbiAgICBFbXB0eVtQUk9UT1RZUEVdID0gbnVsbDtcbiAgICAvLyBhZGQgXCJfX3Byb3RvX19cIiBmb3IgT2JqZWN0LmdldFByb3RvdHlwZU9mIHBvbHlmaWxsXG4gICAgcmVzdWx0W0lFX1BST1RPXSA9IE87XG4gIH0gZWxzZSByZXN1bHQgPSBjcmVhdGVEaWN0KCk7XG4gIHJldHVybiBQcm9wZXJ0aWVzID09PSB1bmRlZmluZWQgPyByZXN1bHQgOiBkUHMocmVzdWx0LCBQcm9wZXJ0aWVzKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWNyZWF0ZS5qc1xuLy8gbW9kdWxlIGlkID0gMjFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///21\n");
197
-
198
- /***/ }),
199
- /* 22 */
200
- /***/ (function(module, exports, __webpack_require__) {
201
-
202
- eval("// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = __webpack_require__(36);\nvar enumBugKeys = __webpack_require__(23);\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLmpzPzk2NGIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4yLjE0IC8gMTUuMi4zLjE0IE9iamVjdC5rZXlzKE8pXG52YXIgJGtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cy1pbnRlcm5hbCcpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi9fZW51bS1idWcta2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIGtleXMoTykge1xuICByZXR1cm4gJGtleXMoTywgZW51bUJ1Z0tleXMpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3Qta2V5cy5qc1xuLy8gbW9kdWxlIGlkID0gMjJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///22\n");
203
-
204
- /***/ }),
205
- /* 23 */
206
- /***/ (function(module, exports) {
207
-
208
- eval("// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2VudW0tYnVnLWtleXMuanM/YzY3NyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJRSA4LSBkb24ndCBlbnVtIGJ1ZyBrZXlzXG5tb2R1bGUuZXhwb3J0cyA9IChcbiAgJ2NvbnN0cnVjdG9yLGhhc093blByb3BlcnR5LGlzUHJvdG90eXBlT2YscHJvcGVydHlJc0VudW1lcmFibGUsdG9Mb2NhbGVTdHJpbmcsdG9TdHJpbmcsdmFsdWVPZidcbikuc3BsaXQoJywnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19lbnVtLWJ1Zy1rZXlzLmpzXG4vLyBtb2R1bGUgaWQgPSAyM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///23\n");
209
-
210
- /***/ }),
211
- /* 24 */
212
- /***/ (function(module, exports, __webpack_require__) {
213
-
214
- eval("var def = __webpack_require__(3).f;\nvar has = __webpack_require__(2);\nvar TAG = __webpack_require__(9)('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NldC10by1zdHJpbmctdGFnLmpzPzdiYTkiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGRlZiA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgVEFHID0gcmVxdWlyZSgnLi9fd2tzJykoJ3RvU3RyaW5nVGFnJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCB0YWcsIHN0YXQpIHtcbiAgaWYgKGl0ICYmICFoYXMoaXQgPSBzdGF0ID8gaXQgOiBpdC5wcm90b3R5cGUsIFRBRykpIGRlZihpdCwgVEFHLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IHRhZyB9KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2V0LXRvLXN0cmluZy10YWcuanNcbi8vIG1vZHVsZSBpZCA9IDI0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///24\n");
215
-
216
- /***/ }),
217
- /* 25 */
218
- /***/ (function(module, exports, __webpack_require__) {
219
-
220
- eval("exports.f = __webpack_require__(9);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3drcy1leHQuanM/MmExZSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnRzLmYgPSByZXF1aXJlKCcuL193a3MnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL193a3MtZXh0LmpzXG4vLyBtb2R1bGUgaWQgPSAyNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///25\n");
221
-
222
- /***/ }),
223
- /* 26 */
224
- /***/ (function(module, exports, __webpack_require__) {
225
-
226
- eval("var global = __webpack_require__(1);\nvar core = __webpack_require__(0);\nvar LIBRARY = __webpack_require__(12);\nvar wksExt = __webpack_require__(25);\nvar defineProperty = __webpack_require__(3).f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3drcy1kZWZpbmUuanM/NzJiOSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBMSUJSQVJZID0gcmVxdWlyZSgnLi9fbGlicmFyeScpO1xudmFyIHdrc0V4dCA9IHJlcXVpcmUoJy4vX3drcy1leHQnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHZhciAkU3ltYm9sID0gY29yZS5TeW1ib2wgfHwgKGNvcmUuU3ltYm9sID0gTElCUkFSWSA/IHt9IDogZ2xvYmFsLlN5bWJvbCB8fCB7fSk7XG4gIGlmIChuYW1lLmNoYXJBdCgwKSAhPSAnXycgJiYgIShuYW1lIGluICRTeW1ib2wpKSBkZWZpbmVQcm9wZXJ0eSgkU3ltYm9sLCBuYW1lLCB7IHZhbHVlOiB3a3NFeHQuZihuYW1lKSB9KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fd2tzLWRlZmluZS5qc1xuLy8gbW9kdWxlIGlkID0gMjZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///26\n");
227
-
228
- /***/ }),
229
- /* 27 */
230
- /***/ (function(module, exports) {
231
-
232
- eval("exports.f = {}.propertyIsEnumerable;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1waWUuanM/MzY5MiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnRzLmYgPSB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtcGllLmpzXG4vLyBtb2R1bGUgaWQgPSAyN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///27\n");
233
-
234
- /***/ }),
235
- /* 28 */
236
- /***/ (function(module, exports, __webpack_require__) {
237
-
238
- eval("// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(15);\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLW9iamVjdC5qcz9iMDFkIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMS4xMyBUb09iamVjdChhcmd1bWVudClcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIE9iamVjdChkZWZpbmVkKGl0KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLW9iamVjdC5qc1xuLy8gbW9kdWxlIGlkID0gMjhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///28\n");
239
-
240
- /***/ }),
241
- /* 29 */
242
- /***/ (function(module, exports, __webpack_require__) {
243
-
244
- eval("// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = __webpack_require__(2);\nvar toObject = __webpack_require__(28);\nvar IE_PROTO = __webpack_require__(16)('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1ncG8uanM/M2YzYyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAxOS4xLjIuOSAvIDE1LjIuMy4yIE9iamVjdC5nZXRQcm90b3R5cGVPZihPKVxudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgSUVfUFJPVE8gPSByZXF1aXJlKCcuL19zaGFyZWQta2V5JykoJ0lFX1BST1RPJyk7XG52YXIgT2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiAoTykge1xuICBPID0gdG9PYmplY3QoTyk7XG4gIGlmIChoYXMoTywgSUVfUFJPVE8pKSByZXR1cm4gT1tJRV9QUk9UT107XG4gIGlmICh0eXBlb2YgTy5jb25zdHJ1Y3RvciA9PSAnZnVuY3Rpb24nICYmIE8gaW5zdGFuY2VvZiBPLmNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIE8uY29uc3RydWN0b3IucHJvdG90eXBlO1xuICB9IHJldHVybiBPIGluc3RhbmNlb2YgT2JqZWN0ID8gT2JqZWN0UHJvdG8gOiBudWxsO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ3BvLmpzXG4vLyBtb2R1bGUgaWQgPSAyOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///29\n");
245
-
246
- /***/ }),
247
- /* 30 */
248
- /***/ (function(module, exports, __webpack_require__) {
249
-
250
- eval("// optional / simple context binding\nvar aFunction = __webpack_require__(48);\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2N0eC5qcz9mOTkzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIG9wdGlvbmFsIC8gc2ltcGxlIGNvbnRleHQgYmluZGluZ1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZuLCB0aGF0LCBsZW5ndGgpIHtcbiAgYUZ1bmN0aW9uKGZuKTtcbiAgaWYgKHRoYXQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZuO1xuICBzd2l0Y2ggKGxlbmd0aCkge1xuICAgIGNhc2UgMTogcmV0dXJuIGZ1bmN0aW9uIChhKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhKTtcbiAgICB9O1xuICAgIGNhc2UgMjogcmV0dXJuIGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiKTtcbiAgICB9O1xuICAgIGNhc2UgMzogcmV0dXJuIGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiLCBjKTtcbiAgICB9O1xuICB9XG4gIHJldHVybiBmdW5jdGlvbiAoLyogLi4uYXJncyAqLykge1xuICAgIHJldHVybiBmbi5hcHBseSh0aGF0LCBhcmd1bWVudHMpO1xuICB9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jdHguanNcbi8vIG1vZHVsZSBpZCA9IDMwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///30\n");
251
-
252
- /***/ }),
253
- /* 31 */
254
- /***/ (function(module, exports, __webpack_require__) {
255
-
256
- eval("module.exports = !__webpack_require__(4) && !__webpack_require__(11)(function () {\n return Object.defineProperty(__webpack_require__(32)('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2llOC1kb20tZGVmaW5lLmpzPzQ5ZjAiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSAhcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSAmJiAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVxdWlyZSgnLi9fZG9tLWNyZWF0ZScpKCdkaXYnKSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pZTgtZG9tLWRlZmluZS5qc1xuLy8gbW9kdWxlIGlkID0gMzFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///31\n");
257
-
258
- /***/ }),
259
- /* 32 */
260
- /***/ (function(module, exports, __webpack_require__) {
261
-
262
- eval("var isObject = __webpack_require__(7);\nvar document = __webpack_require__(1).document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RvbS1jcmVhdGUuanM/MzhkZCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBkb2N1bWVudCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLmRvY3VtZW50O1xuLy8gdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaXMgJ29iamVjdCcgaW4gb2xkIElFXG52YXIgaXMgPSBpc09iamVjdChkb2N1bWVudCkgJiYgaXNPYmplY3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXMgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGl0KSA6IHt9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kb20tY3JlYXRlLmpzXG4vLyBtb2R1bGUgaWQgPSAzMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///32\n");
263
-
264
- /***/ }),
265
- /* 33 */
266
- /***/ (function(module, exports, __webpack_require__) {
267
-
268
- "use strict";
269
- eval("\n\nexports.__esModule = true;\n\nvar _iterator = __webpack_require__(55);\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = __webpack_require__(70);\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL3R5cGVvZi5qcz9hNDU2Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX2l0ZXJhdG9yID0gcmVxdWlyZShcIi4uL2NvcmUtanMvc3ltYm9sL2l0ZXJhdG9yXCIpO1xuXG52YXIgX2l0ZXJhdG9yMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2l0ZXJhdG9yKTtcblxudmFyIF9zeW1ib2wgPSByZXF1aXJlKFwiLi4vY29yZS1qcy9zeW1ib2xcIik7XG5cbnZhciBfc3ltYm9sMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3N5bWJvbCk7XG5cbnZhciBfdHlwZW9mID0gdHlwZW9mIF9zeW1ib2wyLmRlZmF1bHQgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgX2l0ZXJhdG9yMi5kZWZhdWx0ID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfSA6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgX3N5bWJvbDIuZGVmYXVsdCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gX3N5bWJvbDIuZGVmYXVsdCAmJiBvYmogIT09IF9zeW1ib2wyLmRlZmF1bHQucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmV4cG9ydHMuZGVmYXVsdCA9IHR5cGVvZiBfc3ltYm9sMi5kZWZhdWx0ID09PSBcImZ1bmN0aW9uXCIgJiYgX3R5cGVvZihfaXRlcmF0b3IyLmRlZmF1bHQpID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiBfdHlwZW9mKG9iaik7XG59IDogZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gb2JqICYmIHR5cGVvZiBfc3ltYm9sMi5kZWZhdWx0ID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBfc3ltYm9sMi5kZWZhdWx0ICYmIG9iaiAhPT0gX3N5bWJvbDIuZGVmYXVsdC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iaiA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiBfdHlwZW9mKG9iaik7XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy90eXBlb2YuanNcbi8vIG1vZHVsZSBpZCA9IDMzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///33\n");
270
-
271
- /***/ }),
272
- /* 34 */
273
- /***/ (function(module, exports, __webpack_require__) {
274
-
275
- "use strict";
276
- eval("\nvar LIBRARY = __webpack_require__(12);\nvar $export = __webpack_require__(5);\nvar redefine = __webpack_require__(35);\nvar hide = __webpack_require__(6);\nvar Iterators = __webpack_require__(20);\nvar $iterCreate = __webpack_require__(59);\nvar setToStringTag = __webpack_require__(24);\nvar getPrototypeOf = __webpack_require__(29);\nvar ITERATOR = __webpack_require__(9)('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItZGVmaW5lLmpzP2JjODAiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIExJQlJBUlkgPSByZXF1aXJlKCcuL19saWJyYXJ5Jyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xudmFyICRpdGVyQ3JlYXRlID0gcmVxdWlyZSgnLi9faXRlci1jcmVhdGUnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBCVUdHWSA9ICEoW10ua2V5cyAmJiAnbmV4dCcgaW4gW10ua2V5cygpKTsgLy8gU2FmYXJpIGhhcyBidWdneSBpdGVyYXRvcnMgdy9vIGBuZXh0YFxudmFyIEZGX0lURVJBVE9SID0gJ0BAaXRlcmF0b3InO1xudmFyIEtFWVMgPSAna2V5cyc7XG52YXIgVkFMVUVTID0gJ3ZhbHVlcyc7XG5cbnZhciByZXR1cm5UaGlzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQmFzZSwgTkFNRSwgQ29uc3RydWN0b3IsIG5leHQsIERFRkFVTFQsIElTX1NFVCwgRk9SQ0VEKSB7XG4gICRpdGVyQ3JlYXRlKENvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KTtcbiAgdmFyIGdldE1ldGhvZCA9IGZ1bmN0aW9uIChraW5kKSB7XG4gICAgaWYgKCFCVUdHWSAmJiBraW5kIGluIHByb3RvKSByZXR1cm4gcHJvdG9ba2luZF07XG4gICAgc3dpdGNoIChraW5kKSB7XG4gICAgICBjYXNlIEtFWVM6IHJldHVybiBmdW5jdGlvbiBrZXlzKCkgeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuICAgICAgY2FzZSBWQUxVRVM6IHJldHVybiBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiBuZXcgQ29uc3RydWN0b3IodGhpcywga2luZCk7IH07XG4gICAgfSByZXR1cm4gZnVuY3Rpb24gZW50cmllcygpIHsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcbiAgfTtcbiAgdmFyIFRBRyA9IE5BTUUgKyAnIEl0ZXJhdG9yJztcbiAgdmFyIERFRl9WQUxVRVMgPSBERUZBVUxUID09IFZBTFVFUztcbiAgdmFyIFZBTFVFU19CVUcgPSBmYWxzZTtcbiAgdmFyIHByb3RvID0gQmFzZS5wcm90b3R5cGU7XG4gIHZhciAkbmF0aXZlID0gcHJvdG9bSVRFUkFUT1JdIHx8IHByb3RvW0ZGX0lURVJBVE9SXSB8fCBERUZBVUxUICYmIHByb3RvW0RFRkFVTFRdO1xuICB2YXIgJGRlZmF1bHQgPSAkbmF0aXZlIHx8IGdldE1ldGhvZChERUZBVUxUKTtcbiAgdmFyICRlbnRyaWVzID0gREVGQVVMVCA/ICFERUZfVkFMVUVTID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoJ2VudHJpZXMnKSA6IHVuZGVmaW5lZDtcbiAgdmFyICRhbnlOYXRpdmUgPSBOQU1FID09ICdBcnJheScgPyBwcm90by5lbnRyaWVzIHx8ICRuYXRpdmUgOiAkbmF0aXZlO1xuICB2YXIgbWV0aG9kcywga2V5LCBJdGVyYXRvclByb3RvdHlwZTtcbiAgLy8gRml4IG5hdGl2ZVxuICBpZiAoJGFueU5hdGl2ZSkge1xuICAgIEl0ZXJhdG9yUHJvdG90eXBlID0gZ2V0UHJvdG90eXBlT2YoJGFueU5hdGl2ZS5jYWxsKG5ldyBCYXNlKCkpKTtcbiAgICBpZiAoSXRlcmF0b3JQcm90b3R5cGUgIT09IE9iamVjdC5wcm90b3R5cGUgJiYgSXRlcmF0b3JQcm90b3R5cGUubmV4dCkge1xuICAgICAgLy8gU2V0IEBAdG9TdHJpbmdUYWcgdG8gbmF0aXZlIGl0ZXJhdG9yc1xuICAgICAgc2V0VG9TdHJpbmdUYWcoSXRlcmF0b3JQcm90b3R5cGUsIFRBRywgdHJ1ZSk7XG4gICAgICAvLyBmaXggZm9yIHNvbWUgb2xkIGVuZ2luZXNcbiAgICAgIGlmICghTElCUkFSWSAmJiB0eXBlb2YgSXRlcmF0b3JQcm90b3R5cGVbSVRFUkFUT1JdICE9ICdmdW5jdGlvbicpIGhpZGUoSXRlcmF0b3JQcm90b3R5cGUsIElURVJBVE9SLCByZXR1cm5UaGlzKTtcbiAgICB9XG4gIH1cbiAgLy8gZml4IEFycmF5I3t2YWx1ZXMsIEBAaXRlcmF0b3J9Lm5hbWUgaW4gVjggLyBGRlxuICBpZiAoREVGX1ZBTFVFUyAmJiAkbmF0aXZlICYmICRuYXRpdmUubmFtZSAhPT0gVkFMVUVTKSB7XG4gICAgVkFMVUVTX0JVRyA9IHRydWU7XG4gICAgJGRlZmF1bHQgPSBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiAkbmF0aXZlLmNhbGwodGhpcyk7IH07XG4gIH1cbiAgLy8gRGVmaW5lIGl0ZXJhdG9yXG4gIGlmICgoIUxJQlJBUlkgfHwgRk9SQ0VEKSAmJiAoQlVHR1kgfHwgVkFMVUVTX0JVRyB8fCAhcHJvdG9bSVRFUkFUT1JdKSkge1xuICAgIGhpZGUocHJvdG8sIElURVJBVE9SLCAkZGVmYXVsdCk7XG4gIH1cbiAgLy8gUGx1ZyBmb3IgbGlicmFyeVxuICBJdGVyYXRvcnNbTkFNRV0gPSAkZGVmYXVsdDtcbiAgSXRlcmF0b3JzW1RBR10gPSByZXR1cm5UaGlzO1xuICBpZiAoREVGQVVMVCkge1xuICAgIG1ldGhvZHMgPSB7XG4gICAgICB2YWx1ZXM6IERFRl9WQUxVRVMgPyAkZGVmYXVsdCA6IGdldE1ldGhvZChWQUxVRVMpLFxuICAgICAga2V5czogSVNfU0VUID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoS0VZUyksXG4gICAgICBlbnRyaWVzOiAkZW50cmllc1xuICAgIH07XG4gICAgaWYgKEZPUkNFRCkgZm9yIChrZXkgaW4gbWV0aG9kcykge1xuICAgICAgaWYgKCEoa2V5IGluIHByb3RvKSkgcmVkZWZpbmUocHJvdG8sIGtleSwgbWV0aG9kc1trZXldKTtcbiAgICB9IGVsc2UgJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAoQlVHR1kgfHwgVkFMVUVTX0JVRyksIE5BTUUsIG1ldGhvZHMpO1xuICB9XG4gIHJldHVybiBtZXRob2RzO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWRlZmluZS5qc1xuLy8gbW9kdWxlIGlkID0gMzRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///34\n");
277
-
278
- /***/ }),
279
- /* 35 */
280
- /***/ (function(module, exports, __webpack_require__) {
281
-
282
- eval("module.exports = __webpack_require__(6);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3JlZGVmaW5lLmpzP2YzY2QiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19oaWRlJyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fcmVkZWZpbmUuanNcbi8vIG1vZHVsZSBpZCA9IDM1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///35\n");
283
-
284
- /***/ }),
285
- /* 36 */
286
- /***/ (function(module, exports, __webpack_require__) {
287
-
288
- eval("var has = __webpack_require__(2);\nvar toIObject = __webpack_require__(8);\nvar arrayIndexOf = __webpack_require__(62)(false);\nvar IE_PROTO = __webpack_require__(16)('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLWludGVybmFsLmpzPzIxYjgiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciBhcnJheUluZGV4T2YgPSByZXF1aXJlKCcuL19hcnJheS1pbmNsdWRlcycpKGZhbHNlKTtcbnZhciBJRV9QUk9UTyA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lcykge1xuICB2YXIgTyA9IHRvSU9iamVjdChvYmplY3QpO1xuICB2YXIgaSA9IDA7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkgaW4gTykgaWYgKGtleSAhPSBJRV9QUk9UTykgaGFzKE8sIGtleSkgJiYgcmVzdWx0LnB1c2goa2V5KTtcbiAgLy8gRG9uJ3QgZW51bSBidWcgJiBoaWRkZW4ga2V5c1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkgaWYgKGhhcyhPLCBrZXkgPSBuYW1lc1tpKytdKSkge1xuICAgIH5hcnJheUluZGV4T2YocmVzdWx0LCBrZXkpIHx8IHJlc3VsdC5wdXNoKGtleSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWtleXMtaW50ZXJuYWwuanNcbi8vIG1vZHVsZSBpZCA9IDM2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///36\n");
289
-
290
- /***/ }),
291
- /* 37 */
292
- /***/ (function(module, exports) {
293
-
294
- eval("var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvZi5qcz80N2QzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbChpdCkuc2xpY2UoOCwgLTEpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jb2YuanNcbi8vIG1vZHVsZSBpZCA9IDM3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///37\n");
295
-
296
- /***/ }),
297
- /* 38 */
298
- /***/ (function(module, exports) {
299
-
300
- eval("exports.f = Object.getOwnPropertySymbols;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BzLmpzP2Q2NDQiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ29wcy5qc1xuLy8gbW9kdWxlIGlkID0gMzhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///38\n");
301
-
302
- /***/ }),
303
- /* 39 */
304
- /***/ (function(module, exports, __webpack_require__) {
305
-
306
- eval("// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = __webpack_require__(36);\nvar hiddenKeys = __webpack_require__(23).concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BuLmpzPzlmNDQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4yLjcgLyAxNS4yLjMuNCBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPKVxudmFyICRrZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMtaW50ZXJuYWwnKTtcbnZhciBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi9fZW51bS1idWcta2V5cycpLmNvbmNhdCgnbGVuZ3RoJywgJ3Byb3RvdHlwZScpO1xuXG5leHBvcnRzLmYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyB8fCBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKE8pIHtcbiAgcmV0dXJuICRrZXlzKE8sIGhpZGRlbktleXMpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ29wbi5qc1xuLy8gbW9kdWxlIGlkID0gMzlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///39\n");
307
-
308
- /***/ }),
309
- /* 40 */
310
- /***/ (function(module, exports, __webpack_require__) {
311
-
312
- eval("var pIE = __webpack_require__(27);\nvar createDesc = __webpack_require__(14);\nvar toIObject = __webpack_require__(8);\nvar toPrimitive = __webpack_require__(18);\nvar has = __webpack_require__(2);\nvar IE8_DOM_DEFINE = __webpack_require__(31);\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = __webpack_require__(4) ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BkLmpzPzJjYTYiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHBJRSA9IHJlcXVpcmUoJy4vX29iamVjdC1waWUnKTtcbnZhciBjcmVhdGVEZXNjID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi9faWU4LWRvbS1kZWZpbmUnKTtcbnZhciBnT1BEID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcblxuZXhwb3J0cy5mID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IGdPUEQgOiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCkge1xuICBPID0gdG9JT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gZ09QRChPLCBQKTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG4gIGlmIChoYXMoTywgUCkpIHJldHVybiBjcmVhdGVEZXNjKCFwSUUuZi5jYWxsKE8sIFApLCBPW1BdKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWdvcGQuanNcbi8vIG1vZHVsZSBpZCA9IDQwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///40\n");
313
-
314
- /***/ }),
315
- /* 41 */
316
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
317
-
318
- "use strict";
319
- eval("Object.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__style_scss__ = __webpack_require__(42);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__style_scss___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__style_scss__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__sidebar_js__ = __webpack_require__(43);\n// Include stylesheet\n\n\n// Import Click to Tweet Block\n//import './block.js';\n\n// Import Gutenberg Boilerplate Sidebar\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvaW5kZXguanM/ODc0OSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJbmNsdWRlIHN0eWxlc2hlZXRcbmltcG9ydCAnLi9zdHlsZS5zY3NzJztcblxuLy8gSW1wb3J0IENsaWNrIHRvIFR3ZWV0IEJsb2NrXG4vL2ltcG9ydCAnLi9ibG9jay5qcyc7XG5cbi8vIEltcG9ydCBHdXRlbmJlcmcgQm9pbGVycGxhdGUgU2lkZWJhclxuaW1wb3J0ICcuL3NpZGViYXIuanMnO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vc3JjL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSA0MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///41\n");
320
-
321
- /***/ }),
322
- /* 42 */
323
- /***/ (function(module, exports) {
324
-
325
- eval("// removed by extract-text-webpack-plugin//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvc3R5bGUuc2Nzcz9hY2Q4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIHJlbW92ZWQgYnkgZXh0cmFjdC10ZXh0LXdlYnBhY2stcGx1Z2luXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9zcmMvc3R5bGUuc2Nzc1xuLy8gbW9kdWxlIGlkID0gNDJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///42\n");
326
-
327
- /***/ }),
328
- /* 43 */
329
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
330
-
331
- "use strict";
332
- eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_object_get_prototype_of__ = __webpack_require__(44);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_object_get_prototype_of___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_object_get_prototype_of__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck__ = __webpack_require__(49);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_createClass__ = __webpack_require__(50);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_createClass___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_createClass__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_possibleConstructorReturn__ = __webpack_require__(54);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_possibleConstructorReturn___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_possibleConstructorReturn__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_inherits__ = __webpack_require__(80);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_inherits___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_inherits__);\n\n\n\n\n\n/**\n * Internal block libraries.\n * @since 2.2.3\n */\nvar __ = wp.i18n.__;\nvar _wp$editPost = wp.editPost,\n PluginSidebar = _wp$editPost.PluginSidebar,\n PluginSidebarMoreMenuItem = _wp$editPost.PluginSidebarMoreMenuItem;\nvar _wp$components = wp.components,\n PanelBody = _wp$components.PanelBody,\n TextControl = _wp$components.TextControl,\n Button = _wp$components.Button,\n Notice = _wp$components.Notice;\nvar _wp$element = wp.element,\n Component = _wp$element.Component,\n Fragment = _wp$element.Fragment;\nvar withSelect = wp.data.withSelect;\nvar compose = wp.compose.compose;\n\n\nvar LanguageSwitcherNotice = function LanguageSwitcherNotice(props) {\n\tif (WPGlobusGutenberg.pagenow == WPGlobusGutenberg.postNewPage) {\n\t\treturn wp.element.createElement('div', null);\n\t}\n\n\tvar dev = '';\n\tif ('undefined' !== typeof WPGlobusBlockEditorDevelop && !WPGlobusBlockEditorDevelop.production) {\n\t\tdev = '(develop)';\n\t}\n\n\treturn wp.element.createElement(\n\t\tNotice,\n\t\t{ className: 'wpglobus-block-editor-panel__notice', status: 'informational', isDismissible: false },\n\t\t__('Select language'),\n\t\t' ',\n\t\tdev\n\t);\n};\n\nvar LanguageSwitcher = function LanguageSwitcher(props) {\n\n\tif (WPGlobusGutenberg.pagenow == WPGlobusGutenberg.postNewPage) {\n\t\treturn wp.element.createElement(\n\t\t\t'div',\n\t\t\t{ className: 'wpglobus-block-editor-panel__switcher-box' },\n\t\t\tWPGlobusGutenberg.i18n.save_post\n\t\t);\n\t}\n\n\tvar language = WPGlobusGutenberg.language;\n\tvar flagsUrl = WPGlobusGutenberg.flags_url;\n\tvar enabledLanguages = WPGlobusCoreData.enabled_languages;\n\tvar languageNames = WPGlobusCoreData.en_language_name;\n\tvar ref = location.href;\n\tvar refs = {};\n\tfor (var key in enabledLanguages) {\n\t\tif (-1 == ref.indexOf('language=' + language)) {\n\t\t\trefs[enabledLanguages[key]] = ref + '&language=' + enabledLanguages[key];\n\t\t} else {\n\t\t\trefs[enabledLanguages[key]] = ref.replace('language=' + language, 'language=' + enabledLanguages[key]);\n\t\t}\n\t}\n\n\treturn wp.element.createElement(\n\t\t'div',\n\t\t{ className: 'wpglobus-block-editor-panel__switcher-box' },\n\t\twp.element.createElement(\n\t\t\t'ul',\n\t\t\tnull,\n\t\t\tenabledLanguages.map(function (lang) {\n\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t'li',\n\t\t\t\t\t{ key: lang },\n\t\t\t\t\twp.element.createElement('img', { className: 'wpglobus-block-editor-panel__flag', height: '20px', width: '20px', src: flagsUrl[lang] }),\n\t\t\t\t\t'\\xA0\\xA0',\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\tButton,\n\t\t\t\t\t\t{ href: refs[lang], isSmall: true, isPrimary: true },\n\t\t\t\t\t\tlanguageNames[lang]\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t})\n\t\t)\n\t);\n};\n\nvar WPGlobusInfo = function WPGlobusInfo(props) {\n\treturn wp.element.createElement(\n\t\t'div',\n\t\t{ className: 'wpglobus-block-editor-panel__info' },\n\t\twp.element.createElement(\n\t\t\tButton,\n\t\t\t{ href: props.href, target: '_blank', isLink: true },\n\t\t\t__('WPGlobus Premium Add-ons')\n\t\t)\n\t);\n};\n\nvar SettingsLink = function SettingsLink(props) {\n\treturn wp.element.createElement(\n\t\t'div',\n\t\t{ className: 'wpglobus-block-editor-panel__settings-link' },\n\t\twp.element.createElement(\n\t\t\tButton,\n\t\t\t{ href: props.href, isLink: true },\n\t\t\t__('Settings')\n\t\t)\n\t);\n};\n\nvar registerPlugin = wp.plugins.registerPlugin;\n\nvar WPGlobus_BlockEditor = function (_Component) {\n\t__WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_inherits___default()(WPGlobus_BlockEditor, _Component);\n\n\tfunction WPGlobus_BlockEditor() {\n\t\t__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, WPGlobus_BlockEditor);\n\n\t\tvar _this = __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_possibleConstructorReturn___default()(this, (WPGlobus_BlockEditor.__proto__ || __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_object_get_prototype_of___default()(WPGlobus_BlockEditor)).apply(this, arguments));\n\n\t\tvar dev = '';\n\t\tif ('undefined' !== typeof WPGlobusBlockEditorDevelop && !WPGlobusBlockEditorDevelop.production) {\n\t\t\tdev = ' (develop)';\n\t\t}\n\n\t\t_this.state = {\n\t\t\toptionsTabUrl: WPGlobusGutenberg.block_editor_tab_url,\n\t\t\tstoreLink: WPGlobusGutenberg.store_link,\n\t\t\theaderTitle: __('WPGlobus') + dev,\n\t\t\tmoreMenuItemTitle: __('WPGlobus')\n\t\t};\n\n\t\tsetTimeout(function () {\n\t\t\tvar buttons = document.getElementsByClassName('components-icon-button');\n\t\t\tfor (var i = 0; i < buttons.length; i++) {\n\t\t\t\tvar status = buttons[i].getAttribute('aria-label');\n\t\t\t\t//if ( status == 'WPGlobus' ) { \n\t\t\t\tif (-1 != status.indexOf('WPGlobus')) {\n\t\t\t\t\tvar done = buttons[i].dataset.done;\n\t\t\t\t\tif ('undefined' === typeof done) {\n\t\t\t\t\t\tvar content = buttons[i].innerHTML;\n\t\t\t\t\t\t//@todo buttons[i].classList.add('wpglobus-switcher-button');\n\t\t\t\t\t\tbuttons[i].innerHTML = content + '<img height=\"20px\" width=\"20px\" src=\"' + WPGlobusGutenberg.flags_url[WPGlobusGutenberg.language] + '\" />&nbsp;' + WPGlobusAdmin.data.en_language_name[WPGlobusGutenberg.language];\n\t\t\t\t\t\tbuttons[i].dataset.done = 'yes';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}, 500);\n\t\treturn _this;\n\t}\n\n\t__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_createClass___default()(WPGlobus_BlockEditor, [{\n\t\tkey: 'render',\n\t\tvalue: function render() {\n\t\t\treturn wp.element.createElement(\n\t\t\t\tFragment,\n\t\t\t\tnull,\n\t\t\t\twp.element.createElement(\n\t\t\t\t\tPluginSidebarMoreMenuItem,\n\t\t\t\t\t{\n\t\t\t\t\t\ttarget: 'wpglobus-gutenberg-sidebar'\n\t\t\t\t\t},\n\t\t\t\t\tthis.state.moreMenuItemTitle\n\t\t\t\t),\n\t\t\t\twp.element.createElement(\n\t\t\t\t\tPluginSidebar,\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'wpglobus-gutenberg-sidebar',\n\t\t\t\t\t\ttitle: this.state.headerTitle\n\t\t\t\t\t},\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\tPanelBody,\n\t\t\t\t\t\t{ className: 'wpglobus-block-editor-panel__body' },\n\t\t\t\t\t\twp.element.createElement(LanguageSwitcherNotice, null),\n\t\t\t\t\t\twp.element.createElement(LanguageSwitcher, null),\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\twp.element.createElement(WPGlobusInfo, { href: this.state.storeLink }),\n\t\t\t\t\t\t\twp.element.createElement(SettingsLink, { href: this.state.optionsTabUrl })\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t}]);\n\n\treturn WPGlobus_BlockEditor;\n}(Component);\n\nvar WPGBE = withSelect(function (select, _ref) {\n\tvar forceIsSaving = _ref.forceIsSaving;\n\n\tvar _select = select('core/editor'),\n\t getCurrentPostId = _select.getCurrentPostId,\n\t isSavingPost = _select.isSavingPost,\n\t isPublishingPost = _select.isPublishingPost,\n\t isAutosavingPost = _select.isAutosavingPost;\n\n\treturn {\n\t\tpostId: getCurrentPostId(),\n\t\tisSaving: forceIsSaving || isSavingPost(),\n\t\tisAutoSaving: isAutosavingPost(),\n\t\tisPublishing: isPublishingPost()\n\t};\n})(WPGlobus_BlockEditor);\n\nregisterPlugin('wpglobus-gutenberg', {\n\ticon: 'admin-site',\n\trender: WPGBE\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvc2lkZWJhci5qcz8yNWQ1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfT2JqZWN0JGdldFByb3RvdHlwZU9mIGZyb20gJ2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvZ2V0LXByb3RvdHlwZS1vZic7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjayc7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzcyc7XG5pbXBvcnQgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4gZnJvbSAnYmFiZWwtcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4nO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tICdiYWJlbC1ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHMnO1xuLyoqXG4gKiBJbnRlcm5hbCBibG9jayBsaWJyYXJpZXMuXG4gKiBAc2luY2UgMi4yLjNcbiAqL1xudmFyIF9fID0gd3AuaTE4bi5fXztcbnZhciBfd3AkZWRpdFBvc3QgPSB3cC5lZGl0UG9zdCxcbiAgICBQbHVnaW5TaWRlYmFyID0gX3dwJGVkaXRQb3N0LlBsdWdpblNpZGViYXIsXG4gICAgUGx1Z2luU2lkZWJhck1vcmVNZW51SXRlbSA9IF93cCRlZGl0UG9zdC5QbHVnaW5TaWRlYmFyTW9yZU1lbnVJdGVtO1xudmFyIF93cCRjb21wb25lbnRzID0gd3AuY29tcG9uZW50cyxcbiAgICBQYW5lbEJvZHkgPSBfd3AkY29tcG9uZW50cy5QYW5lbEJvZHksXG4gICAgVGV4dENvbnRyb2wgPSBfd3AkY29tcG9uZW50cy5UZXh0Q29udHJvbCxcbiAgICBCdXR0b24gPSBfd3AkY29tcG9uZW50cy5CdXR0b24sXG4gICAgTm90aWNlID0gX3dwJGNvbXBvbmVudHMuTm90aWNlO1xudmFyIF93cCRlbGVtZW50ID0gd3AuZWxlbWVudCxcbiAgICBDb21wb25lbnQgPSBfd3AkZWxlbWVudC5Db21wb25lbnQsXG4gICAgRnJhZ21lbnQgPSBfd3AkZWxlbWVudC5GcmFnbWVudDtcbnZhciB3aXRoU2VsZWN0ID0gd3AuZGF0YS53aXRoU2VsZWN0O1xudmFyIGNvbXBvc2UgPSB3cC5jb21wb3NlLmNvbXBvc2U7XG5cblxudmFyIExhbmd1YWdlU3dpdGNoZXJOb3RpY2UgPSBmdW5jdGlvbiBMYW5ndWFnZVN3aXRjaGVyTm90aWNlKHByb3BzKSB7XG5cdGlmIChXUEdsb2J1c0d1dGVuYmVyZy5wYWdlbm93ID09IFdQR2xvYnVzR3V0ZW5iZXJnLnBvc3ROZXdQYWdlKSB7XG5cdFx0cmV0dXJuIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JywgbnVsbCk7XG5cdH1cblxuXHR2YXIgZGV2ID0gJyc7XG5cdGlmICgndW5kZWZpbmVkJyAhPT0gdHlwZW9mIFdQR2xvYnVzQmxvY2tFZGl0b3JEZXZlbG9wICYmICFXUEdsb2J1c0Jsb2NrRWRpdG9yRGV2ZWxvcC5wcm9kdWN0aW9uKSB7XG5cdFx0ZGV2ID0gJyhkZXZlbG9wKSc7XG5cdH1cblxuXHRyZXR1cm4gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdE5vdGljZSxcblx0XHR7IGNsYXNzTmFtZTogJ3dwZ2xvYnVzLWJsb2NrLWVkaXRvci1wYW5lbF9fbm90aWNlJywgc3RhdHVzOiAnaW5mb3JtYXRpb25hbCcsIGlzRGlzbWlzc2libGU6IGZhbHNlIH0sXG5cdFx0X18oJ1NlbGVjdCBsYW5ndWFnZScpLFxuXHRcdCcgJyxcblx0XHRkZXZcblx0KTtcbn07XG5cbnZhciBMYW5ndWFnZVN3aXRjaGVyID0gZnVuY3Rpb24gTGFuZ3VhZ2VTd2l0Y2hlcihwcm9wcykge1xuXG5cdGlmIChXUEdsb2J1c0d1dGVuYmVyZy5wYWdlbm93ID09IFdQR2xvYnVzR3V0ZW5iZXJnLnBvc3ROZXdQYWdlKSB7XG5cdFx0cmV0dXJuIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdCdkaXYnLFxuXHRcdFx0eyBjbGFzc05hbWU6ICd3cGdsb2J1cy1ibG9jay1lZGl0b3ItcGFuZWxfX3N3aXRjaGVyLWJveCcgfSxcblx0XHRcdFdQR2xvYnVzR3V0ZW5iZXJnLmkxOG4uc2F2ZV9wb3N0XG5cdFx0KTtcblx0fVxuXG5cdHZhciBsYW5ndWFnZSA9IFdQR2xvYnVzR3V0ZW5iZXJnLmxhbmd1YWdlO1xuXHR2YXIgZmxhZ3NVcmwgPSBXUEdsb2J1c0d1dGVuYmVyZy5mbGFnc191cmw7XG5cdHZhciBlbmFibGVkTGFuZ3VhZ2VzID0gV1BHbG9idXNDb3JlRGF0YS5lbmFibGVkX2xhbmd1YWdlcztcblx0dmFyIGxhbmd1YWdlTmFtZXMgPSBXUEdsb2J1c0NvcmVEYXRhLmVuX2xhbmd1YWdlX25hbWU7XG5cdHZhciByZWYgPSBsb2NhdGlvbi5ocmVmO1xuXHR2YXIgcmVmcyA9IHt9O1xuXHRmb3IgKHZhciBrZXkgaW4gZW5hYmxlZExhbmd1YWdlcykge1xuXHRcdGlmICgtMSA9PSByZWYuaW5kZXhPZignbGFuZ3VhZ2U9JyArIGxhbmd1YWdlKSkge1xuXHRcdFx0cmVmc1tlbmFibGVkTGFuZ3VhZ2VzW2tleV1dID0gcmVmICsgJyZsYW5ndWFnZT0nICsgZW5hYmxlZExhbmd1YWdlc1trZXldO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZWZzW2VuYWJsZWRMYW5ndWFnZXNba2V5XV0gPSByZWYucmVwbGFjZSgnbGFuZ3VhZ2U9JyArIGxhbmd1YWdlLCAnbGFuZ3VhZ2U9JyArIGVuYWJsZWRMYW5ndWFnZXNba2V5XSk7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHQnZGl2Jyxcblx0XHR7IGNsYXNzTmFtZTogJ3dwZ2xvYnVzLWJsb2NrLWVkaXRvci1wYW5lbF9fc3dpdGNoZXItYm94JyB9LFxuXHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdCd1bCcsXG5cdFx0XHRudWxsLFxuXHRcdFx0ZW5hYmxlZExhbmd1YWdlcy5tYXAoZnVuY3Rpb24gKGxhbmcpIHtcblx0XHRcdFx0cmV0dXJuIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHQnbGknLFxuXHRcdFx0XHRcdHsga2V5OiBsYW5nIH0sXG5cdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KCdpbWcnLCB7IGNsYXNzTmFtZTogJ3dwZ2xvYnVzLWJsb2NrLWVkaXRvci1wYW5lbF9fZmxhZycsIGhlaWdodDogJzIwcHgnLCB3aWR0aDogJzIwcHgnLCBzcmM6IGZsYWdzVXJsW2xhbmddIH0pLFxuXHRcdFx0XHRcdCdcXHhBMFxceEEwJyxcblx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRCdXR0b24sXG5cdFx0XHRcdFx0XHR7IGhyZWY6IHJlZnNbbGFuZ10sIGlzU21hbGw6IHRydWUsIGlzUHJpbWFyeTogdHJ1ZSB9LFxuXHRcdFx0XHRcdFx0bGFuZ3VhZ2VOYW1lc1tsYW5nXVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KTtcblx0XHRcdH0pXG5cdFx0KVxuXHQpO1xufTtcblxudmFyIFdQR2xvYnVzSW5mbyA9IGZ1bmN0aW9uIFdQR2xvYnVzSW5mbyhwcm9wcykge1xuXHRyZXR1cm4gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdCdkaXYnLFxuXHRcdHsgY2xhc3NOYW1lOiAnd3BnbG9idXMtYmxvY2stZWRpdG9yLXBhbmVsX19pbmZvJyB9LFxuXHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdEJ1dHRvbixcblx0XHRcdHsgaHJlZjogcHJvcHMuaHJlZiwgdGFyZ2V0OiAnX2JsYW5rJywgaXNMaW5rOiB0cnVlIH0sXG5cdFx0XHRfXygnV1BHbG9idXMgUHJlbWl1bSBBZGQtb25zJylcblx0XHQpXG5cdCk7XG59O1xuXG52YXIgU2V0dGluZ3NMaW5rID0gZnVuY3Rpb24gU2V0dGluZ3NMaW5rKHByb3BzKSB7XG5cdHJldHVybiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0J2RpdicsXG5cdFx0eyBjbGFzc05hbWU6ICd3cGdsb2J1cy1ibG9jay1lZGl0b3ItcGFuZWxfX3NldHRpbmdzLWxpbmsnIH0sXG5cdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0QnV0dG9uLFxuXHRcdFx0eyBocmVmOiBwcm9wcy5ocmVmLCBpc0xpbms6IHRydWUgfSxcblx0XHRcdF9fKCdTZXR0aW5ncycpXG5cdFx0KVxuXHQpO1xufTtcblxudmFyIHJlZ2lzdGVyUGx1Z2luID0gd3AucGx1Z2lucy5yZWdpc3RlclBsdWdpbjtcblxudmFyIFdQR2xvYnVzX0Jsb2NrRWRpdG9yID0gZnVuY3Rpb24gKF9Db21wb25lbnQpIHtcblx0X2luaGVyaXRzKFdQR2xvYnVzX0Jsb2NrRWRpdG9yLCBfQ29tcG9uZW50KTtcblxuXHRmdW5jdGlvbiBXUEdsb2J1c19CbG9ja0VkaXRvcigpIHtcblx0XHRfY2xhc3NDYWxsQ2hlY2sodGhpcywgV1BHbG9idXNfQmxvY2tFZGl0b3IpO1xuXG5cdFx0dmFyIF90aGlzID0gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgKFdQR2xvYnVzX0Jsb2NrRWRpdG9yLl9fcHJvdG9fXyB8fCBfT2JqZWN0JGdldFByb3RvdHlwZU9mKFdQR2xvYnVzX0Jsb2NrRWRpdG9yKSkuYXBwbHkodGhpcywgYXJndW1lbnRzKSk7XG5cblx0XHR2YXIgZGV2ID0gJyc7XG5cdFx0aWYgKCd1bmRlZmluZWQnICE9PSB0eXBlb2YgV1BHbG9idXNCbG9ja0VkaXRvckRldmVsb3AgJiYgIVdQR2xvYnVzQmxvY2tFZGl0b3JEZXZlbG9wLnByb2R1Y3Rpb24pIHtcblx0XHRcdGRldiA9ICcgKGRldmVsb3ApJztcblx0XHR9XG5cblx0XHRfdGhpcy5zdGF0ZSA9IHtcblx0XHRcdG9wdGlvbnNUYWJVcmw6IFdQR2xvYnVzR3V0ZW5iZXJnLmJsb2NrX2VkaXRvcl90YWJfdXJsLFxuXHRcdFx0c3RvcmVMaW5rOiBXUEdsb2J1c0d1dGVuYmVyZy5zdG9yZV9saW5rLFxuXHRcdFx0aGVhZGVyVGl0bGU6IF9fKCdXUEdsb2J1cycpICsgZGV2LFxuXHRcdFx0bW9yZU1lbnVJdGVtVGl0bGU6IF9fKCdXUEdsb2J1cycpXG5cdFx0fTtcblxuXHRcdHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuXHRcdFx0dmFyIGJ1dHRvbnMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjb21wb25lbnRzLWljb24tYnV0dG9uJyk7XG5cdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGJ1dHRvbnMubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0dmFyIHN0YXR1cyA9IGJ1dHRvbnNbaV0uZ2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJyk7XG5cdFx0XHRcdC8vaWYgKCBzdGF0dXMgPT0gJ1dQR2xvYnVzJyApIHsgXG5cdFx0XHRcdGlmICgtMSAhPSBzdGF0dXMuaW5kZXhPZignV1BHbG9idXMnKSkge1xuXHRcdFx0XHRcdHZhciBkb25lID0gYnV0dG9uc1tpXS5kYXRhc2V0LmRvbmU7XG5cdFx0XHRcdFx0aWYgKCd1bmRlZmluZWQnID09PSB0eXBlb2YgZG9uZSkge1xuXHRcdFx0XHRcdFx0dmFyIGNvbnRlbnQgPSBidXR0b25zW2ldLmlubmVySFRNTDtcblx0XHRcdFx0XHRcdC8vQHRvZG8gYnV0dG9uc1tpXS5jbGFzc0xpc3QuYWRkKCd3cGdsb2J1cy1zd2l0Y2hlci1idXR0b24nKTtcblx0XHRcdFx0XHRcdGJ1dHRvbnNbaV0uaW5uZXJIVE1MID0gY29udGVudCArICc8aW1nIGhlaWdodD1cIjIwcHhcIiB3aWR0aD1cIjIwcHhcIiBzcmM9XCInICsgV1BHbG9idXNHdXRlbmJlcmcuZmxhZ3NfdXJsW1dQR2xvYnVzR3V0ZW5iZXJnLmxhbmd1YWdlXSArICdcIiAvPiZuYnNwOycgKyBXUEdsb2J1c0FkbWluLmRhdGEuZW5fbGFuZ3VhZ2VfbmFtZVtXUEdsb2J1c0d1dGVuYmVyZy5sYW5ndWFnZV07XG5cdFx0XHRcdFx0XHRidXR0b25zW2ldLmRhdGFzZXQuZG9uZSA9ICd5ZXMnO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0sIDUwMCk7XG5cdFx0cmV0dXJuIF90aGlzO1xuXHR9XG5cblx0X2NyZWF0ZUNsYXNzKFdQR2xvYnVzX0Jsb2NrRWRpdG9yLCBbe1xuXHRcdGtleTogJ3JlbmRlcicsXG5cdFx0dmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcblx0XHRcdHJldHVybiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdEZyYWdtZW50LFxuXHRcdFx0XHRudWxsLFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0UGx1Z2luU2lkZWJhck1vcmVNZW51SXRlbSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHR0YXJnZXQ6ICd3cGdsb2J1cy1ndXRlbmJlcmctc2lkZWJhcidcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHRoaXMuc3RhdGUubW9yZU1lbnVJdGVtVGl0bGVcblx0XHRcdFx0KSxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFBsdWdpblNpZGViYXIsXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bmFtZTogJ3dwZ2xvYnVzLWd1dGVuYmVyZy1zaWRlYmFyJyxcblx0XHRcdFx0XHRcdHRpdGxlOiB0aGlzLnN0YXRlLmhlYWRlclRpdGxlXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRQYW5lbEJvZHksXG5cdFx0XHRcdFx0XHR7IGNsYXNzTmFtZTogJ3dwZ2xvYnVzLWJsb2NrLWVkaXRvci1wYW5lbF9fYm9keScgfSxcblx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChMYW5ndWFnZVN3aXRjaGVyTm90aWNlLCBudWxsKSxcblx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChMYW5ndWFnZVN3aXRjaGVyLCBudWxsKSxcblx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0J2RpdicsXG5cdFx0XHRcdFx0XHRcdG51bGwsXG5cdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChXUEdsb2J1c0luZm8sIHsgaHJlZjogdGhpcy5zdGF0ZS5zdG9yZUxpbmsgfSksXG5cdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChTZXR0aW5nc0xpbmssIHsgaHJlZjogdGhpcy5zdGF0ZS5vcHRpb25zVGFiVXJsIH0pXG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpXG5cdFx0XHQpO1xuXHRcdH1cblx0fV0pO1xuXG5cdHJldHVybiBXUEdsb2J1c19CbG9ja0VkaXRvcjtcbn0oQ29tcG9uZW50KTtcblxudmFyIFdQR0JFID0gd2l0aFNlbGVjdChmdW5jdGlvbiAoc2VsZWN0LCBfcmVmKSB7XG5cdHZhciBmb3JjZUlzU2F2aW5nID0gX3JlZi5mb3JjZUlzU2F2aW5nO1xuXG5cdHZhciBfc2VsZWN0ID0gc2VsZWN0KCdjb3JlL2VkaXRvcicpLFxuXHQgICAgZ2V0Q3VycmVudFBvc3RJZCA9IF9zZWxlY3QuZ2V0Q3VycmVudFBvc3RJZCxcblx0ICAgIGlzU2F2aW5nUG9zdCA9IF9zZWxlY3QuaXNTYXZpbmdQb3N0LFxuXHQgICAgaXNQdWJsaXNoaW5nUG9zdCA9IF9zZWxlY3QuaXNQdWJsaXNoaW5nUG9zdCxcblx0ICAgIGlzQXV0b3NhdmluZ1Bvc3QgPSBfc2VsZWN0LmlzQXV0b3NhdmluZ1Bvc3Q7XG5cblx0cmV0dXJuIHtcblx0XHRwb3N0SWQ6IGdldEN1cnJlbnRQb3N0SWQoKSxcblx0XHRpc1NhdmluZzogZm9yY2VJc1NhdmluZyB8fCBpc1NhdmluZ1Bvc3QoKSxcblx0XHRpc0F1dG9TYXZpbmc6IGlzQXV0b3NhdmluZ1Bvc3QoKSxcblx0XHRpc1B1Ymxpc2hpbmc6IGlzUHVibGlzaGluZ1Bvc3QoKVxuXHR9O1xufSkoV1BHbG9idXNfQmxvY2tFZGl0b3IpO1xuXG5yZWdpc3RlclBsdWdpbignd3BnbG9idXMtZ3V0ZW5iZXJnJywge1xuXHRpY29uOiAnYWRtaW4tc2l0ZScsXG5cdHJlbmRlcjogV1BHQkVcbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vc3JjL3NpZGViYXIuanNcbi8vIG1vZHVsZSBpZCA9IDQzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///43\n");
333
-
334
- /***/ }),
335
- /* 44 */
336
- /***/ (function(module, exports, __webpack_require__) {
337
-
338
- eval("module.exports = { \"default\": __webpack_require__(45), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9nZXQtcHJvdG90eXBlLW9mLmpzPzY3MWUiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9nZXQtcHJvdG90eXBlLW9mXCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9nZXQtcHJvdG90eXBlLW9mLmpzXG4vLyBtb2R1bGUgaWQgPSA0NFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///44\n");
339
-
340
- /***/ }),
341
- /* 45 */
342
- /***/ (function(module, exports, __webpack_require__) {
343
-
344
- eval("__webpack_require__(46);\nmodule.exports = __webpack_require__(0).Object.getPrototypeOf;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9nZXQtcHJvdG90eXBlLW9mLmpzPzdkMmUiXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LmdldC1wcm90b3R5cGUtb2YnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpLk9iamVjdC5nZXRQcm90b3R5cGVPZjtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvZ2V0LXByb3RvdHlwZS1vZi5qc1xuLy8gbW9kdWxlIGlkID0gNDVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///45\n");
345
-
346
- /***/ }),
347
- /* 46 */
348
- /***/ (function(module, exports, __webpack_require__) {
349
-
350
- eval("// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = __webpack_require__(28);\nvar $getPrototypeOf = __webpack_require__(29);\n\n__webpack_require__(47)('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5nZXQtcHJvdG90eXBlLW9mLmpzPzJhMWUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4yLjkgT2JqZWN0LmdldFByb3RvdHlwZU9mKE8pXG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciAkZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG5cbnJlcXVpcmUoJy4vX29iamVjdC1zYXAnKSgnZ2V0UHJvdG90eXBlT2YnLCBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBmdW5jdGlvbiBnZXRQcm90b3R5cGVPZihpdCkge1xuICAgIHJldHVybiAkZ2V0UHJvdG90eXBlT2YodG9PYmplY3QoaXQpKTtcbiAgfTtcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5nZXQtcHJvdG90eXBlLW9mLmpzXG4vLyBtb2R1bGUgaWQgPSA0NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///46\n");
351
-
352
- /***/ }),
353
- /* 47 */
354
- /***/ (function(module, exports, __webpack_require__) {
355
-
356
- eval("// most Object methods by ES6 should accept primitives\nvar $export = __webpack_require__(5);\nvar core = __webpack_require__(0);\nvar fails = __webpack_require__(11);\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1zYXAuanM/YmFhNSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBtb3N0IE9iamVjdCBtZXRob2RzIGJ5IEVTNiBzaG91bGQgYWNjZXB0IHByaW1pdGl2ZXNcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChLRVksIGV4ZWMpIHtcbiAgdmFyIGZuID0gKGNvcmUuT2JqZWN0IHx8IHt9KVtLRVldIHx8IE9iamVjdFtLRVldO1xuICB2YXIgZXhwID0ge307XG4gIGV4cFtLRVldID0gZXhlYyhmbik7XG4gICRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogZmFpbHMoZnVuY3Rpb24gKCkgeyBmbigxKTsgfSksICdPYmplY3QnLCBleHApO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3Qtc2FwLmpzXG4vLyBtb2R1bGUgaWQgPSA0N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///47\n");
357
-
358
- /***/ }),
359
- /* 48 */
360
- /***/ (function(module, exports) {
361
-
362
- eval("module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2EtZnVuY3Rpb24uanM/OTRlOSJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAodHlwZW9mIGl0ICE9ICdmdW5jdGlvbicpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGEgZnVuY3Rpb24hJyk7XG4gIHJldHVybiBpdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYS1mdW5jdGlvbi5qc1xuLy8gbW9kdWxlIGlkID0gNDhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///48\n");
363
-
364
- /***/ }),
365
- /* 49 */
366
- /***/ (function(module, exports, __webpack_require__) {
367
-
368
- "use strict";
369
- eval("\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrLmpzPzY2YjkiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGZ1bmN0aW9uIChpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHtcbiAgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xuICB9XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjay5qc1xuLy8gbW9kdWxlIGlkID0gNDlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///49\n");
370
-
371
- /***/ }),
372
- /* 50 */
373
- /***/ (function(module, exports, __webpack_require__) {
374
-
375
- "use strict";
376
- eval("\n\nexports.__esModule = true;\n\nvar _defineProperty = __webpack_require__(51);\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzLmpzP2MzMTAiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKFwiLi4vY29yZS1qcy9vYmplY3QvZGVmaW5lLXByb3BlcnR5XCIpO1xuXG52YXIgX2RlZmluZVByb3BlcnR5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2RlZmluZVByb3BlcnR5KTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldO1xuICAgICAgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlO1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgICAgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTtcbiAgICAgICgwLCBfZGVmaW5lUHJvcGVydHkyLmRlZmF1bHQpKHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7XG4gICAgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTtcbiAgICBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTtcbiAgICByZXR1cm4gQ29uc3RydWN0b3I7XG4gIH07XG59KCk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzLmpzXG4vLyBtb2R1bGUgaWQgPSA1MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///50\n");
377
-
378
- /***/ }),
379
- /* 51 */
380
- /***/ (function(module, exports, __webpack_require__) {
381
-
382
- eval("module.exports = { \"default\": __webpack_require__(52), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanM/MGI4MyJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L2RlZmluZS1wcm9wZXJ0eVwiKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvZGVmaW5lLXByb3BlcnR5LmpzXG4vLyBtb2R1bGUgaWQgPSA1MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///51\n");
383
-
384
- /***/ }),
385
- /* 52 */
386
- /***/ (function(module, exports, __webpack_require__) {
387
-
388
- eval("__webpack_require__(53);\nvar $Object = __webpack_require__(0).Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanM/ZjViMCJdLCJzb3VyY2VzQ29udGVudCI6WyJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5vYmplY3QuZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgJE9iamVjdCA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5PYmplY3Q7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KGl0LCBrZXksIGRlc2MpIHtcbiAgcmV0dXJuICRPYmplY3QuZGVmaW5lUHJvcGVydHkoaXQsIGtleSwgZGVzYyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanNcbi8vIG1vZHVsZSBpZCA9IDUyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///52\n");
389
-
390
- /***/ }),
391
- /* 53 */
392
- /***/ (function(module, exports, __webpack_require__) {
393
-
394
- eval("var $export = __webpack_require__(5);\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !__webpack_require__(4), 'Object', { defineProperty: __webpack_require__(3).f });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5kZWZpbmUtcHJvcGVydHkuanM/OTgyOSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuLy8gMTkuMS4yLjQgLyAxNS4yLjMuNiBPYmplY3QuZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcylcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyksICdPYmplY3QnLCB7IGRlZmluZVByb3BlcnR5OiByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mIH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5kZWZpbmUtcHJvcGVydHkuanNcbi8vIG1vZHVsZSBpZCA9IDUzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///53\n");
395
-
396
- /***/ }),
397
- /* 54 */
398
- /***/ (function(module, exports, __webpack_require__) {
399
-
400
- "use strict";
401
- eval("\n\nexports.__esModule = true;\n\nvar _typeof2 = __webpack_require__(33);\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && ((typeof call === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(call)) === \"object\" || typeof call === \"function\") ? call : self;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4uanM/Y2YwYSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF90eXBlb2YyID0gcmVxdWlyZShcIi4uL2hlbHBlcnMvdHlwZW9mXCIpO1xuXG52YXIgX3R5cGVvZjMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF90eXBlb2YyKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKHNlbGYsIGNhbGwpIHtcbiAgaWYgKCFzZWxmKSB7XG4gICAgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO1xuICB9XG5cbiAgcmV0dXJuIGNhbGwgJiYgKCh0eXBlb2YgY2FsbCA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiAoMCwgX3R5cGVvZjMuZGVmYXVsdCkoY2FsbCkpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpID8gY2FsbCA6IHNlbGY7XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuLmpzXG4vLyBtb2R1bGUgaWQgPSA1NFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///54\n");
402
-
403
- /***/ }),
404
- /* 55 */
405
- /***/ (function(module, exports, __webpack_require__) {
406
-
407
- eval("module.exports = { \"default\": __webpack_require__(56), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL3N5bWJvbC9pdGVyYXRvci5qcz82NzM4Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9zeW1ib2wvaXRlcmF0b3JcIiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvc3ltYm9sL2l0ZXJhdG9yLmpzXG4vLyBtb2R1bGUgaWQgPSA1NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///55\n");
408
-
409
- /***/ }),
410
- /* 56 */
411
- /***/ (function(module, exports, __webpack_require__) {
412
-
413
- eval("__webpack_require__(57);\n__webpack_require__(66);\nmodule.exports = __webpack_require__(25).f('iterator');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3N5bWJvbC9pdGVyYXRvci5qcz9mZTdlIl0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvcicpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy93ZWIuZG9tLml0ZXJhYmxlJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX3drcy1leHQnKS5mKCdpdGVyYXRvcicpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3N5bWJvbC9pdGVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gNTZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///56\n");
414
-
415
- /***/ }),
416
- /* 57 */
417
- /***/ (function(module, exports, __webpack_require__) {
418
-
419
- "use strict";
420
- eval("\nvar $at = __webpack_require__(58)(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\n__webpack_require__(34)(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvci5qcz9jZDA0Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciAkYXQgPSByZXF1aXJlKCcuL19zdHJpbmctYXQnKSh0cnVlKTtcblxuLy8gMjEuMS4zLjI3IFN0cmluZy5wcm90b3R5cGVbQEBpdGVyYXRvcl0oKVxucmVxdWlyZSgnLi9faXRlci1kZWZpbmUnKShTdHJpbmcsICdTdHJpbmcnLCBmdW5jdGlvbiAoaXRlcmF0ZWQpIHtcbiAgdGhpcy5fdCA9IFN0cmluZyhpdGVyYXRlZCk7IC8vIHRhcmdldFxuICB0aGlzLl9pID0gMDsgICAgICAgICAgICAgICAgLy8gbmV4dCBpbmRleFxuLy8gMjEuMS41LjIuMSAlU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUlLm5leHQoKVxufSwgZnVuY3Rpb24gKCkge1xuICB2YXIgTyA9IHRoaXMuX3Q7XG4gIHZhciBpbmRleCA9IHRoaXMuX2k7XG4gIHZhciBwb2ludDtcbiAgaWYgKGluZGV4ID49IE8ubGVuZ3RoKSByZXR1cm4geyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH07XG4gIHBvaW50ID0gJGF0KE8sIGluZGV4KTtcbiAgdGhpcy5faSArPSBwb2ludC5sZW5ndGg7XG4gIHJldHVybiB7IHZhbHVlOiBwb2ludCwgZG9uZTogZmFsc2UgfTtcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gNTdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///57\n");
421
-
422
- /***/ }),
423
- /* 58 */
424
- /***/ (function(module, exports, __webpack_require__) {
425
-
426
- eval("var toInteger = __webpack_require__(19);\nvar defined = __webpack_require__(15);\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3N0cmluZy1hdC5qcz84N2FlIl0sInNvdXJjZXNDb250ZW50IjpbInZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbi8vIHRydWUgIC0+IFN0cmluZyNhdFxuLy8gZmFsc2UgLT4gU3RyaW5nI2NvZGVQb2ludEF0XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChUT19TVFJJTkcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh0aGF0LCBwb3MpIHtcbiAgICB2YXIgcyA9IFN0cmluZyhkZWZpbmVkKHRoYXQpKTtcbiAgICB2YXIgaSA9IHRvSW50ZWdlcihwb3MpO1xuICAgIHZhciBsID0gcy5sZW5ndGg7XG4gICAgdmFyIGEsIGI7XG4gICAgaWYgKGkgPCAwIHx8IGkgPj0gbCkgcmV0dXJuIFRPX1NUUklORyA/ICcnIDogdW5kZWZpbmVkO1xuICAgIGEgPSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgcmV0dXJuIGEgPCAweGQ4MDAgfHwgYSA+IDB4ZGJmZiB8fCBpICsgMSA9PT0gbCB8fCAoYiA9IHMuY2hhckNvZGVBdChpICsgMSkpIDwgMHhkYzAwIHx8IGIgPiAweGRmZmZcbiAgICAgID8gVE9fU1RSSU5HID8gcy5jaGFyQXQoaSkgOiBhXG4gICAgICA6IFRPX1NUUklORyA/IHMuc2xpY2UoaSwgaSArIDIpIDogKGEgLSAweGQ4MDAgPDwgMTApICsgKGIgLSAweGRjMDApICsgMHgxMDAwMDtcbiAgfTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc3RyaW5nLWF0LmpzXG4vLyBtb2R1bGUgaWQgPSA1OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///58\n");
427
-
428
- /***/ }),
429
- /* 59 */
430
- /***/ (function(module, exports, __webpack_require__) {
431
-
432
- "use strict";
433
- eval("\nvar create = __webpack_require__(21);\nvar descriptor = __webpack_require__(14);\nvar setToStringTag = __webpack_require__(24);\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n__webpack_require__(6)(IteratorPrototype, __webpack_require__(9)('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItY3JlYXRlLmpzP2Y3ODUiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4vX29iamVjdC1jcmVhdGUnKTtcbnZhciBkZXNjcmlwdG9yID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBJdGVyYXRvclByb3RvdHlwZSA9IHt9O1xuXG4vLyAyNS4xLjIuMS4xICVJdGVyYXRvclByb3RvdHlwZSVbQEBpdGVyYXRvcl0oKVxucmVxdWlyZSgnLi9faGlkZScpKEl0ZXJhdG9yUHJvdG90eXBlLCByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KSB7XG4gIENvbnN0cnVjdG9yLnByb3RvdHlwZSA9IGNyZWF0ZShJdGVyYXRvclByb3RvdHlwZSwgeyBuZXh0OiBkZXNjcmlwdG9yKDEsIG5leHQpIH0pO1xuICBzZXRUb1N0cmluZ1RhZyhDb25zdHJ1Y3RvciwgTkFNRSArICcgSXRlcmF0b3InKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlci1jcmVhdGUuanNcbi8vIG1vZHVsZSBpZCA9IDU5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///59\n");
434
-
435
- /***/ }),
436
- /* 60 */
437
- /***/ (function(module, exports, __webpack_require__) {
438
-
439
- eval("var dP = __webpack_require__(3);\nvar anObject = __webpack_require__(10);\nvar getKeys = __webpack_require__(22);\n\nmodule.exports = __webpack_require__(4) ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1kcHMuanM/YWEyYSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGdldEtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoTywgUHJvcGVydGllcykge1xuICBhbk9iamVjdChPKTtcbiAgdmFyIGtleXMgPSBnZXRLZXlzKFByb3BlcnRpZXMpO1xuICB2YXIgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gIHZhciBpID0gMDtcbiAgdmFyIFA7XG4gIHdoaWxlIChsZW5ndGggPiBpKSBkUC5mKE8sIFAgPSBrZXlzW2krK10sIFByb3BlcnRpZXNbUF0pO1xuICByZXR1cm4gTztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWRwcy5qc1xuLy8gbW9kdWxlIGlkID0gNjBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///60\n");
440
-
441
- /***/ }),
442
- /* 61 */
443
- /***/ (function(module, exports, __webpack_require__) {
444
-
445
- eval("// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(37);\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lvYmplY3QuanM/MzE0ZSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIGFuZCBub24tZW51bWVyYWJsZSBvbGQgVjggc3RyaW5nc1xudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QoJ3onKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKSA/IE9iamVjdCA6IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gY29mKGl0KSA9PSAnU3RyaW5nJyA/IGl0LnNwbGl0KCcnKSA6IE9iamVjdChpdCk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lvYmplY3QuanNcbi8vIG1vZHVsZSBpZCA9IDYxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///61\n");
446
-
447
- /***/ }),
448
- /* 62 */
449
- /***/ (function(module, exports, __webpack_require__) {
450
-
451
- eval("// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = __webpack_require__(8);\nvar toLength = __webpack_require__(63);\nvar toAbsoluteIndex = __webpack_require__(64);\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FycmF5LWluY2x1ZGVzLmpzP2JjNTciXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZmFsc2UgLT4gQXJyYXkjaW5kZXhPZlxuLy8gdHJ1ZSAgLT4gQXJyYXkjaW5jbHVkZXNcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuL190by1hYnNvbHV0ZS1pbmRleCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoSVNfSU5DTFVERVMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgZWwsIGZyb21JbmRleCkge1xuICAgIHZhciBPID0gdG9JT2JqZWN0KCR0aGlzKTtcbiAgICB2YXIgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICAgIHZhciBpbmRleCA9IHRvQWJzb2x1dGVJbmRleChmcm9tSW5kZXgsIGxlbmd0aCk7XG4gICAgdmFyIHZhbHVlO1xuICAgIC8vIEFycmF5I2luY2x1ZGVzIHVzZXMgU2FtZVZhbHVlWmVybyBlcXVhbGl0eSBhbGdvcml0aG1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgaWYgKElTX0lOQ0xVREVTICYmIGVsICE9IGVsKSB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIHtcbiAgICAgIHZhbHVlID0gT1tpbmRleCsrXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICAgIGlmICh2YWx1ZSAhPSB2YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgLy8gQXJyYXkjaW5kZXhPZiBpZ25vcmVzIGhvbGVzLCBBcnJheSNpbmNsdWRlcyAtIG5vdFxuICAgIH0gZWxzZSBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykgaWYgKElTX0lOQ0xVREVTIHx8IGluZGV4IGluIE8pIHtcbiAgICAgIGlmIChPW2luZGV4XSA9PT0gZWwpIHJldHVybiBJU19JTkNMVURFUyB8fCBpbmRleCB8fCAwO1xuICAgIH0gcmV0dXJuICFJU19JTkNMVURFUyAmJiAtMTtcbiAgfTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYXJyYXktaW5jbHVkZXMuanNcbi8vIG1vZHVsZSBpZCA9IDYyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///62\n");
452
-
453
- /***/ }),
454
- /* 63 */
455
- /***/ (function(module, exports, __webpack_require__) {
456
-
457
- eval("// 7.1.15 ToLength\nvar toInteger = __webpack_require__(19);\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWxlbmd0aC5qcz80MTExIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMS4xNSBUb0xlbmd0aFxudmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBtaW4gPSBNYXRoLm1pbjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCA+IDAgPyBtaW4odG9JbnRlZ2VyKGl0KSwgMHgxZmZmZmZmZmZmZmZmZikgOiAwOyAvLyBwb3coMiwgNTMpIC0gMSA9PSA5MDA3MTk5MjU0NzQwOTkxXG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWxlbmd0aC5qc1xuLy8gbW9kdWxlIGlkID0gNjNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///63\n");
458
-
459
- /***/ }),
460
- /* 64 */
461
- /***/ (function(module, exports, __webpack_require__) {
462
-
463
- eval("var toInteger = __webpack_require__(19);\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWFic29sdXRlLWluZGV4LmpzPzdlNDAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBtYXggPSBNYXRoLm1heDtcbnZhciBtaW4gPSBNYXRoLm1pbjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGluZGV4LCBsZW5ndGgpIHtcbiAgaW5kZXggPSB0b0ludGVnZXIoaW5kZXgpO1xuICByZXR1cm4gaW5kZXggPCAwID8gbWF4KGluZGV4ICsgbGVuZ3RoLCAwKSA6IG1pbihpbmRleCwgbGVuZ3RoKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tYWJzb2x1dGUtaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDY0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///64\n");
464
-
465
- /***/ }),
466
- /* 65 */
467
- /***/ (function(module, exports, __webpack_require__) {
468
-
469
- eval("var document = __webpack_require__(1).document;\nmodule.exports = document && document.documentElement;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2h0bWwuanM/NDRmMiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZG9jdW1lbnQgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5kb2N1bWVudDtcbm1vZHVsZS5leHBvcnRzID0gZG9jdW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2h0bWwuanNcbi8vIG1vZHVsZSBpZCA9IDY1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///65\n");
470
-
471
- /***/ }),
472
- /* 66 */
473
- /***/ (function(module, exports, __webpack_require__) {
474
-
475
- eval("__webpack_require__(67);\nvar global = __webpack_require__(1);\nvar hide = __webpack_require__(6);\nvar Iterators = __webpack_require__(20);\nvar TO_STRING_TAG = __webpack_require__(9)('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvd2ViLmRvbS5pdGVyYWJsZS5qcz9mYWQzIl0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4vZXM2LmFycmF5Lml0ZXJhdG9yJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbnZhciBUT19TVFJJTkdfVEFHID0gcmVxdWlyZSgnLi9fd2tzJykoJ3RvU3RyaW5nVGFnJyk7XG5cbnZhciBET01JdGVyYWJsZXMgPSAoJ0NTU1J1bGVMaXN0LENTU1N0eWxlRGVjbGFyYXRpb24sQ1NTVmFsdWVMaXN0LENsaWVudFJlY3RMaXN0LERPTVJlY3RMaXN0LERPTVN0cmluZ0xpc3QsJyArXG4gICdET01Ub2tlbkxpc3QsRGF0YVRyYW5zZmVySXRlbUxpc3QsRmlsZUxpc3QsSFRNTEFsbENvbGxlY3Rpb24sSFRNTENvbGxlY3Rpb24sSFRNTEZvcm1FbGVtZW50LEhUTUxTZWxlY3RFbGVtZW50LCcgK1xuICAnTWVkaWFMaXN0LE1pbWVUeXBlQXJyYXksTmFtZWROb2RlTWFwLE5vZGVMaXN0LFBhaW50UmVxdWVzdExpc3QsUGx1Z2luLFBsdWdpbkFycmF5LFNWR0xlbmd0aExpc3QsU1ZHTnVtYmVyTGlzdCwnICtcbiAgJ1NWR1BhdGhTZWdMaXN0LFNWR1BvaW50TGlzdCxTVkdTdHJpbmdMaXN0LFNWR1RyYW5zZm9ybUxpc3QsU291cmNlQnVmZmVyTGlzdCxTdHlsZVNoZWV0TGlzdCxUZXh0VHJhY2tDdWVMaXN0LCcgK1xuICAnVGV4dFRyYWNrTGlzdCxUb3VjaExpc3QnKS5zcGxpdCgnLCcpO1xuXG5mb3IgKHZhciBpID0gMDsgaSA8IERPTUl0ZXJhYmxlcy5sZW5ndGg7IGkrKykge1xuICB2YXIgTkFNRSA9IERPTUl0ZXJhYmxlc1tpXTtcbiAgdmFyIENvbGxlY3Rpb24gPSBnbG9iYWxbTkFNRV07XG4gIHZhciBwcm90byA9IENvbGxlY3Rpb24gJiYgQ29sbGVjdGlvbi5wcm90b3R5cGU7XG4gIGlmIChwcm90byAmJiAhcHJvdG9bVE9fU1RSSU5HX1RBR10pIGhpZGUocHJvdG8sIFRPX1NUUklOR19UQUcsIE5BTUUpO1xuICBJdGVyYXRvcnNbTkFNRV0gPSBJdGVyYXRvcnMuQXJyYXk7XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy93ZWIuZG9tLml0ZXJhYmxlLmpzXG4vLyBtb2R1bGUgaWQgPSA2NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///66\n");
476
-
477
- /***/ }),
478
- /* 67 */
479
- /***/ (function(module, exports, __webpack_require__) {
480
-
481
- "use strict";
482
- eval("\nvar addToUnscopables = __webpack_require__(68);\nvar step = __webpack_require__(69);\nvar Iterators = __webpack_require__(20);\nvar toIObject = __webpack_require__(8);\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = __webpack_require__(34)(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LmFycmF5Lml0ZXJhdG9yLmpzP2M0NjkiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIGFkZFRvVW5zY29wYWJsZXMgPSByZXF1aXJlKCcuL19hZGQtdG8tdW5zY29wYWJsZXMnKTtcbnZhciBzdGVwID0gcmVxdWlyZSgnLi9faXRlci1zdGVwJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xuXG4vLyAyMi4xLjMuNCBBcnJheS5wcm90b3R5cGUuZW50cmllcygpXG4vLyAyMi4xLjMuMTMgQXJyYXkucHJvdG90eXBlLmtleXMoKVxuLy8gMjIuMS4zLjI5IEFycmF5LnByb3RvdHlwZS52YWx1ZXMoKVxuLy8gMjIuMS4zLjMwIEFycmF5LnByb3RvdHlwZVtAQGl0ZXJhdG9yXSgpXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2l0ZXItZGVmaW5lJykoQXJyYXksICdBcnJheScsIGZ1bmN0aW9uIChpdGVyYXRlZCwga2luZCkge1xuICB0aGlzLl90ID0gdG9JT2JqZWN0KGl0ZXJhdGVkKTsgLy8gdGFyZ2V0XG4gIHRoaXMuX2kgPSAwOyAgICAgICAgICAgICAgICAgICAvLyBuZXh0IGluZGV4XG4gIHRoaXMuX2sgPSBraW5kOyAgICAgICAgICAgICAgICAvLyBraW5kXG4vLyAyMi4xLjUuMi4xICVBcnJheUl0ZXJhdG9yUHJvdG90eXBlJS5uZXh0KClcbn0sIGZ1bmN0aW9uICgpIHtcbiAgdmFyIE8gPSB0aGlzLl90O1xuICB2YXIga2luZCA9IHRoaXMuX2s7XG4gIHZhciBpbmRleCA9IHRoaXMuX2krKztcbiAgaWYgKCFPIHx8IGluZGV4ID49IE8ubGVuZ3RoKSB7XG4gICAgdGhpcy5fdCA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gc3RlcCgxKTtcbiAgfVxuICBpZiAoa2luZCA9PSAna2V5cycpIHJldHVybiBzdGVwKDAsIGluZGV4KTtcbiAgaWYgKGtpbmQgPT0gJ3ZhbHVlcycpIHJldHVybiBzdGVwKDAsIE9baW5kZXhdKTtcbiAgcmV0dXJuIHN0ZXAoMCwgW2luZGV4LCBPW2luZGV4XV0pO1xufSwgJ3ZhbHVlcycpO1xuXG4vLyBhcmd1bWVudHNMaXN0W0BAaXRlcmF0b3JdIGlzICVBcnJheVByb3RvX3ZhbHVlcyUgKDkuNC40LjYsIDkuNC40LjcpXG5JdGVyYXRvcnMuQXJndW1lbnRzID0gSXRlcmF0b3JzLkFycmF5O1xuXG5hZGRUb1Vuc2NvcGFibGVzKCdrZXlzJyk7XG5hZGRUb1Vuc2NvcGFibGVzKCd2YWx1ZXMnKTtcbmFkZFRvVW5zY29wYWJsZXMoJ2VudHJpZXMnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5hcnJheS5pdGVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gNjdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///67\n");
483
-
484
- /***/ }),
485
- /* 68 */
486
- /***/ (function(module, exports) {
487
-
488
- eval("module.exports = function () { /* empty */ };\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FkZC10by11bnNjb3BhYmxlcy5qcz9lMjY3Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FkZC10by11bnNjb3BhYmxlcy5qc1xuLy8gbW9kdWxlIGlkID0gNjhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///68\n");
489
-
490
- /***/ }),
491
- /* 69 */
492
- /***/ (function(module, exports) {
493
-
494
- eval("module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItc3RlcC5qcz8xMDY2Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGRvbmUsIHZhbHVlKSB7XG4gIHJldHVybiB7IHZhbHVlOiB2YWx1ZSwgZG9uZTogISFkb25lIH07XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItc3RlcC5qc1xuLy8gbW9kdWxlIGlkID0gNjlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///69\n");
495
-
496
- /***/ }),
497
- /* 70 */
498
- /***/ (function(module, exports, __webpack_require__) {
499
-
500
- eval("module.exports = { \"default\": __webpack_require__(71), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL3N5bWJvbC5qcz9lNTA1Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9zeW1ib2xcIiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvc3ltYm9sLmpzXG4vLyBtb2R1bGUgaWQgPSA3MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///70\n");
501
-
502
- /***/ }),
503
- /* 71 */
504
- /***/ (function(module, exports, __webpack_require__) {
505
-
506
- eval("__webpack_require__(72);\n__webpack_require__(77);\n__webpack_require__(78);\n__webpack_require__(79);\nmodule.exports = __webpack_require__(0).Symbol;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3N5bWJvbC9pbmRleC5qcz8wNzA3Il0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2LnN5bWJvbCcpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LnRvLXN0cmluZycpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczcuc3ltYm9sLmFzeW5jLWl0ZXJhdG9yJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNy5zeW1ib2wub2JzZXJ2YWJsZScpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuU3ltYm9sO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3N5bWJvbC9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gNzFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///71\n");
507
-
508
- /***/ }),
509
- /* 72 */
510
- /***/ (function(module, exports, __webpack_require__) {
511
-
512
- "use strict";
513
- eval("\n// ECMAScript 6 symbols shim\nvar global = __webpack_require__(1);\nvar has = __webpack_require__(2);\nvar DESCRIPTORS = __webpack_require__(4);\nvar $export = __webpack_require__(5);\nvar redefine = __webpack_require__(35);\nvar META = __webpack_require__(73).KEY;\nvar $fails = __webpack_require__(11);\nvar shared = __webpack_require__(17);\nvar setToStringTag = __webpack_require__(24);\nvar uid = __webpack_require__(13);\nvar wks = __webpack_require__(9);\nvar wksExt = __webpack_require__(25);\nvar wksDefine = __webpack_require__(26);\nvar enumKeys = __webpack_require__(74);\nvar isArray = __webpack_require__(75);\nvar anObject = __webpack_require__(10);\nvar isObject = __webpack_require__(7);\nvar toIObject = __webpack_require__(8);\nvar toPrimitive = __webpack_require__(18);\nvar createDesc = __webpack_require__(14);\nvar _create = __webpack_require__(21);\nvar gOPNExt = __webpack_require__(76);\nvar $GOPD = __webpack_require__(40);\nvar $DP = __webpack_require__(3);\nvar $keys = __webpack_require__(22);\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n __webpack_require__(39).f = gOPNExt.f = $getOwnPropertyNames;\n __webpack_require__(27).f = $propertyIsEnumerable;\n __webpack_require__(38).f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !__webpack_require__(12)) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(6)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnN5bWJvbC5qcz83ZDY3Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIEVDTUFTY3JpcHQgNiBzeW1ib2xzIHNoaW1cbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUnKTtcbnZhciBNRVRBID0gcmVxdWlyZSgnLi9fbWV0YScpLktFWTtcbnZhciAkZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4vX3NoYXJlZCcpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuL191aWQnKTtcbnZhciB3a3MgPSByZXF1aXJlKCcuL193a3MnKTtcbnZhciB3a3NFeHQgPSByZXF1aXJlKCcuL193a3MtZXh0Jyk7XG52YXIgd2tzRGVmaW5lID0gcmVxdWlyZSgnLi9fd2tzLWRlZmluZScpO1xudmFyIGVudW1LZXlzID0gcmVxdWlyZSgnLi9fZW51bS1rZXlzJyk7XG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4vX2lzLWFycmF5Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG52YXIgX2NyZWF0ZSA9IHJlcXVpcmUoJy4vX29iamVjdC1jcmVhdGUnKTtcbnZhciBnT1BORXh0ID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcG4tZXh0Jyk7XG52YXIgJEdPUEQgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wZCcpO1xudmFyICREUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyICRrZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKTtcbnZhciBnT1BEID0gJEdPUEQuZjtcbnZhciBkUCA9ICREUC5mO1xudmFyIGdPUE4gPSBnT1BORXh0LmY7XG52YXIgJFN5bWJvbCA9IGdsb2JhbC5TeW1ib2w7XG52YXIgJEpTT04gPSBnbG9iYWwuSlNPTjtcbnZhciBfc3RyaW5naWZ5ID0gJEpTT04gJiYgJEpTT04uc3RyaW5naWZ5O1xudmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xudmFyIEhJRERFTiA9IHdrcygnX2hpZGRlbicpO1xudmFyIFRPX1BSSU1JVElWRSA9IHdrcygndG9QcmltaXRpdmUnKTtcbnZhciBpc0VudW0gPSB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBTeW1ib2xSZWdpc3RyeSA9IHNoYXJlZCgnc3ltYm9sLXJlZ2lzdHJ5Jyk7XG52YXIgQWxsU3ltYm9scyA9IHNoYXJlZCgnc3ltYm9scycpO1xudmFyIE9QU3ltYm9scyA9IHNoYXJlZCgnb3Atc3ltYm9scycpO1xudmFyIE9iamVjdFByb3RvID0gT2JqZWN0W1BST1RPVFlQRV07XG52YXIgVVNFX05BVElWRSA9IHR5cGVvZiAkU3ltYm9sID09ICdmdW5jdGlvbic7XG52YXIgUU9iamVjdCA9IGdsb2JhbC5RT2JqZWN0O1xuLy8gRG9uJ3QgdXNlIHNldHRlcnMgaW4gUXQgU2NyaXB0LCBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvMTczXG52YXIgc2V0dGVyID0gIVFPYmplY3QgfHwgIVFPYmplY3RbUFJPVE9UWVBFXSB8fCAhUU9iamVjdFtQUk9UT1RZUEVdLmZpbmRDaGlsZDtcblxuLy8gZmFsbGJhY2sgZm9yIG9sZCBBbmRyb2lkLCBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9Njg3XG52YXIgc2V0U3ltYm9sRGVzYyA9IERFU0NSSVBUT1JTICYmICRmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBfY3JlYXRlKGRQKHt9LCAnYScsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGRQKHRoaXMsICdhJywgeyB2YWx1ZTogNyB9KS5hOyB9XG4gIH0pKS5hICE9IDc7XG59KSA/IGZ1bmN0aW9uIChpdCwga2V5LCBEKSB7XG4gIHZhciBwcm90b0Rlc2MgPSBnT1BEKE9iamVjdFByb3RvLCBrZXkpO1xuICBpZiAocHJvdG9EZXNjKSBkZWxldGUgT2JqZWN0UHJvdG9ba2V5XTtcbiAgZFAoaXQsIGtleSwgRCk7XG4gIGlmIChwcm90b0Rlc2MgJiYgaXQgIT09IE9iamVjdFByb3RvKSBkUChPYmplY3RQcm90bywga2V5LCBwcm90b0Rlc2MpO1xufSA6IGRQO1xuXG52YXIgd3JhcCA9IGZ1bmN0aW9uICh0YWcpIHtcbiAgdmFyIHN5bSA9IEFsbFN5bWJvbHNbdGFnXSA9IF9jcmVhdGUoJFN5bWJvbFtQUk9UT1RZUEVdKTtcbiAgc3ltLl9rID0gdGFnO1xuICByZXR1cm4gc3ltO1xufTtcblxudmFyIGlzU3ltYm9sID0gVVNFX05BVElWRSAmJiB0eXBlb2YgJFN5bWJvbC5pdGVyYXRvciA9PSAnc3ltYm9sJyA/IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdHlwZW9mIGl0ID09ICdzeW1ib2wnO1xufSA6IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgaW5zdGFuY2VvZiAkU3ltYm9sO1xufTtcblxudmFyICRkZWZpbmVQcm9wZXJ0eSA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KGl0LCBrZXksIEQpIHtcbiAgaWYgKGl0ID09PSBPYmplY3RQcm90bykgJGRlZmluZVByb3BlcnR5KE9QU3ltYm9scywga2V5LCBEKTtcbiAgYW5PYmplY3QoaXQpO1xuICBrZXkgPSB0b1ByaW1pdGl2ZShrZXksIHRydWUpO1xuICBhbk9iamVjdChEKTtcbiAgaWYgKGhhcyhBbGxTeW1ib2xzLCBrZXkpKSB7XG4gICAgaWYgKCFELmVudW1lcmFibGUpIHtcbiAgICAgIGlmICghaGFzKGl0LCBISURERU4pKSBkUChpdCwgSElEREVOLCBjcmVhdGVEZXNjKDEsIHt9KSk7XG4gICAgICBpdFtISURERU5dW2tleV0gPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaGFzKGl0LCBISURERU4pICYmIGl0W0hJRERFTl1ba2V5XSkgaXRbSElEREVOXVtrZXldID0gZmFsc2U7XG4gICAgICBEID0gX2NyZWF0ZShELCB7IGVudW1lcmFibGU6IGNyZWF0ZURlc2MoMCwgZmFsc2UpIH0pO1xuICAgIH0gcmV0dXJuIHNldFN5bWJvbERlc2MoaXQsIGtleSwgRCk7XG4gIH0gcmV0dXJuIGRQKGl0LCBrZXksIEQpO1xufTtcbnZhciAkZGVmaW5lUHJvcGVydGllcyA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoaXQsIFApIHtcbiAgYW5PYmplY3QoaXQpO1xuICB2YXIga2V5cyA9IGVudW1LZXlzKFAgPSB0b0lPYmplY3QoUCkpO1xuICB2YXIgaSA9IDA7XG4gIHZhciBsID0ga2V5cy5sZW5ndGg7XG4gIHZhciBrZXk7XG4gIHdoaWxlIChsID4gaSkgJGRlZmluZVByb3BlcnR5KGl0LCBrZXkgPSBrZXlzW2krK10sIFBba2V5XSk7XG4gIHJldHVybiBpdDtcbn07XG52YXIgJGNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZShpdCwgUCkge1xuICByZXR1cm4gUCA9PT0gdW5kZWZpbmVkID8gX2NyZWF0ZShpdCkgOiAkZGVmaW5lUHJvcGVydGllcyhfY3JlYXRlKGl0KSwgUCk7XG59O1xudmFyICRwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IGZ1bmN0aW9uIHByb3BlcnR5SXNFbnVtZXJhYmxlKGtleSkge1xuICB2YXIgRSA9IGlzRW51bS5jYWxsKHRoaXMsIGtleSA9IHRvUHJpbWl0aXZlKGtleSwgdHJ1ZSkpO1xuICBpZiAodGhpcyA9PT0gT2JqZWN0UHJvdG8gJiYgaGFzKEFsbFN5bWJvbHMsIGtleSkgJiYgIWhhcyhPUFN5bWJvbHMsIGtleSkpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIEUgfHwgIWhhcyh0aGlzLCBrZXkpIHx8ICFoYXMoQWxsU3ltYm9scywga2V5KSB8fCBoYXModGhpcywgSElEREVOKSAmJiB0aGlzW0hJRERFTl1ba2V5XSA/IEUgOiB0cnVlO1xufTtcbnZhciAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGl0LCBrZXkpIHtcbiAgaXQgPSB0b0lPYmplY3QoaXQpO1xuICBrZXkgPSB0b1ByaW1pdGl2ZShrZXksIHRydWUpO1xuICBpZiAoaXQgPT09IE9iamVjdFByb3RvICYmIGhhcyhBbGxTeW1ib2xzLCBrZXkpICYmICFoYXMoT1BTeW1ib2xzLCBrZXkpKSByZXR1cm47XG4gIHZhciBEID0gZ09QRChpdCwga2V5KTtcbiAgaWYgKEQgJiYgaGFzKEFsbFN5bWJvbHMsIGtleSkgJiYgIShoYXMoaXQsIEhJRERFTikgJiYgaXRbSElEREVOXVtrZXldKSkgRC5lbnVtZXJhYmxlID0gdHJ1ZTtcbiAgcmV0dXJuIEQ7XG59O1xudmFyICRnZXRPd25Qcm9wZXJ0eU5hbWVzID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhpdCkge1xuICB2YXIgbmFtZXMgPSBnT1BOKHRvSU9iamVjdChpdCkpO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHZhciBpID0gMDtcbiAgdmFyIGtleTtcbiAgd2hpbGUgKG5hbWVzLmxlbmd0aCA+IGkpIHtcbiAgICBpZiAoIWhhcyhBbGxTeW1ib2xzLCBrZXkgPSBuYW1lc1tpKytdKSAmJiBrZXkgIT0gSElEREVOICYmIGtleSAhPSBNRVRBKSByZXN1bHQucHVzaChrZXkpO1xuICB9IHJldHVybiByZXN1bHQ7XG59O1xudmFyICRnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaXQpIHtcbiAgdmFyIElTX09QID0gaXQgPT09IE9iamVjdFByb3RvO1xuICB2YXIgbmFtZXMgPSBnT1BOKElTX09QID8gT1BTeW1ib2xzIDogdG9JT2JqZWN0KGl0KSk7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGkgPSAwO1xuICB2YXIga2V5O1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkge1xuICAgIGlmIChoYXMoQWxsU3ltYm9scywga2V5ID0gbmFtZXNbaSsrXSkgJiYgKElTX09QID8gaGFzKE9iamVjdFByb3RvLCBrZXkpIDogdHJ1ZSkpIHJlc3VsdC5wdXNoKEFsbFN5bWJvbHNba2V5XSk7XG4gIH0gcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8vIDE5LjQuMS4xIFN5bWJvbChbZGVzY3JpcHRpb25dKVxuaWYgKCFVU0VfTkFUSVZFKSB7XG4gICRTeW1ib2wgPSBmdW5jdGlvbiBTeW1ib2woKSB7XG4gICAgaWYgKHRoaXMgaW5zdGFuY2VvZiAkU3ltYm9sKSB0aHJvdyBUeXBlRXJyb3IoJ1N5bWJvbCBpcyBub3QgYSBjb25zdHJ1Y3RvciEnKTtcbiAgICB2YXIgdGFnID0gdWlkKGFyZ3VtZW50cy5sZW5ndGggPiAwID8gYXJndW1lbnRzWzBdIDogdW5kZWZpbmVkKTtcbiAgICB2YXIgJHNldCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgaWYgKHRoaXMgPT09IE9iamVjdFByb3RvKSAkc2V0LmNhbGwoT1BTeW1ib2xzLCB2YWx1ZSk7XG4gICAgICBpZiAoaGFzKHRoaXMsIEhJRERFTikgJiYgaGFzKHRoaXNbSElEREVOXSwgdGFnKSkgdGhpc1tISURERU5dW3RhZ10gPSBmYWxzZTtcbiAgICAgIHNldFN5bWJvbERlc2ModGhpcywgdGFnLCBjcmVhdGVEZXNjKDEsIHZhbHVlKSk7XG4gICAgfTtcbiAgICBpZiAoREVTQ1JJUFRPUlMgJiYgc2V0dGVyKSBzZXRTeW1ib2xEZXNjKE9iamVjdFByb3RvLCB0YWcsIHsgY29uZmlndXJhYmxlOiB0cnVlLCBzZXQ6ICRzZXQgfSk7XG4gICAgcmV0dXJuIHdyYXAodGFnKTtcbiAgfTtcbiAgcmVkZWZpbmUoJFN5bWJvbFtQUk9UT1RZUEVdLCAndG9TdHJpbmcnLCBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5faztcbiAgfSk7XG5cbiAgJEdPUEQuZiA9ICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG4gICREUC5mID0gJGRlZmluZVByb3BlcnR5O1xuICByZXF1aXJlKCcuL19vYmplY3QtZ29wbicpLmYgPSBnT1BORXh0LmYgPSAkZ2V0T3duUHJvcGVydHlOYW1lcztcbiAgcmVxdWlyZSgnLi9fb2JqZWN0LXBpZScpLmYgPSAkcHJvcGVydHlJc0VudW1lcmFibGU7XG4gIHJlcXVpcmUoJy4vX29iamVjdC1nb3BzJykuZiA9ICRnZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cbiAgaWYgKERFU0NSSVBUT1JTICYmICFyZXF1aXJlKCcuL19saWJyYXJ5JykpIHtcbiAgICByZWRlZmluZShPYmplY3RQcm90bywgJ3Byb3BlcnR5SXNFbnVtZXJhYmxlJywgJHByb3BlcnR5SXNFbnVtZXJhYmxlLCB0cnVlKTtcbiAgfVxuXG4gIHdrc0V4dC5mID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICByZXR1cm4gd3JhcCh3a3MobmFtZSkpO1xuICB9O1xufVxuXG4kZXhwb3J0KCRleHBvcnQuRyArICRleHBvcnQuVyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCB7IFN5bWJvbDogJFN5bWJvbCB9KTtcblxuZm9yICh2YXIgZXM2U3ltYm9scyA9IChcbiAgLy8gMTkuNC4yLjIsIDE5LjQuMi4zLCAxOS40LjIuNCwgMTkuNC4yLjYsIDE5LjQuMi44LCAxOS40LjIuOSwgMTkuNC4yLjEwLCAxOS40LjIuMTEsIDE5LjQuMi4xMiwgMTkuNC4yLjEzLCAxOS40LjIuMTRcbiAgJ2hhc0luc3RhbmNlLGlzQ29uY2F0U3ByZWFkYWJsZSxpdGVyYXRvcixtYXRjaCxyZXBsYWNlLHNlYXJjaCxzcGVjaWVzLHNwbGl0LHRvUHJpbWl0aXZlLHRvU3RyaW5nVGFnLHVuc2NvcGFibGVzJ1xuKS5zcGxpdCgnLCcpLCBqID0gMDsgZXM2U3ltYm9scy5sZW5ndGggPiBqOyl3a3MoZXM2U3ltYm9sc1tqKytdKTtcblxuZm9yICh2YXIgd2VsbEtub3duU3ltYm9scyA9ICRrZXlzKHdrcy5zdG9yZSksIGsgPSAwOyB3ZWxsS25vd25TeW1ib2xzLmxlbmd0aCA+IGs7KSB3a3NEZWZpbmUod2VsbEtub3duU3ltYm9sc1trKytdKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwgJ1N5bWJvbCcsIHtcbiAgLy8gMTkuNC4yLjEgU3ltYm9sLmZvcihrZXkpXG4gICdmb3InOiBmdW5jdGlvbiAoa2V5KSB7XG4gICAgcmV0dXJuIGhhcyhTeW1ib2xSZWdpc3RyeSwga2V5ICs9ICcnKVxuICAgICAgPyBTeW1ib2xSZWdpc3RyeVtrZXldXG4gICAgICA6IFN5bWJvbFJlZ2lzdHJ5W2tleV0gPSAkU3ltYm9sKGtleSk7XG4gIH0sXG4gIC8vIDE5LjQuMi41IFN5bWJvbC5rZXlGb3Ioc3ltKVxuICBrZXlGb3I6IGZ1bmN0aW9uIGtleUZvcihzeW0pIHtcbiAgICBpZiAoIWlzU3ltYm9sKHN5bSkpIHRocm93IFR5cGVFcnJvcihzeW0gKyAnIGlzIG5vdCBhIHN5bWJvbCEnKTtcbiAgICBmb3IgKHZhciBrZXkgaW4gU3ltYm9sUmVnaXN0cnkpIGlmIChTeW1ib2xSZWdpc3RyeVtrZXldID09PSBzeW0pIHJldHVybiBrZXk7XG4gIH0sXG4gIHVzZVNldHRlcjogZnVuY3Rpb24gKCkgeyBzZXR0ZXIgPSB0cnVlOyB9LFxuICB1c2VTaW1wbGU6IGZ1bmN0aW9uICgpIHsgc2V0dGVyID0gZmFsc2U7IH1cbn0pO1xuXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCAnT2JqZWN0Jywge1xuICAvLyAxOS4xLjIuMiBPYmplY3QuY3JlYXRlKE8gWywgUHJvcGVydGllc10pXG4gIGNyZWF0ZTogJGNyZWF0ZSxcbiAgLy8gMTkuMS4yLjQgT2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpXG4gIGRlZmluZVByb3BlcnR5OiAkZGVmaW5lUHJvcGVydHksXG4gIC8vIDE5LjEuMi4zIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKE8sIFByb3BlcnRpZXMpXG4gIGRlZmluZVByb3BlcnRpZXM6ICRkZWZpbmVQcm9wZXJ0aWVzLFxuICAvLyAxOS4xLjIuNiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApXG4gIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogJGdldE93blByb3BlcnR5RGVzY3JpcHRvcixcbiAgLy8gMTkuMS4yLjcgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoTylcbiAgZ2V0T3duUHJvcGVydHlOYW1lczogJGdldE93blByb3BlcnR5TmFtZXMsXG4gIC8vIDE5LjEuMi44IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoTylcbiAgZ2V0T3duUHJvcGVydHlTeW1ib2xzOiAkZ2V0T3duUHJvcGVydHlTeW1ib2xzXG59KTtcblxuLy8gMjQuMy4yIEpTT04uc3RyaW5naWZ5KHZhbHVlIFssIHJlcGxhY2VyIFssIHNwYWNlXV0pXG4kSlNPTiAmJiAkZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICghVVNFX05BVElWRSB8fCAkZmFpbHMoZnVuY3Rpb24gKCkge1xuICB2YXIgUyA9ICRTeW1ib2woKTtcbiAgLy8gTVMgRWRnZSBjb252ZXJ0cyBzeW1ib2wgdmFsdWVzIHRvIEpTT04gYXMge31cbiAgLy8gV2ViS2l0IGNvbnZlcnRzIHN5bWJvbCB2YWx1ZXMgdG8gSlNPTiBhcyBudWxsXG4gIC8vIFY4IHRocm93cyBvbiBib3hlZCBzeW1ib2xzXG4gIHJldHVybiBfc3RyaW5naWZ5KFtTXSkgIT0gJ1tudWxsXScgfHwgX3N0cmluZ2lmeSh7IGE6IFMgfSkgIT0gJ3t9JyB8fCBfc3RyaW5naWZ5KE9iamVjdChTKSkgIT0gJ3t9Jztcbn0pKSwgJ0pTT04nLCB7XG4gIHN0cmluZ2lmeTogZnVuY3Rpb24gc3RyaW5naWZ5KGl0KSB7XG4gICAgdmFyIGFyZ3MgPSBbaXRdO1xuICAgIHZhciBpID0gMTtcbiAgICB2YXIgcmVwbGFjZXIsICRyZXBsYWNlcjtcbiAgICB3aGlsZSAoYXJndW1lbnRzLmxlbmd0aCA+IGkpIGFyZ3MucHVzaChhcmd1bWVudHNbaSsrXSk7XG4gICAgJHJlcGxhY2VyID0gcmVwbGFjZXIgPSBhcmdzWzFdO1xuICAgIGlmICghaXNPYmplY3QocmVwbGFjZXIpICYmIGl0ID09PSB1bmRlZmluZWQgfHwgaXNTeW1ib2woaXQpKSByZXR1cm47IC8vIElFOCByZXR1cm5zIHN0cmluZyBvbiB1bmRlZmluZWRcbiAgICBpZiAoIWlzQXJyYXkocmVwbGFjZXIpKSByZXBsYWNlciA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgICBpZiAodHlwZW9mICRyZXBsYWNlciA9PSAnZnVuY3Rpb24nKSB2YWx1ZSA9ICRyZXBsYWNlci5jYWxsKHRoaXMsIGtleSwgdmFsdWUpO1xuICAgICAgaWYgKCFpc1N5bWJvbCh2YWx1ZSkpIHJldHVybiB2YWx1ZTtcbiAgICB9O1xuICAgIGFyZ3NbMV0gPSByZXBsYWNlcjtcbiAgICByZXR1cm4gX3N0cmluZ2lmeS5hcHBseSgkSlNPTiwgYXJncyk7XG4gIH1cbn0pO1xuXG4vLyAxOS40LjMuNCBTeW1ib2wucHJvdG90eXBlW0BAdG9QcmltaXRpdmVdKGhpbnQpXG4kU3ltYm9sW1BST1RPVFlQRV1bVE9fUFJJTUlUSVZFXSB8fCByZXF1aXJlKCcuL19oaWRlJykoJFN5bWJvbFtQUk9UT1RZUEVdLCBUT19QUklNSVRJVkUsICRTeW1ib2xbUFJPVE9UWVBFXS52YWx1ZU9mKTtcbi8vIDE5LjQuMy41IFN5bWJvbC5wcm90b3R5cGVbQEB0b1N0cmluZ1RhZ11cbnNldFRvU3RyaW5nVGFnKCRTeW1ib2wsICdTeW1ib2wnKTtcbi8vIDIwLjIuMS45IE1hdGhbQEB0b1N0cmluZ1RhZ11cbnNldFRvU3RyaW5nVGFnKE1hdGgsICdNYXRoJywgdHJ1ZSk7XG4vLyAyNC4zLjMgSlNPTltAQHRvU3RyaW5nVGFnXVxuc2V0VG9TdHJpbmdUYWcoZ2xvYmFsLkpTT04sICdKU09OJywgdHJ1ZSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYuc3ltYm9sLmpzXG4vLyBtb2R1bGUgaWQgPSA3MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///72\n");
514
-
515
- /***/ }),
516
- /* 73 */
517
- /***/ (function(module, exports, __webpack_require__) {
518
-
519
- eval("var META = __webpack_require__(13)('meta');\nvar isObject = __webpack_require__(7);\nvar has = __webpack_require__(2);\nvar setDesc = __webpack_require__(3).f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !__webpack_require__(11)(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX21ldGEuanM/ZDNhMyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgTUVUQSA9IHJlcXVpcmUoJy4vX3VpZCcpKCdtZXRhJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBzZXREZXNjID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZjtcbnZhciBpZCA9IDA7XG52YXIgaXNFeHRlbnNpYmxlID0gT2JqZWN0LmlzRXh0ZW5zaWJsZSB8fCBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0cnVlO1xufTtcbnZhciBGUkVFWkUgPSAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBpc0V4dGVuc2libGUoT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKHt9KSk7XG59KTtcbnZhciBzZXRNZXRhID0gZnVuY3Rpb24gKGl0KSB7XG4gIHNldERlc2MoaXQsIE1FVEEsIHsgdmFsdWU6IHtcbiAgICBpOiAnTycgKyArK2lkLCAvLyBvYmplY3QgSURcbiAgICB3OiB7fSAgICAgICAgICAvLyB3ZWFrIGNvbGxlY3Rpb25zIElEc1xuICB9IH0pO1xufTtcbnZhciBmYXN0S2V5ID0gZnVuY3Rpb24gKGl0LCBjcmVhdGUpIHtcbiAgLy8gcmV0dXJuIHByaW1pdGl2ZSB3aXRoIHByZWZpeFxuICBpZiAoIWlzT2JqZWN0KGl0KSkgcmV0dXJuIHR5cGVvZiBpdCA9PSAnc3ltYm9sJyA/IGl0IDogKHR5cGVvZiBpdCA9PSAnc3RyaW5nJyA/ICdTJyA6ICdQJykgKyBpdDtcbiAgaWYgKCFoYXMoaXQsIE1FVEEpKSB7XG4gICAgLy8gY2FuJ3Qgc2V0IG1ldGFkYXRhIHRvIHVuY2F1Z2h0IGZyb3plbiBvYmplY3RcbiAgICBpZiAoIWlzRXh0ZW5zaWJsZShpdCkpIHJldHVybiAnRic7XG4gICAgLy8gbm90IG5lY2Vzc2FyeSB0byBhZGQgbWV0YWRhdGFcbiAgICBpZiAoIWNyZWF0ZSkgcmV0dXJuICdFJztcbiAgICAvLyBhZGQgbWlzc2luZyBtZXRhZGF0YVxuICAgIHNldE1ldGEoaXQpO1xuICAvLyByZXR1cm4gb2JqZWN0IElEXG4gIH0gcmV0dXJuIGl0W01FVEFdLmk7XG59O1xudmFyIGdldFdlYWsgPSBmdW5jdGlvbiAoaXQsIGNyZWF0ZSkge1xuICBpZiAoIWhhcyhpdCwgTUVUQSkpIHtcbiAgICAvLyBjYW4ndCBzZXQgbWV0YWRhdGEgdG8gdW5jYXVnaHQgZnJvemVuIG9iamVjdFxuICAgIGlmICghaXNFeHRlbnNpYmxlKGl0KSkgcmV0dXJuIHRydWU7XG4gICAgLy8gbm90IG5lY2Vzc2FyeSB0byBhZGQgbWV0YWRhdGFcbiAgICBpZiAoIWNyZWF0ZSkgcmV0dXJuIGZhbHNlO1xuICAgIC8vIGFkZCBtaXNzaW5nIG1ldGFkYXRhXG4gICAgc2V0TWV0YShpdCk7XG4gIC8vIHJldHVybiBoYXNoIHdlYWsgY29sbGVjdGlvbnMgSURzXG4gIH0gcmV0dXJuIGl0W01FVEFdLnc7XG59O1xuLy8gYWRkIG1ldGFkYXRhIG9uIGZyZWV6ZS1mYW1pbHkgbWV0aG9kcyBjYWxsaW5nXG52YXIgb25GcmVlemUgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKEZSRUVaRSAmJiBtZXRhLk5FRUQgJiYgaXNFeHRlbnNpYmxlKGl0KSAmJiAhaGFzKGl0LCBNRVRBKSkgc2V0TWV0YShpdCk7XG4gIHJldHVybiBpdDtcbn07XG52YXIgbWV0YSA9IG1vZHVsZS5leHBvcnRzID0ge1xuICBLRVk6IE1FVEEsXG4gIE5FRUQ6IGZhbHNlLFxuICBmYXN0S2V5OiBmYXN0S2V5LFxuICBnZXRXZWFrOiBnZXRXZWFrLFxuICBvbkZyZWV6ZTogb25GcmVlemVcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fbWV0YS5qc1xuLy8gbW9kdWxlIGlkID0gNzNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///73\n");
520
-
521
- /***/ }),
522
- /* 74 */
523
- /***/ (function(module, exports, __webpack_require__) {
524
-
525
- eval("// all enumerable object keys, includes symbols\nvar getKeys = __webpack_require__(22);\nvar gOPS = __webpack_require__(38);\nvar pIE = __webpack_require__(27);\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2VudW0ta2V5cy5qcz81ZGNlIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGFsbCBlbnVtZXJhYmxlIG9iamVjdCBrZXlzLCBpbmNsdWRlcyBzeW1ib2xzXG52YXIgZ2V0S2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzJyk7XG52YXIgZ09QUyA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BzJyk7XG52YXIgcElFID0gcmVxdWlyZSgnLi9fb2JqZWN0LXBpZScpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIHJlc3VsdCA9IGdldEtleXMoaXQpO1xuICB2YXIgZ2V0U3ltYm9scyA9IGdPUFMuZjtcbiAgaWYgKGdldFN5bWJvbHMpIHtcbiAgICB2YXIgc3ltYm9scyA9IGdldFN5bWJvbHMoaXQpO1xuICAgIHZhciBpc0VudW0gPSBwSUUuZjtcbiAgICB2YXIgaSA9IDA7XG4gICAgdmFyIGtleTtcbiAgICB3aGlsZSAoc3ltYm9scy5sZW5ndGggPiBpKSBpZiAoaXNFbnVtLmNhbGwoaXQsIGtleSA9IHN5bWJvbHNbaSsrXSkpIHJlc3VsdC5wdXNoKGtleSk7XG4gIH0gcmV0dXJuIHJlc3VsdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZW51bS1rZXlzLmpzXG4vLyBtb2R1bGUgaWQgPSA3NFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///74\n");
526
-
527
- /***/ }),
528
- /* 75 */
529
- /***/ (function(module, exports, __webpack_require__) {
530
-
531
- eval("// 7.2.2 IsArray(argument)\nvar cof = __webpack_require__(37);\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLWFycmF5LmpzP2VkNDMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gNy4yLjIgSXNBcnJheShhcmd1bWVudClcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbm1vZHVsZS5leHBvcnRzID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiBpc0FycmF5KGFyZykge1xuICByZXR1cm4gY29mKGFyZykgPT0gJ0FycmF5Jztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtYXJyYXkuanNcbi8vIG1vZHVsZSBpZCA9IDc1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///75\n");
532
-
533
- /***/ }),
534
- /* 76 */
535
- /***/ (function(module, exports, __webpack_require__) {
536
-
537
- eval("// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = __webpack_require__(8);\nvar gOPN = __webpack_require__(39).f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BuLWV4dC5qcz80NmI3Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGZhbGxiYWNrIGZvciBJRTExIGJ1Z2d5IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzIHdpdGggaWZyYW1lIGFuZCB3aW5kb3dcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgZ09QTiA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BuJykuZjtcbnZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG52YXIgd2luZG93TmFtZXMgPSB0eXBlb2Ygd2luZG93ID09ICdvYmplY3QnICYmIHdpbmRvdyAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc1xuICA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHdpbmRvdykgOiBbXTtcblxudmFyIGdldFdpbmRvd05hbWVzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGdPUE4oaXQpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIHdpbmRvd05hbWVzLnNsaWNlKCk7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzLmYgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKGl0KSB7XG4gIHJldHVybiB3aW5kb3dOYW1lcyAmJiB0b1N0cmluZy5jYWxsKGl0KSA9PSAnW29iamVjdCBXaW5kb3ddJyA/IGdldFdpbmRvd05hbWVzKGl0KSA6IGdPUE4odG9JT2JqZWN0KGl0KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BuLWV4dC5qc1xuLy8gbW9kdWxlIGlkID0gNzZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///76\n");
538
-
539
- /***/ }),
540
- /* 77 */
541
- /***/ (function(module, exports) {
542
-
543
- eval("//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzcuanMiLCJzb3VyY2VzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///77\n");
544
-
545
- /***/ }),
546
- /* 78 */
547
- /***/ (function(module, exports, __webpack_require__) {
548
-
549
- eval("__webpack_require__(26)('asyncIterator');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnN5bWJvbC5hc3luYy1pdGVyYXRvci5qcz8zOTg5Il0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4vX3drcy1kZWZpbmUnKSgnYXN5bmNJdGVyYXRvcicpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnN5bWJvbC5hc3luYy1pdGVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gNzhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///78\n");
550
-
551
- /***/ }),
552
- /* 79 */
553
- /***/ (function(module, exports, __webpack_require__) {
554
-
555
- eval("__webpack_require__(26)('observable');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnN5bWJvbC5vYnNlcnZhYmxlLmpzPzQxNjciXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi9fd2tzLWRlZmluZScpKCdvYnNlcnZhYmxlJyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczcuc3ltYm9sLm9ic2VydmFibGUuanNcbi8vIG1vZHVsZSBpZCA9IDc5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///79\n");
556
-
557
- /***/ }),
558
- /* 80 */
559
- /***/ (function(module, exports, __webpack_require__) {
560
-
561
- "use strict";
562
- eval("\n\nexports.__esModule = true;\n\nvar _setPrototypeOf = __webpack_require__(81);\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _create = __webpack_require__(85);\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = __webpack_require__(33);\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(superClass)));\n }\n\n subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2luaGVyaXRzLmpzPzNkZmQiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfc2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKFwiLi4vY29yZS1qcy9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZlwiKTtcblxudmFyIF9zZXRQcm90b3R5cGVPZjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zZXRQcm90b3R5cGVPZik7XG5cbnZhciBfY3JlYXRlID0gcmVxdWlyZShcIi4uL2NvcmUtanMvb2JqZWN0L2NyZWF0ZVwiKTtcblxudmFyIF9jcmVhdGUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY3JlYXRlKTtcblxudmFyIF90eXBlb2YyID0gcmVxdWlyZShcIi4uL2hlbHBlcnMvdHlwZW9mXCIpO1xuXG52YXIgX3R5cGVvZjMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF90eXBlb2YyKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7XG4gIGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIiArICh0eXBlb2Ygc3VwZXJDbGFzcyA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiAoMCwgX3R5cGVvZjMuZGVmYXVsdCkoc3VwZXJDbGFzcykpKTtcbiAgfVxuXG4gIHN1YkNsYXNzLnByb3RvdHlwZSA9ICgwLCBfY3JlYXRlMi5kZWZhdWx0KShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7XG4gICAgY29uc3RydWN0b3I6IHtcbiAgICAgIHZhbHVlOiBzdWJDbGFzcyxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9XG4gIH0pO1xuICBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mMi5kZWZhdWx0ID8gKDAsIF9zZXRQcm90b3R5cGVPZjIuZGVmYXVsdCkoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzcztcbn07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2luaGVyaXRzLmpzXG4vLyBtb2R1bGUgaWQgPSA4MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///80\n");
563
-
564
- /***/ }),
565
- /* 81 */
566
- /***/ (function(module, exports, __webpack_require__) {
567
-
568
- eval("module.exports = { \"default\": __webpack_require__(82), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9zZXQtcHJvdG90eXBlLW9mLmpzPzkyMjAiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9zZXQtcHJvdG90eXBlLW9mXCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9zZXQtcHJvdG90eXBlLW9mLmpzXG4vLyBtb2R1bGUgaWQgPSA4MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///81\n");
569
-
570
- /***/ }),
571
- /* 82 */
572
- /***/ (function(module, exports, __webpack_require__) {
573
-
574
- eval("__webpack_require__(83);\nmodule.exports = __webpack_require__(0).Object.setPrototypeOf;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9zZXQtcHJvdG90eXBlLW9mLmpzPzhiZjAiXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LnNldC1wcm90b3R5cGUtb2YnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpLk9iamVjdC5zZXRQcm90b3R5cGVPZjtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZi5qc1xuLy8gbW9kdWxlIGlkID0gODJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///82\n");
575
-
576
- /***/ }),
577
- /* 83 */
578
- /***/ (function(module, exports, __webpack_require__) {
579
-
580
- eval("// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = __webpack_require__(5);\n$export($export.S, 'Object', { setPrototypeOf: __webpack_require__(84).set });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5zZXQtcHJvdG90eXBlLW9mLmpzPzdiMTgiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4zLjE5IE9iamVjdC5zZXRQcm90b3R5cGVPZihPLCBwcm90bylcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG4kZXhwb3J0KCRleHBvcnQuUywgJ09iamVjdCcsIHsgc2V0UHJvdG90eXBlT2Y6IHJlcXVpcmUoJy4vX3NldC1wcm90bycpLnNldCB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3Quc2V0LXByb3RvdHlwZS1vZi5qc1xuLy8gbW9kdWxlIGlkID0gODNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///83\n");
581
-
582
- /***/ }),
583
- /* 84 */
584
- /***/ (function(module, exports, __webpack_require__) {
585
-
586
- eval("// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = __webpack_require__(7);\nvar anObject = __webpack_require__(10);\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = __webpack_require__(30)(Function.call, __webpack_require__(40).f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NldC1wcm90by5qcz82NWE0Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFdvcmtzIHdpdGggX19wcm90b19fIG9ubHkuIE9sZCB2OCBjYW4ndCB3b3JrIHdpdGggbnVsbCBwcm90byBvYmplY3RzLlxuLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG8gKi9cbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgY2hlY2sgPSBmdW5jdGlvbiAoTywgcHJvdG8pIHtcbiAgYW5PYmplY3QoTyk7XG4gIGlmICghaXNPYmplY3QocHJvdG8pICYmIHByb3RvICE9PSBudWxsKSB0aHJvdyBUeXBlRXJyb3IocHJvdG8gKyBcIjogY2FuJ3Qgc2V0IGFzIHByb3RvdHlwZSFcIik7XG59O1xubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHNldDogT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8ICgnX19wcm90b19fJyBpbiB7fSA/IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgICBmdW5jdGlvbiAodGVzdCwgYnVnZ3ksIHNldCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgc2V0ID0gcmVxdWlyZSgnLi9fY3R4JykoRnVuY3Rpb24uY2FsbCwgcmVxdWlyZSgnLi9fb2JqZWN0LWdvcGQnKS5mKE9iamVjdC5wcm90b3R5cGUsICdfX3Byb3RvX18nKS5zZXQsIDIpO1xuICAgICAgICBzZXQodGVzdCwgW10pO1xuICAgICAgICBidWdneSA9ICEodGVzdCBpbnN0YW5jZW9mIEFycmF5KTtcbiAgICAgIH0gY2F0Y2ggKGUpIHsgYnVnZ3kgPSB0cnVlOyB9XG4gICAgICByZXR1cm4gZnVuY3Rpb24gc2V0UHJvdG90eXBlT2YoTywgcHJvdG8pIHtcbiAgICAgICAgY2hlY2soTywgcHJvdG8pO1xuICAgICAgICBpZiAoYnVnZ3kpIE8uX19wcm90b19fID0gcHJvdG87XG4gICAgICAgIGVsc2Ugc2V0KE8sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIE87XG4gICAgICB9O1xuICAgIH0oe30sIGZhbHNlKSA6IHVuZGVmaW5lZCksXG4gIGNoZWNrOiBjaGVja1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zZXQtcHJvdG8uanNcbi8vIG1vZHVsZSBpZCA9IDg0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///84\n");
587
-
588
- /***/ }),
589
- /* 85 */
590
- /***/ (function(module, exports, __webpack_require__) {
591
-
592
- eval("module.exports = { \"default\": __webpack_require__(86), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9jcmVhdGUuanM/M2FmNCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L2NyZWF0ZVwiKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvY3JlYXRlLmpzXG4vLyBtb2R1bGUgaWQgPSA4NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///85\n");
593
-
594
- /***/ }),
595
- /* 86 */
596
- /***/ (function(module, exports, __webpack_require__) {
597
-
598
- eval("__webpack_require__(87);\nvar $Object = __webpack_require__(0).Object;\nmodule.exports = function create(P, D) {\n return $Object.create(P, D);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9jcmVhdGUuanM/YTBjZSJdLCJzb3VyY2VzQ29udGVudCI6WyJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5vYmplY3QuY3JlYXRlJyk7XG52YXIgJE9iamVjdCA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5PYmplY3Q7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGNyZWF0ZShQLCBEKSB7XG4gIHJldHVybiAkT2JqZWN0LmNyZWF0ZShQLCBEKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L2NyZWF0ZS5qc1xuLy8gbW9kdWxlIGlkID0gODZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///86\n");
599
-
600
- /***/ }),
601
- /* 87 */
602
- /***/ (function(module, exports, __webpack_require__) {
603
-
604
- eval("var $export = __webpack_require__(5);\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: __webpack_require__(21) });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5jcmVhdGUuanM/YjA1ZiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuLy8gMTkuMS4yLjIgLyAxNS4yLjMuNSBPYmplY3QuY3JlYXRlKE8gWywgUHJvcGVydGllc10pXG4kZXhwb3J0KCRleHBvcnQuUywgJ09iamVjdCcsIHsgY3JlYXRlOiByZXF1aXJlKCcuL19vYmplY3QtY3JlYXRlJykgfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYub2JqZWN0LmNyZWF0ZS5qc1xuLy8gbW9kdWxlIGlkID0gODdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///87\n");
605
-
606
- /***/ })
607
- /******/ ]);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/builders/gutenberg/assets/js/dist/wpglobus-block-editor.min.js DELETED
@@ -1 +0,0 @@
1
- !function(c){var t={};function l(e){if(t[e])return t[e].exports;var n=t[e]={i:e,l:!1,exports:{}};return c[e].call(n.exports,n,n.exports,l),n.l=!0,n.exports}l.m=c,l.c=t,l.d=function(e,n,c){l.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:c})},l.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return l.d(n,"a",n),n},l.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},l.p="",l(l.s=41)}([function(module,exports){eval("var core = module.exports = { version: '2.6.5' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY29yZS5qcz8xNWUwIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBjb3JlID0gbW9kdWxlLmV4cG9ydHMgPSB7IHZlcnNpb246ICcyLjYuNScgfTtcbmlmICh0eXBlb2YgX19lID09ICdudW1iZXInKSBfX2UgPSBjb3JlOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY29yZS5qc1xuLy8gbW9kdWxlIGlkID0gMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///0\n")},function(module,exports){eval("// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZ2xvYmFsLmpzP2VjYWIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg2I2lzc3VlY29tbWVudC0xMTU3NTkwMjhcbnZhciBnbG9iYWwgPSBtb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiB3aW5kb3cgIT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93Lk1hdGggPT0gTWF0aFxuICA/IHdpbmRvdyA6IHR5cGVvZiBzZWxmICE9ICd1bmRlZmluZWQnICYmIHNlbGYuTWF0aCA9PSBNYXRoID8gc2VsZlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmNcbiAgOiBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuaWYgKHR5cGVvZiBfX2cgPT0gJ251bWJlcicpIF9fZyA9IGdsb2JhbDsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2dsb2JhbC5qc1xuLy8gbW9kdWxlIGlkID0gMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///1\n")},function(module,exports){eval("var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faGFzLmpzPzBmNjIiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGl0LCBrZXkpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19oYXMuanNcbi8vIG1vZHVsZSBpZCA9IDJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///2\n")},function(module,exports,__webpack_require__){eval("var anObject = __webpack_require__(10);\nvar IE8_DOM_DEFINE = __webpack_require__(31);\nvar toPrimitive = __webpack_require__(18);\nvar dP = Object.defineProperty;\n\nexports.f = __webpack_require__(4) ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWRwLmpzPzdhZjAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuL19pZTgtZG9tLWRlZmluZScpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJyk7XG52YXIgZFAgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG5cbmV4cG9ydHMuZiA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuIGRQKE8sIFAsIEF0dHJpYnV0ZXMpO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKCdnZXQnIGluIEF0dHJpYnV0ZXMgfHwgJ3NldCcgaW4gQXR0cmlidXRlcykgdGhyb3cgVHlwZUVycm9yKCdBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCEnKTtcbiAgaWYgKCd2YWx1ZScgaW4gQXR0cmlidXRlcykgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZHAuanNcbi8vIG1vZHVsZSBpZCA9IDNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///3\n")},function(module,exports,__webpack_require__){eval("// Thank's IE8 for his funny defineProperty\nmodule.exports = !__webpack_require__(11)(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZGVzY3JpcHRvcnMuanM/Zjg0ZCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGFuaydzIElFOCBmb3IgaGlzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kZXNjcmlwdG9ycy5qc1xuLy8gbW9kdWxlIGlkID0gNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///4\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(1);\nvar core = __webpack_require__(0);\nvar ctx = __webpack_require__(30);\nvar hide = __webpack_require__(6);\nvar has = __webpack_require__(2);\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZXhwb3J0LmpzPzkwY2QiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcblxudmFyICRleHBvcnQgPSBmdW5jdGlvbiAodHlwZSwgbmFtZSwgc291cmNlKSB7XG4gIHZhciBJU19GT1JDRUQgPSB0eXBlICYgJGV4cG9ydC5GO1xuICB2YXIgSVNfR0xPQkFMID0gdHlwZSAmICRleHBvcnQuRztcbiAgdmFyIElTX1NUQVRJQyA9IHR5cGUgJiAkZXhwb3J0LlM7XG4gIHZhciBJU19QUk9UTyA9IHR5cGUgJiAkZXhwb3J0LlA7XG4gIHZhciBJU19CSU5EID0gdHlwZSAmICRleHBvcnQuQjtcbiAgdmFyIElTX1dSQVAgPSB0eXBlICYgJGV4cG9ydC5XO1xuICB2YXIgZXhwb3J0cyA9IElTX0dMT0JBTCA/IGNvcmUgOiBjb3JlW25hbWVdIHx8IChjb3JlW25hbWVdID0ge30pO1xuICB2YXIgZXhwUHJvdG8gPSBleHBvcnRzW1BST1RPVFlQRV07XG4gIHZhciB0YXJnZXQgPSBJU19HTE9CQUwgPyBnbG9iYWwgOiBJU19TVEFUSUMgPyBnbG9iYWxbbmFtZV0gOiAoZ2xvYmFsW25hbWVdIHx8IHt9KVtQUk9UT1RZUEVdO1xuICB2YXIga2V5LCBvd24sIG91dDtcbiAgaWYgKElTX0dMT0JBTCkgc291cmNlID0gbmFtZTtcbiAgZm9yIChrZXkgaW4gc291cmNlKSB7XG4gICAgLy8gY29udGFpbnMgaW4gbmF0aXZlXG4gICAgb3duID0gIUlTX0ZPUkNFRCAmJiB0YXJnZXQgJiYgdGFyZ2V0W2tleV0gIT09IHVuZGVmaW5lZDtcbiAgICBpZiAob3duICYmIGhhcyhleHBvcnRzLCBrZXkpKSBjb250aW51ZTtcbiAgICAvLyBleHBvcnQgbmF0aXZlIG9yIHBhc3NlZFxuICAgIG91dCA9IG93biA/IHRhcmdldFtrZXldIDogc291cmNlW2tleV07XG4gICAgLy8gcHJldmVudCBnbG9iYWwgcG9sbHV0aW9uIGZvciBuYW1lc3BhY2VzXG4gICAgZXhwb3J0c1trZXldID0gSVNfR0xPQkFMICYmIHR5cGVvZiB0YXJnZXRba2V5XSAhPSAnZnVuY3Rpb24nID8gc291cmNlW2tleV1cbiAgICAvLyBiaW5kIHRpbWVycyB0byBnbG9iYWwgZm9yIGNhbGwgZnJvbSBleHBvcnQgY29udGV4dFxuICAgIDogSVNfQklORCAmJiBvd24gPyBjdHgob3V0LCBnbG9iYWwpXG4gICAgLy8gd3JhcCBnbG9iYWwgY29uc3RydWN0b3JzIGZvciBwcmV2ZW50IGNoYW5nZSB0aGVtIGluIGxpYnJhcnlcbiAgICA6IElTX1dSQVAgJiYgdGFyZ2V0W2tleV0gPT0gb3V0ID8gKGZ1bmN0aW9uIChDKSB7XG4gICAgICB2YXIgRiA9IGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgQykge1xuICAgICAgICAgIHN3aXRjaCAoYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gbmV3IEMoKTtcbiAgICAgICAgICAgIGNhc2UgMTogcmV0dXJuIG5ldyBDKGEpO1xuICAgICAgICAgICAgY2FzZSAyOiByZXR1cm4gbmV3IEMoYSwgYik7XG4gICAgICAgICAgfSByZXR1cm4gbmV3IEMoYSwgYiwgYyk7XG4gICAgICAgIH0gcmV0dXJuIEMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH07XG4gICAgICBGW1BST1RPVFlQRV0gPSBDW1BST1RPVFlQRV07XG4gICAgICByZXR1cm4gRjtcbiAgICAvLyBtYWtlIHN0YXRpYyB2ZXJzaW9ucyBmb3IgcHJvdG90eXBlIG1ldGhvZHNcbiAgICB9KShvdXQpIDogSVNfUFJPVE8gJiYgdHlwZW9mIG91dCA9PSAnZnVuY3Rpb24nID8gY3R4KEZ1bmN0aW9uLmNhbGwsIG91dCkgOiBvdXQ7XG4gICAgLy8gZXhwb3J0IHByb3RvIG1ldGhvZHMgdG8gY29yZS4lQ09OU1RSVUNUT1IlLm1ldGhvZHMuJU5BTUUlXG4gICAgaWYgKElTX1BST1RPKSB7XG4gICAgICAoZXhwb3J0cy52aXJ0dWFsIHx8IChleHBvcnRzLnZpcnR1YWwgPSB7fSkpW2tleV0gPSBvdXQ7XG4gICAgICAvLyBleHBvcnQgcHJvdG8gbWV0aG9kcyB0byBjb3JlLiVDT05TVFJVQ1RPUiUucHJvdG90eXBlLiVOQU1FJVxuICAgICAgaWYgKHR5cGUgJiAkZXhwb3J0LlIgJiYgZXhwUHJvdG8gJiYgIWV4cFByb3RvW2tleV0pIGhpZGUoZXhwUHJvdG8sIGtleSwgb3V0KTtcbiAgICB9XG4gIH1cbn07XG4vLyB0eXBlIGJpdG1hcFxuJGV4cG9ydC5GID0gMTsgICAvLyBmb3JjZWRcbiRleHBvcnQuRyA9IDI7ICAgLy8gZ2xvYmFsXG4kZXhwb3J0LlMgPSA0OyAgIC8vIHN0YXRpY1xuJGV4cG9ydC5QID0gODsgICAvLyBwcm90b1xuJGV4cG9ydC5CID0gMTY7ICAvLyBiaW5kXG4kZXhwb3J0LlcgPSAzMjsgIC8vIHdyYXBcbiRleHBvcnQuVSA9IDY0OyAgLy8gc2FmZVxuJGV4cG9ydC5SID0gMTI4OyAvLyByZWFsIHByb3RvIG1ldGhvZCBmb3IgYGxpYnJhcnlgXG5tb2R1bGUuZXhwb3J0cyA9ICRleHBvcnQ7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZXhwb3J0LmpzXG4vLyBtb2R1bGUgaWQgPSA1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///5\n")},function(module,exports,__webpack_require__){eval("var dP = __webpack_require__(3);\nvar createDesc = __webpack_require__(14);\nmodule.exports = __webpack_require__(4) ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faGlkZS5qcz84NDljIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHJldHVybiBkUC5mKG9iamVjdCwga2V5LCBjcmVhdGVEZXNjKDEsIHZhbHVlKSk7XG59IDogZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19oaWRlLmpzXG4vLyBtb2R1bGUgaWQgPSA2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///6\n")},function(module,exports){eval("module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtb2JqZWN0LmpzPzEyYTgiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IHR5cGVvZiBpdCA9PT0gJ2Z1bmN0aW9uJztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtb2JqZWN0LmpzXG4vLyBtb2R1bGUgaWQgPSA3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///7\n")},function(module,exports,__webpack_require__){eval("// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(61);\nvar defined = __webpack_require__(15);\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8taW9iamVjdC5qcz80ZGM0Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIHRvIGluZGV4ZWQgb2JqZWN0LCB0b09iamVjdCB3aXRoIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgc3RyaW5nc1xudmFyIElPYmplY3QgPSByZXF1aXJlKCcuL19pb2JqZWN0Jyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBJT2JqZWN0KGRlZmluZWQoaXQpKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8taW9iamVjdC5qc1xuLy8gbW9kdWxlIGlkID0gOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///8\n")},function(module,exports,__webpack_require__){eval("var store = __webpack_require__(17)('wks');\nvar uid = __webpack_require__(13);\nvar Symbol = __webpack_require__(1).Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fd2tzLmpzPzc1MmMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHN0b3JlID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ3drcycpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4vX3VpZCcpO1xudmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLlN5bWJvbDtcbnZhciBVU0VfU1lNQk9MID0gdHlwZW9mIFN5bWJvbCA9PSAnZnVuY3Rpb24nO1xuXG52YXIgJGV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHJldHVybiBzdG9yZVtuYW1lXSB8fCAoc3RvcmVbbmFtZV0gPVxuICAgIFVTRV9TWU1CT0wgJiYgU3ltYm9sW25hbWVdIHx8IChVU0VfU1lNQk9MID8gU3ltYm9sIDogdWlkKSgnU3ltYm9sLicgKyBuYW1lKSk7XG59O1xuXG4kZXhwb3J0cy5zdG9yZSA9IHN0b3JlO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3drcy5qc1xuLy8gbW9kdWxlIGlkID0gOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///9\n")},function(module,exports,__webpack_require__){eval("var isObject = __webpack_require__(7);\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FuLW9iamVjdC5qcz9lZmIzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKCFpc09iamVjdChpdCkpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGFuIG9iamVjdCEnKTtcbiAgcmV0dXJuIGl0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hbi1vYmplY3QuanNcbi8vIG1vZHVsZSBpZCA9IDEwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///10\n")},function(module,exports){eval("module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ZhaWxzLmpzPzRiY2QiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ZhaWxzLmpzXG4vLyBtb2R1bGUgaWQgPSAxMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///11\n")},function(module,exports){eval("module.exports = true;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2xpYnJhcnkuanM/M2I4OCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHRydWU7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fbGlicmFyeS5qc1xuLy8gbW9kdWxlIGlkID0gMTJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///12\n")},function(module,exports){eval("var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3VpZC5qcz9kYzRhIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBpZCA9IDA7XG52YXIgcHggPSBNYXRoLnJhbmRvbSgpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiAnU3ltYm9sKCcuY29uY2F0KGtleSA9PT0gdW5kZWZpbmVkID8gJycgOiBrZXksICcpXycsICgrK2lkICsgcHgpLnRvU3RyaW5nKDM2KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3VpZC5qc1xuLy8gbW9kdWxlIGlkID0gMTNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///13\n")},function(module,exports){eval("module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb3BlcnR5LWRlc2MuanM/NWZjMCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChiaXRtYXAsIHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgZW51bWVyYWJsZTogIShiaXRtYXAgJiAxKSxcbiAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG4gICAgd3JpdGFibGU6ICEoYml0bWFwICYgNCksXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb3BlcnR5LWRlc2MuanNcbi8vIG1vZHVsZSBpZCA9IDE0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///14\n")},function(module,exports){eval('// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError("Can\'t call method on " + it);\n return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RlZmluZWQuanM/ZTc2OCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjIuMSBSZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGFyZ3VtZW50KVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGl0ID09IHVuZGVmaW5lZCkgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gIFwiICsgaXQpO1xuICByZXR1cm4gaXQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RlZmluZWQuanNcbi8vIG1vZHVsZSBpZCA9IDE1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///15\n')},function(module,exports,__webpack_require__){eval("var shared = __webpack_require__(17)('keys');\nvar uid = __webpack_require__(13);\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC1rZXkuanM/NmIxZCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgc2hhcmVkID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ2tleXMnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuL191aWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gc2hhcmVkW2tleV0gfHwgKHNoYXJlZFtrZXldID0gdWlkKGtleSkpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zaGFyZWQta2V5LmpzXG4vLyBtb2R1bGUgaWQgPSAxNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///16\n")},function(module,exports,__webpack_require__){eval("var core = __webpack_require__(0);\nvar global = __webpack_require__(1);\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: __webpack_require__(12) ? 'pure' : 'global',\n copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC5qcz83YmMwIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBjb3JlID0gcmVxdWlyZSgnLi9fY29yZScpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIFNIQVJFRCA9ICdfX2NvcmUtanNfc2hhcmVkX18nO1xudmFyIHN0b3JlID0gZ2xvYmFsW1NIQVJFRF0gfHwgKGdsb2JhbFtTSEFSRURdID0ge30pO1xuXG4obW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICByZXR1cm4gc3RvcmVba2V5XSB8fCAoc3RvcmVba2V5XSA9IHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6IHt9KTtcbn0pKCd2ZXJzaW9ucycsIFtdKS5wdXNoKHtcbiAgdmVyc2lvbjogY29yZS52ZXJzaW9uLFxuICBtb2RlOiByZXF1aXJlKCcuL19saWJyYXJ5JykgPyAncHVyZScgOiAnZ2xvYmFsJyxcbiAgY29weXJpZ2h0OiAnwqkgMjAxOSBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KSdcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC5qc1xuLy8gbW9kdWxlIGlkID0gMTdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///17\n")},function(module,exports,__webpack_require__){eval("// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(7);\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLXByaW1pdGl2ZS5qcz8zMjYzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMS4xIFRvUHJpbWl0aXZlKGlucHV0IFssIFByZWZlcnJlZFR5cGVdKVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG4vLyBpbnN0ZWFkIG9mIHRoZSBFUzYgc3BlYyB2ZXJzaW9uLCB3ZSBkaWRuJ3QgaW1wbGVtZW50IEBAdG9QcmltaXRpdmUgY2FzZVxuLy8gYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgLSBmbGFnIC0gcHJlZmVycmVkIHR5cGUgaXMgYSBzdHJpbmdcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBTKSB7XG4gIGlmICghaXNPYmplY3QoaXQpKSByZXR1cm4gaXQ7XG4gIHZhciBmbiwgdmFsO1xuICBpZiAoUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKHR5cGVvZiAoZm4gPSBpdC52YWx1ZU9mKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIGlmICghUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1wcmltaXRpdmUuanNcbi8vIG1vZHVsZSBpZCA9IDE4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///18\n")},function(module,exports){eval("// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWludGVnZXIuanM/NTJlMSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjEuNCBUb0ludGVnZXJcbnZhciBjZWlsID0gTWF0aC5jZWlsO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpc05hTihpdCA9ICtpdCkgPyAwIDogKGl0ID4gMCA/IGZsb29yIDogY2VpbCkoaXQpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1pbnRlZ2VyLmpzXG4vLyBtb2R1bGUgaWQgPSAxOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///19\n")},function(module,exports){eval("module.exports = {};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXJhdG9ycy5qcz9mZGI0Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0ge307XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlcmF0b3JzLmpzXG4vLyBtb2R1bGUgaWQgPSAyMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///20\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = __webpack_require__(10);\nvar dPs = __webpack_require__(60);\nvar enumBugKeys = __webpack_require__(23);\nvar IE_PROTO = __webpack_require__(16)('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = __webpack_require__(32)('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n __webpack_require__(65).appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1jcmVhdGUuanM/NjI4NiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAxOS4xLjIuMiAvIDE1LjIuMy41IE9iamVjdC5jcmVhdGUoTyBbLCBQcm9wZXJ0aWVzXSlcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGRQcyA9IHJlcXVpcmUoJy4vX29iamVjdC1kcHMnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4vX2VudW0tYnVnLWtleXMnKTtcbnZhciBJRV9QUk9UTyA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcbnZhciBFbXB0eSA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTtcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcblxuLy8gQ3JlYXRlIG9iamVjdCB3aXRoIGZha2UgYG51bGxgIHByb3RvdHlwZTogdXNlIGlmcmFtZSBPYmplY3Qgd2l0aCBjbGVhcmVkIHByb3RvdHlwZVxudmFyIGNyZWF0ZURpY3QgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIFRocmFzaCwgd2FzdGUgYW5kIHNvZG9teTogSUUgR0MgYnVnXG4gIHZhciBpZnJhbWUgPSByZXF1aXJlKCcuL19kb20tY3JlYXRlJykoJ2lmcmFtZScpO1xuICB2YXIgaSA9IGVudW1CdWdLZXlzLmxlbmd0aDtcbiAgdmFyIGx0ID0gJzwnO1xuICB2YXIgZ3QgPSAnPic7XG4gIHZhciBpZnJhbWVEb2N1bWVudDtcbiAgaWZyYW1lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIHJlcXVpcmUoJy4vX2h0bWwnKS5hcHBlbmRDaGlsZChpZnJhbWUpO1xuICBpZnJhbWUuc3JjID0gJ2phdmFzY3JpcHQ6JzsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1zY3JpcHQtdXJsXG4gIC8vIGNyZWF0ZURpY3QgPSBpZnJhbWUuY29udGVudFdpbmRvdy5PYmplY3Q7XG4gIC8vIGh0bWwucmVtb3ZlQ2hpbGQoaWZyYW1lKTtcbiAgaWZyYW1lRG9jdW1lbnQgPSBpZnJhbWUuY29udGVudFdpbmRvdy5kb2N1bWVudDtcbiAgaWZyYW1lRG9jdW1lbnQub3BlbigpO1xuICBpZnJhbWVEb2N1bWVudC53cml0ZShsdCArICdzY3JpcHQnICsgZ3QgKyAnZG9jdW1lbnQuRj1PYmplY3QnICsgbHQgKyAnL3NjcmlwdCcgKyBndCk7XG4gIGlmcmFtZURvY3VtZW50LmNsb3NlKCk7XG4gIGNyZWF0ZURpY3QgPSBpZnJhbWVEb2N1bWVudC5GO1xuICB3aGlsZSAoaS0tKSBkZWxldGUgY3JlYXRlRGljdFtQUk9UT1RZUEVdW2VudW1CdWdLZXlzW2ldXTtcbiAgcmV0dXJuIGNyZWF0ZURpY3QoKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmNyZWF0ZSB8fCBmdW5jdGlvbiBjcmVhdGUoTywgUHJvcGVydGllcykge1xuICB2YXIgcmVzdWx0O1xuICBpZiAoTyAhPT0gbnVsbCkge1xuICAgIEVtcHR5W1BST1RPVFlQRV0gPSBhbk9iamVjdChPKTtcbiAgICByZXN1bHQgPSBuZXcgRW1wdHkoKTtcbiAgICBFbXB0eVtQUk9UT1RZUEVdID0gbnVsbDtcbiAgICAvLyBhZGQgXCJfX3Byb3RvX19cIiBmb3IgT2JqZWN0LmdldFByb3RvdHlwZU9mIHBvbHlmaWxsXG4gICAgcmVzdWx0W0lFX1BST1RPXSA9IE87XG4gIH0gZWxzZSByZXN1bHQgPSBjcmVhdGVEaWN0KCk7XG4gIHJldHVybiBQcm9wZXJ0aWVzID09PSB1bmRlZmluZWQgPyByZXN1bHQgOiBkUHMocmVzdWx0LCBQcm9wZXJ0aWVzKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWNyZWF0ZS5qc1xuLy8gbW9kdWxlIGlkID0gMjFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///21\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = __webpack_require__(36);\nvar enumBugKeys = __webpack_require__(23);\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLmpzPzk2NGIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4yLjE0IC8gMTUuMi4zLjE0IE9iamVjdC5rZXlzKE8pXG52YXIgJGtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cy1pbnRlcm5hbCcpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi9fZW51bS1idWcta2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIGtleXMoTykge1xuICByZXR1cm4gJGtleXMoTywgZW51bUJ1Z0tleXMpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3Qta2V5cy5qc1xuLy8gbW9kdWxlIGlkID0gMjJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///22\n")},function(module,exports){eval("// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2VudW0tYnVnLWtleXMuanM/YzY3NyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJRSA4LSBkb24ndCBlbnVtIGJ1ZyBrZXlzXG5tb2R1bGUuZXhwb3J0cyA9IChcbiAgJ2NvbnN0cnVjdG9yLGhhc093blByb3BlcnR5LGlzUHJvdG90eXBlT2YscHJvcGVydHlJc0VudW1lcmFibGUsdG9Mb2NhbGVTdHJpbmcsdG9TdHJpbmcsdmFsdWVPZidcbikuc3BsaXQoJywnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19lbnVtLWJ1Zy1rZXlzLmpzXG4vLyBtb2R1bGUgaWQgPSAyM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///23\n")},function(module,exports,__webpack_require__){eval("var def = __webpack_require__(3).f;\nvar has = __webpack_require__(2);\nvar TAG = __webpack_require__(9)('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NldC10by1zdHJpbmctdGFnLmpzPzdiYTkiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGRlZiA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgVEFHID0gcmVxdWlyZSgnLi9fd2tzJykoJ3RvU3RyaW5nVGFnJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCB0YWcsIHN0YXQpIHtcbiAgaWYgKGl0ICYmICFoYXMoaXQgPSBzdGF0ID8gaXQgOiBpdC5wcm90b3R5cGUsIFRBRykpIGRlZihpdCwgVEFHLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IHRhZyB9KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2V0LXRvLXN0cmluZy10YWcuanNcbi8vIG1vZHVsZSBpZCA9IDI0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///24\n")},function(module,exports,__webpack_require__){eval("exports.f = __webpack_require__(9);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3drcy1leHQuanM/MmExZSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnRzLmYgPSByZXF1aXJlKCcuL193a3MnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL193a3MtZXh0LmpzXG4vLyBtb2R1bGUgaWQgPSAyNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///25\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(1);\nvar core = __webpack_require__(0);\nvar LIBRARY = __webpack_require__(12);\nvar wksExt = __webpack_require__(25);\nvar defineProperty = __webpack_require__(3).f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3drcy1kZWZpbmUuanM/NzJiOSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBMSUJSQVJZID0gcmVxdWlyZSgnLi9fbGlicmFyeScpO1xudmFyIHdrc0V4dCA9IHJlcXVpcmUoJy4vX3drcy1leHQnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHZhciAkU3ltYm9sID0gY29yZS5TeW1ib2wgfHwgKGNvcmUuU3ltYm9sID0gTElCUkFSWSA/IHt9IDogZ2xvYmFsLlN5bWJvbCB8fCB7fSk7XG4gIGlmIChuYW1lLmNoYXJBdCgwKSAhPSAnXycgJiYgIShuYW1lIGluICRTeW1ib2wpKSBkZWZpbmVQcm9wZXJ0eSgkU3ltYm9sLCBuYW1lLCB7IHZhbHVlOiB3a3NFeHQuZihuYW1lKSB9KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fd2tzLWRlZmluZS5qc1xuLy8gbW9kdWxlIGlkID0gMjZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///26\n")},function(module,exports){eval("exports.f = {}.propertyIsEnumerable;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1waWUuanM/MzY5MiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnRzLmYgPSB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtcGllLmpzXG4vLyBtb2R1bGUgaWQgPSAyN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///27\n")},function(module,exports,__webpack_require__){eval("// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(15);\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLW9iamVjdC5qcz9iMDFkIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMS4xMyBUb09iamVjdChhcmd1bWVudClcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIE9iamVjdChkZWZpbmVkKGl0KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLW9iamVjdC5qc1xuLy8gbW9kdWxlIGlkID0gMjhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///28\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = __webpack_require__(2);\nvar toObject = __webpack_require__(28);\nvar IE_PROTO = __webpack_require__(16)('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1ncG8uanM/M2YzYyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAxOS4xLjIuOSAvIDE1LjIuMy4yIE9iamVjdC5nZXRQcm90b3R5cGVPZihPKVxudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgSUVfUFJPVE8gPSByZXF1aXJlKCcuL19zaGFyZWQta2V5JykoJ0lFX1BST1RPJyk7XG52YXIgT2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiAoTykge1xuICBPID0gdG9PYmplY3QoTyk7XG4gIGlmIChoYXMoTywgSUVfUFJPVE8pKSByZXR1cm4gT1tJRV9QUk9UT107XG4gIGlmICh0eXBlb2YgTy5jb25zdHJ1Y3RvciA9PSAnZnVuY3Rpb24nICYmIE8gaW5zdGFuY2VvZiBPLmNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIE8uY29uc3RydWN0b3IucHJvdG90eXBlO1xuICB9IHJldHVybiBPIGluc3RhbmNlb2YgT2JqZWN0ID8gT2JqZWN0UHJvdG8gOiBudWxsO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ3BvLmpzXG4vLyBtb2R1bGUgaWQgPSAyOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///29\n")},function(module,exports,__webpack_require__){eval("// optional / simple context binding\nvar aFunction = __webpack_require__(48);\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2N0eC5qcz9mOTkzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIG9wdGlvbmFsIC8gc2ltcGxlIGNvbnRleHQgYmluZGluZ1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZuLCB0aGF0LCBsZW5ndGgpIHtcbiAgYUZ1bmN0aW9uKGZuKTtcbiAgaWYgKHRoYXQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZuO1xuICBzd2l0Y2ggKGxlbmd0aCkge1xuICAgIGNhc2UgMTogcmV0dXJuIGZ1bmN0aW9uIChhKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhKTtcbiAgICB9O1xuICAgIGNhc2UgMjogcmV0dXJuIGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiKTtcbiAgICB9O1xuICAgIGNhc2UgMzogcmV0dXJuIGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiLCBjKTtcbiAgICB9O1xuICB9XG4gIHJldHVybiBmdW5jdGlvbiAoLyogLi4uYXJncyAqLykge1xuICAgIHJldHVybiBmbi5hcHBseSh0aGF0LCBhcmd1bWVudHMpO1xuICB9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jdHguanNcbi8vIG1vZHVsZSBpZCA9IDMwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///30\n")},function(module,exports,__webpack_require__){eval("module.exports = !__webpack_require__(4) && !__webpack_require__(11)(function () {\n return Object.defineProperty(__webpack_require__(32)('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2llOC1kb20tZGVmaW5lLmpzPzQ5ZjAiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSAhcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSAmJiAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVxdWlyZSgnLi9fZG9tLWNyZWF0ZScpKCdkaXYnKSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pZTgtZG9tLWRlZmluZS5qc1xuLy8gbW9kdWxlIGlkID0gMzFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///31\n")},function(module,exports,__webpack_require__){eval("var isObject = __webpack_require__(7);\nvar document = __webpack_require__(1).document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RvbS1jcmVhdGUuanM/MzhkZCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBkb2N1bWVudCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLmRvY3VtZW50O1xuLy8gdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaXMgJ29iamVjdCcgaW4gb2xkIElFXG52YXIgaXMgPSBpc09iamVjdChkb2N1bWVudCkgJiYgaXNPYmplY3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXMgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGl0KSA6IHt9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kb20tY3JlYXRlLmpzXG4vLyBtb2R1bGUgaWQgPSAzMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///32\n")},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nvar _iterator = __webpack_require__(55);\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = __webpack_require__(70);\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === "function" && typeof _iterator2.default === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === "function" && _typeof(_iterator2.default) === "symbol" ? function (obj) {\n return typeof obj === "undefined" ? "undefined" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj === "undefined" ? "undefined" : _typeof(obj);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL3R5cGVvZi5qcz9hNDU2Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX2l0ZXJhdG9yID0gcmVxdWlyZShcIi4uL2NvcmUtanMvc3ltYm9sL2l0ZXJhdG9yXCIpO1xuXG52YXIgX2l0ZXJhdG9yMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2l0ZXJhdG9yKTtcblxudmFyIF9zeW1ib2wgPSByZXF1aXJlKFwiLi4vY29yZS1qcy9zeW1ib2xcIik7XG5cbnZhciBfc3ltYm9sMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3N5bWJvbCk7XG5cbnZhciBfdHlwZW9mID0gdHlwZW9mIF9zeW1ib2wyLmRlZmF1bHQgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgX2l0ZXJhdG9yMi5kZWZhdWx0ID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfSA6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgX3N5bWJvbDIuZGVmYXVsdCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gX3N5bWJvbDIuZGVmYXVsdCAmJiBvYmogIT09IF9zeW1ib2wyLmRlZmF1bHQucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmV4cG9ydHMuZGVmYXVsdCA9IHR5cGVvZiBfc3ltYm9sMi5kZWZhdWx0ID09PSBcImZ1bmN0aW9uXCIgJiYgX3R5cGVvZihfaXRlcmF0b3IyLmRlZmF1bHQpID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiBfdHlwZW9mKG9iaik7XG59IDogZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gb2JqICYmIHR5cGVvZiBfc3ltYm9sMi5kZWZhdWx0ID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBfc3ltYm9sMi5kZWZhdWx0ICYmIG9iaiAhPT0gX3N5bWJvbDIuZGVmYXVsdC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iaiA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiBfdHlwZW9mKG9iaik7XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy90eXBlb2YuanNcbi8vIG1vZHVsZSBpZCA9IDMzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///33\n')},function(module,exports,__webpack_require__){"use strict";eval("\nvar LIBRARY = __webpack_require__(12);\nvar $export = __webpack_require__(5);\nvar redefine = __webpack_require__(35);\nvar hide = __webpack_require__(6);\nvar Iterators = __webpack_require__(20);\nvar $iterCreate = __webpack_require__(59);\nvar setToStringTag = __webpack_require__(24);\nvar getPrototypeOf = __webpack_require__(29);\nvar ITERATOR = __webpack_require__(9)('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItZGVmaW5lLmpzP2JjODAiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIExJQlJBUlkgPSByZXF1aXJlKCcuL19saWJyYXJ5Jyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xudmFyICRpdGVyQ3JlYXRlID0gcmVxdWlyZSgnLi9faXRlci1jcmVhdGUnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBCVUdHWSA9ICEoW10ua2V5cyAmJiAnbmV4dCcgaW4gW10ua2V5cygpKTsgLy8gU2FmYXJpIGhhcyBidWdneSBpdGVyYXRvcnMgdy9vIGBuZXh0YFxudmFyIEZGX0lURVJBVE9SID0gJ0BAaXRlcmF0b3InO1xudmFyIEtFWVMgPSAna2V5cyc7XG52YXIgVkFMVUVTID0gJ3ZhbHVlcyc7XG5cbnZhciByZXR1cm5UaGlzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQmFzZSwgTkFNRSwgQ29uc3RydWN0b3IsIG5leHQsIERFRkFVTFQsIElTX1NFVCwgRk9SQ0VEKSB7XG4gICRpdGVyQ3JlYXRlKENvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KTtcbiAgdmFyIGdldE1ldGhvZCA9IGZ1bmN0aW9uIChraW5kKSB7XG4gICAgaWYgKCFCVUdHWSAmJiBraW5kIGluIHByb3RvKSByZXR1cm4gcHJvdG9ba2luZF07XG4gICAgc3dpdGNoIChraW5kKSB7XG4gICAgICBjYXNlIEtFWVM6IHJldHVybiBmdW5jdGlvbiBrZXlzKCkgeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuICAgICAgY2FzZSBWQUxVRVM6IHJldHVybiBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiBuZXcgQ29uc3RydWN0b3IodGhpcywga2luZCk7IH07XG4gICAgfSByZXR1cm4gZnVuY3Rpb24gZW50cmllcygpIHsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcbiAgfTtcbiAgdmFyIFRBRyA9IE5BTUUgKyAnIEl0ZXJhdG9yJztcbiAgdmFyIERFRl9WQUxVRVMgPSBERUZBVUxUID09IFZBTFVFUztcbiAgdmFyIFZBTFVFU19CVUcgPSBmYWxzZTtcbiAgdmFyIHByb3RvID0gQmFzZS5wcm90b3R5cGU7XG4gIHZhciAkbmF0aXZlID0gcHJvdG9bSVRFUkFUT1JdIHx8IHByb3RvW0ZGX0lURVJBVE9SXSB8fCBERUZBVUxUICYmIHByb3RvW0RFRkFVTFRdO1xuICB2YXIgJGRlZmF1bHQgPSAkbmF0aXZlIHx8IGdldE1ldGhvZChERUZBVUxUKTtcbiAgdmFyICRlbnRyaWVzID0gREVGQVVMVCA/ICFERUZfVkFMVUVTID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoJ2VudHJpZXMnKSA6IHVuZGVmaW5lZDtcbiAgdmFyICRhbnlOYXRpdmUgPSBOQU1FID09ICdBcnJheScgPyBwcm90by5lbnRyaWVzIHx8ICRuYXRpdmUgOiAkbmF0aXZlO1xuICB2YXIgbWV0aG9kcywga2V5LCBJdGVyYXRvclByb3RvdHlwZTtcbiAgLy8gRml4IG5hdGl2ZVxuICBpZiAoJGFueU5hdGl2ZSkge1xuICAgIEl0ZXJhdG9yUHJvdG90eXBlID0gZ2V0UHJvdG90eXBlT2YoJGFueU5hdGl2ZS5jYWxsKG5ldyBCYXNlKCkpKTtcbiAgICBpZiAoSXRlcmF0b3JQcm90b3R5cGUgIT09IE9iamVjdC5wcm90b3R5cGUgJiYgSXRlcmF0b3JQcm90b3R5cGUubmV4dCkge1xuICAgICAgLy8gU2V0IEBAdG9TdHJpbmdUYWcgdG8gbmF0aXZlIGl0ZXJhdG9yc1xuICAgICAgc2V0VG9TdHJpbmdUYWcoSXRlcmF0b3JQcm90b3R5cGUsIFRBRywgdHJ1ZSk7XG4gICAgICAvLyBmaXggZm9yIHNvbWUgb2xkIGVuZ2luZXNcbiAgICAgIGlmICghTElCUkFSWSAmJiB0eXBlb2YgSXRlcmF0b3JQcm90b3R5cGVbSVRFUkFUT1JdICE9ICdmdW5jdGlvbicpIGhpZGUoSXRlcmF0b3JQcm90b3R5cGUsIElURVJBVE9SLCByZXR1cm5UaGlzKTtcbiAgICB9XG4gIH1cbiAgLy8gZml4IEFycmF5I3t2YWx1ZXMsIEBAaXRlcmF0b3J9Lm5hbWUgaW4gVjggLyBGRlxuICBpZiAoREVGX1ZBTFVFUyAmJiAkbmF0aXZlICYmICRuYXRpdmUubmFtZSAhPT0gVkFMVUVTKSB7XG4gICAgVkFMVUVTX0JVRyA9IHRydWU7XG4gICAgJGRlZmF1bHQgPSBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiAkbmF0aXZlLmNhbGwodGhpcyk7IH07XG4gIH1cbiAgLy8gRGVmaW5lIGl0ZXJhdG9yXG4gIGlmICgoIUxJQlJBUlkgfHwgRk9SQ0VEKSAmJiAoQlVHR1kgfHwgVkFMVUVTX0JVRyB8fCAhcHJvdG9bSVRFUkFUT1JdKSkge1xuICAgIGhpZGUocHJvdG8sIElURVJBVE9SLCAkZGVmYXVsdCk7XG4gIH1cbiAgLy8gUGx1ZyBmb3IgbGlicmFyeVxuICBJdGVyYXRvcnNbTkFNRV0gPSAkZGVmYXVsdDtcbiAgSXRlcmF0b3JzW1RBR10gPSByZXR1cm5UaGlzO1xuICBpZiAoREVGQVVMVCkge1xuICAgIG1ldGhvZHMgPSB7XG4gICAgICB2YWx1ZXM6IERFRl9WQUxVRVMgPyAkZGVmYXVsdCA6IGdldE1ldGhvZChWQUxVRVMpLFxuICAgICAga2V5czogSVNfU0VUID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoS0VZUyksXG4gICAgICBlbnRyaWVzOiAkZW50cmllc1xuICAgIH07XG4gICAgaWYgKEZPUkNFRCkgZm9yIChrZXkgaW4gbWV0aG9kcykge1xuICAgICAgaWYgKCEoa2V5IGluIHByb3RvKSkgcmVkZWZpbmUocHJvdG8sIGtleSwgbWV0aG9kc1trZXldKTtcbiAgICB9IGVsc2UgJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAoQlVHR1kgfHwgVkFMVUVTX0JVRyksIE5BTUUsIG1ldGhvZHMpO1xuICB9XG4gIHJldHVybiBtZXRob2RzO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWRlZmluZS5qc1xuLy8gbW9kdWxlIGlkID0gMzRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///34\n")},function(module,exports,__webpack_require__){eval("module.exports = __webpack_require__(6);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3JlZGVmaW5lLmpzP2YzY2QiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19oaWRlJyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fcmVkZWZpbmUuanNcbi8vIG1vZHVsZSBpZCA9IDM1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///35\n")},function(module,exports,__webpack_require__){eval("var has = __webpack_require__(2);\nvar toIObject = __webpack_require__(8);\nvar arrayIndexOf = __webpack_require__(62)(false);\nvar IE_PROTO = __webpack_require__(16)('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLWludGVybmFsLmpzPzIxYjgiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciBhcnJheUluZGV4T2YgPSByZXF1aXJlKCcuL19hcnJheS1pbmNsdWRlcycpKGZhbHNlKTtcbnZhciBJRV9QUk9UTyA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lcykge1xuICB2YXIgTyA9IHRvSU9iamVjdChvYmplY3QpO1xuICB2YXIgaSA9IDA7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkgaW4gTykgaWYgKGtleSAhPSBJRV9QUk9UTykgaGFzKE8sIGtleSkgJiYgcmVzdWx0LnB1c2goa2V5KTtcbiAgLy8gRG9uJ3QgZW51bSBidWcgJiBoaWRkZW4ga2V5c1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkgaWYgKGhhcyhPLCBrZXkgPSBuYW1lc1tpKytdKSkge1xuICAgIH5hcnJheUluZGV4T2YocmVzdWx0LCBrZXkpIHx8IHJlc3VsdC5wdXNoKGtleSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWtleXMtaW50ZXJuYWwuanNcbi8vIG1vZHVsZSBpZCA9IDM2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///36\n")},function(module,exports){eval("var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvZi5qcz80N2QzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbChpdCkuc2xpY2UoOCwgLTEpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jb2YuanNcbi8vIG1vZHVsZSBpZCA9IDM3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///37\n")},function(module,exports){eval("exports.f = Object.getOwnPropertySymbols;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BzLmpzP2Q2NDQiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ29wcy5qc1xuLy8gbW9kdWxlIGlkID0gMzhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///38\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = __webpack_require__(36);\nvar hiddenKeys = __webpack_require__(23).concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BuLmpzPzlmNDQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4yLjcgLyAxNS4yLjMuNCBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPKVxudmFyICRrZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMtaW50ZXJuYWwnKTtcbnZhciBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi9fZW51bS1idWcta2V5cycpLmNvbmNhdCgnbGVuZ3RoJywgJ3Byb3RvdHlwZScpO1xuXG5leHBvcnRzLmYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyB8fCBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKE8pIHtcbiAgcmV0dXJuICRrZXlzKE8sIGhpZGRlbktleXMpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ29wbi5qc1xuLy8gbW9kdWxlIGlkID0gMzlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///39\n")},function(module,exports,__webpack_require__){eval("var pIE = __webpack_require__(27);\nvar createDesc = __webpack_require__(14);\nvar toIObject = __webpack_require__(8);\nvar toPrimitive = __webpack_require__(18);\nvar has = __webpack_require__(2);\nvar IE8_DOM_DEFINE = __webpack_require__(31);\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = __webpack_require__(4) ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BkLmpzPzJjYTYiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHBJRSA9IHJlcXVpcmUoJy4vX29iamVjdC1waWUnKTtcbnZhciBjcmVhdGVEZXNjID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi9faWU4LWRvbS1kZWZpbmUnKTtcbnZhciBnT1BEID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcblxuZXhwb3J0cy5mID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IGdPUEQgOiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCkge1xuICBPID0gdG9JT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gZ09QRChPLCBQKTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG4gIGlmIChoYXMoTywgUCkpIHJldHVybiBjcmVhdGVEZXNjKCFwSUUuZi5jYWxsKE8sIFApLCBPW1BdKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWdvcGQuanNcbi8vIG1vZHVsZSBpZCA9IDQwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///40\n")},function(module,__webpack_exports__,__webpack_require__){"use strict";eval("Object.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__style_scss__ = __webpack_require__(42);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__style_scss___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__style_scss__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__sidebar_js__ = __webpack_require__(43);\n// Include stylesheet\n\n\n// Import Click to Tweet Block\n//import './block.js';\n\n// Import Gutenberg Boilerplate Sidebar\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvaW5kZXguanM/ODc0OSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJbmNsdWRlIHN0eWxlc2hlZXRcbmltcG9ydCAnLi9zdHlsZS5zY3NzJztcblxuLy8gSW1wb3J0IENsaWNrIHRvIFR3ZWV0IEJsb2NrXG4vL2ltcG9ydCAnLi9ibG9jay5qcyc7XG5cbi8vIEltcG9ydCBHdXRlbmJlcmcgQm9pbGVycGxhdGUgU2lkZWJhclxuaW1wb3J0ICcuL3NpZGViYXIuanMnO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vc3JjL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSA0MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///41\n")},function(module,exports){eval("// removed by extract-text-webpack-plugin//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvc3R5bGUuc2Nzcz9hY2Q4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIHJlbW92ZWQgYnkgZXh0cmFjdC10ZXh0LXdlYnBhY2stcGx1Z2luXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9zcmMvc3R5bGUuc2Nzc1xuLy8gbW9kdWxlIGlkID0gNDJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///42\n")},function(module,__webpack_exports__,__webpack_require__){"use strict";eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_object_get_prototype_of__ = __webpack_require__(44);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_object_get_prototype_of___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_object_get_prototype_of__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck__ = __webpack_require__(49);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_createClass__ = __webpack_require__(50);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_createClass___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_createClass__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_possibleConstructorReturn__ = __webpack_require__(54);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_possibleConstructorReturn___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_possibleConstructorReturn__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_inherits__ = __webpack_require__(80);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_inherits___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_inherits__);\n\n\n\n\n\n/**\n * Internal block libraries.\n * @since 2.2.3\n */\nvar __ = wp.i18n.__;\nvar _wp$editPost = wp.editPost,\n PluginSidebar = _wp$editPost.PluginSidebar,\n PluginSidebarMoreMenuItem = _wp$editPost.PluginSidebarMoreMenuItem;\nvar _wp$components = wp.components,\n PanelBody = _wp$components.PanelBody,\n TextControl = _wp$components.TextControl,\n Button = _wp$components.Button,\n Notice = _wp$components.Notice;\nvar _wp$element = wp.element,\n Component = _wp$element.Component,\n Fragment = _wp$element.Fragment;\nvar withSelect = wp.data.withSelect;\nvar compose = wp.compose.compose;\n\n\nvar LanguageSwitcherNotice = function LanguageSwitcherNotice(props) {\n\tif (WPGlobusGutenberg.pagenow == WPGlobusGutenberg.postNewPage) {\n\t\treturn wp.element.createElement('div', null);\n\t}\n\n\tvar dev = '';\n\tif ('undefined' !== typeof WPGlobusBlockEditorDevelop && !WPGlobusBlockEditorDevelop.production) {\n\t\tdev = '(develop)';\n\t}\n\n\treturn wp.element.createElement(\n\t\tNotice,\n\t\t{ className: 'wpglobus-block-editor-panel__notice', status: 'informational', isDismissible: false },\n\t\t__('Select language'),\n\t\t' ',\n\t\tdev\n\t);\n};\n\nvar LanguageSwitcher = function LanguageSwitcher(props) {\n\n\tif (WPGlobusGutenberg.pagenow == WPGlobusGutenberg.postNewPage) {\n\t\treturn wp.element.createElement(\n\t\t\t'div',\n\t\t\t{ className: 'wpglobus-block-editor-panel__switcher-box' },\n\t\t\tWPGlobusGutenberg.i18n.save_post\n\t\t);\n\t}\n\n\tvar language = WPGlobusGutenberg.language;\n\tvar flagsUrl = WPGlobusGutenberg.flags_url;\n\tvar enabledLanguages = WPGlobusCoreData.enabled_languages;\n\tvar languageNames = WPGlobusCoreData.en_language_name;\n\tvar ref = location.href;\n\tvar refs = {};\n\tfor (var key in enabledLanguages) {\n\t\tif (-1 == ref.indexOf('language=' + language)) {\n\t\t\trefs[enabledLanguages[key]] = ref + '&language=' + enabledLanguages[key];\n\t\t} else {\n\t\t\trefs[enabledLanguages[key]] = ref.replace('language=' + language, 'language=' + enabledLanguages[key]);\n\t\t}\n\t}\n\n\treturn wp.element.createElement(\n\t\t'div',\n\t\t{ className: 'wpglobus-block-editor-panel__switcher-box' },\n\t\twp.element.createElement(\n\t\t\t'ul',\n\t\t\tnull,\n\t\t\tenabledLanguages.map(function (lang) {\n\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t'li',\n\t\t\t\t\t{ key: lang },\n\t\t\t\t\twp.element.createElement('img', { className: 'wpglobus-block-editor-panel__flag', height: '20px', width: '20px', src: flagsUrl[lang] }),\n\t\t\t\t\t'\\xA0\\xA0',\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\tButton,\n\t\t\t\t\t\t{ href: refs[lang], isSmall: true, isPrimary: true },\n\t\t\t\t\t\tlanguageNames[lang]\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t})\n\t\t)\n\t);\n};\n\nvar WPGlobusInfo = function WPGlobusInfo(props) {\n\treturn wp.element.createElement(\n\t\t'div',\n\t\t{ className: 'wpglobus-block-editor-panel__info' },\n\t\twp.element.createElement(\n\t\t\tButton,\n\t\t\t{ href: props.href, target: '_blank', isLink: true },\n\t\t\t__('WPGlobus Premium Add-ons')\n\t\t)\n\t);\n};\n\nvar SettingsLink = function SettingsLink(props) {\n\treturn wp.element.createElement(\n\t\t'div',\n\t\t{ className: 'wpglobus-block-editor-panel__settings-link' },\n\t\twp.element.createElement(\n\t\t\tButton,\n\t\t\t{ href: props.href, isLink: true },\n\t\t\t__('Settings')\n\t\t)\n\t);\n};\n\nvar registerPlugin = wp.plugins.registerPlugin;\n\nvar WPGlobus_BlockEditor = function (_Component) {\n\t__WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_inherits___default()(WPGlobus_BlockEditor, _Component);\n\n\tfunction WPGlobus_BlockEditor() {\n\t\t__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, WPGlobus_BlockEditor);\n\n\t\tvar _this = __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_possibleConstructorReturn___default()(this, (WPGlobus_BlockEditor.__proto__ || __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_object_get_prototype_of___default()(WPGlobus_BlockEditor)).apply(this, arguments));\n\n\t\tvar dev = '';\n\t\tif ('undefined' !== typeof WPGlobusBlockEditorDevelop && !WPGlobusBlockEditorDevelop.production) {\n\t\t\tdev = ' (develop)';\n\t\t}\n\n\t\t_this.state = {\n\t\t\toptionsTabUrl: WPGlobusGutenberg.block_editor_tab_url,\n\t\t\tstoreLink: WPGlobusGutenberg.store_link,\n\t\t\theaderTitle: __('WPGlobus') + dev,\n\t\t\tmoreMenuItemTitle: __('WPGlobus')\n\t\t};\n\n\t\tsetTimeout(function () {\n\t\t\tvar buttons = document.getElementsByClassName('components-icon-button');\n\t\t\tfor (var i = 0; i < buttons.length; i++) {\n\t\t\t\tvar status = buttons[i].getAttribute('aria-label');\n\t\t\t\t//if ( status == 'WPGlobus' ) { \n\t\t\t\tif (-1 != status.indexOf('WPGlobus')) {\n\t\t\t\t\tvar done = buttons[i].dataset.done;\n\t\t\t\t\tif ('undefined' === typeof done) {\n\t\t\t\t\t\tvar content = buttons[i].innerHTML;\n\t\t\t\t\t\t//@todo buttons[i].classList.add('wpglobus-switcher-button');\n\t\t\t\t\t\tbuttons[i].innerHTML = content + '<img height=\"20px\" width=\"20px\" src=\"' + WPGlobusGutenberg.flags_url[WPGlobusGutenberg.language] + '\" />&nbsp;' + WPGlobusAdmin.data.en_language_name[WPGlobusGutenberg.language];\n\t\t\t\t\t\tbuttons[i].dataset.done = 'yes';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}, 500);\n\t\treturn _this;\n\t}\n\n\t__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_createClass___default()(WPGlobus_BlockEditor, [{\n\t\tkey: 'render',\n\t\tvalue: function render() {\n\t\t\treturn wp.element.createElement(\n\t\t\t\tFragment,\n\t\t\t\tnull,\n\t\t\t\twp.element.createElement(\n\t\t\t\t\tPluginSidebarMoreMenuItem,\n\t\t\t\t\t{\n\t\t\t\t\t\ttarget: 'wpglobus-gutenberg-sidebar'\n\t\t\t\t\t},\n\t\t\t\t\tthis.state.moreMenuItemTitle\n\t\t\t\t),\n\t\t\t\twp.element.createElement(\n\t\t\t\t\tPluginSidebar,\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'wpglobus-gutenberg-sidebar',\n\t\t\t\t\t\ttitle: this.state.headerTitle\n\t\t\t\t\t},\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\tPanelBody,\n\t\t\t\t\t\t{ className: 'wpglobus-block-editor-panel__body' },\n\t\t\t\t\t\twp.element.createElement(LanguageSwitcherNotice, null),\n\t\t\t\t\t\twp.element.createElement(LanguageSwitcher, null),\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\twp.element.createElement(WPGlobusInfo, { href: this.state.storeLink }),\n\t\t\t\t\t\t\twp.element.createElement(SettingsLink, { href: this.state.optionsTabUrl })\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t}]);\n\n\treturn WPGlobus_BlockEditor;\n}(Component);\n\nvar WPGBE = withSelect(function (select, _ref) {\n\tvar forceIsSaving = _ref.forceIsSaving;\n\n\tvar _select = select('core/editor'),\n\t getCurrentPostId = _select.getCurrentPostId,\n\t isSavingPost = _select.isSavingPost,\n\t isPublishingPost = _select.isPublishingPost,\n\t isAutosavingPost = _select.isAutosavingPost;\n\n\treturn {\n\t\tpostId: getCurrentPostId(),\n\t\tisSaving: forceIsSaving || isSavingPost(),\n\t\tisAutoSaving: isAutosavingPost(),\n\t\tisPublishing: isPublishingPost()\n\t};\n})(WPGlobus_BlockEditor);\n\nregisterPlugin('wpglobus-gutenberg', {\n\ticon: 'admin-site',\n\trender: WPGBE\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvc2lkZWJhci5qcz8yNWQ1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfT2JqZWN0JGdldFByb3RvdHlwZU9mIGZyb20gJ2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvZ2V0LXByb3RvdHlwZS1vZic7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjayc7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzcyc7XG5pbXBvcnQgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4gZnJvbSAnYmFiZWwtcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4nO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tICdiYWJlbC1ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHMnO1xuLyoqXG4gKiBJbnRlcm5hbCBibG9jayBsaWJyYXJpZXMuXG4gKiBAc2luY2UgMi4yLjNcbiAqL1xudmFyIF9fID0gd3AuaTE4bi5fXztcbnZhciBfd3AkZWRpdFBvc3QgPSB3cC5lZGl0UG9zdCxcbiAgICBQbHVnaW5TaWRlYmFyID0gX3dwJGVkaXRQb3N0LlBsdWdpblNpZGViYXIsXG4gICAgUGx1Z2luU2lkZWJhck1vcmVNZW51SXRlbSA9IF93cCRlZGl0UG9zdC5QbHVnaW5TaWRlYmFyTW9yZU1lbnVJdGVtO1xudmFyIF93cCRjb21wb25lbnRzID0gd3AuY29tcG9uZW50cyxcbiAgICBQYW5lbEJvZHkgPSBfd3AkY29tcG9uZW50cy5QYW5lbEJvZHksXG4gICAgVGV4dENvbnRyb2wgPSBfd3AkY29tcG9uZW50cy5UZXh0Q29udHJvbCxcbiAgICBCdXR0b24gPSBfd3AkY29tcG9uZW50cy5CdXR0b24sXG4gICAgTm90aWNlID0gX3dwJGNvbXBvbmVudHMuTm90aWNlO1xudmFyIF93cCRlbGVtZW50ID0gd3AuZWxlbWVudCxcbiAgICBDb21wb25lbnQgPSBfd3AkZWxlbWVudC5Db21wb25lbnQsXG4gICAgRnJhZ21lbnQgPSBfd3AkZWxlbWVudC5GcmFnbWVudDtcbnZhciB3aXRoU2VsZWN0ID0gd3AuZGF0YS53aXRoU2VsZWN0O1xudmFyIGNvbXBvc2UgPSB3cC5jb21wb3NlLmNvbXBvc2U7XG5cblxudmFyIExhbmd1YWdlU3dpdGNoZXJOb3RpY2UgPSBmdW5jdGlvbiBMYW5ndWFnZVN3aXRjaGVyTm90aWNlKHByb3BzKSB7XG5cdGlmIChXUEdsb2J1c0d1dGVuYmVyZy5wYWdlbm93ID09IFdQR2xvYnVzR3V0ZW5iZXJnLnBvc3ROZXdQYWdlKSB7XG5cdFx0cmV0dXJuIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JywgbnVsbCk7XG5cdH1cblxuXHR2YXIgZGV2ID0gJyc7XG5cdGlmICgndW5kZWZpbmVkJyAhPT0gdHlwZW9mIFdQR2xvYnVzQmxvY2tFZGl0b3JEZXZlbG9wICYmICFXUEdsb2J1c0Jsb2NrRWRpdG9yRGV2ZWxvcC5wcm9kdWN0aW9uKSB7XG5cdFx0ZGV2ID0gJyhkZXZlbG9wKSc7XG5cdH1cblxuXHRyZXR1cm4gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdE5vdGljZSxcblx0XHR7IGNsYXNzTmFtZTogJ3dwZ2xvYnVzLWJsb2NrLWVkaXRvci1wYW5lbF9fbm90aWNlJywgc3RhdHVzOiAnaW5mb3JtYXRpb25hbCcsIGlzRGlzbWlzc2libGU6IGZhbHNlIH0sXG5cdFx0X18oJ1NlbGVjdCBsYW5ndWFnZScpLFxuXHRcdCcgJyxcblx0XHRkZXZcblx0KTtcbn07XG5cbnZhciBMYW5ndWFnZVN3aXRjaGVyID0gZnVuY3Rpb24gTGFuZ3VhZ2VTd2l0Y2hlcihwcm9wcykge1xuXG5cdGlmIChXUEdsb2J1c0d1dGVuYmVyZy5wYWdlbm93ID09IFdQR2xvYnVzR3V0ZW5iZXJnLnBvc3ROZXdQYWdlKSB7XG5cdFx0cmV0dXJuIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdCdkaXYnLFxuXHRcdFx0eyBjbGFzc05hbWU6ICd3cGdsb2J1cy1ibG9jay1lZGl0b3ItcGFuZWxfX3N3aXRjaGVyLWJveCcgfSxcblx0XHRcdFdQR2xvYnVzR3V0ZW5iZXJnLmkxOG4uc2F2ZV9wb3N0XG5cdFx0KTtcblx0fVxuXG5cdHZhciBsYW5ndWFnZSA9IFdQR2xvYnVzR3V0ZW5iZXJnLmxhbmd1YWdlO1xuXHR2YXIgZmxhZ3NVcmwgPSBXUEdsb2J1c0d1dGVuYmVyZy5mbGFnc191cmw7XG5cdHZhciBlbmFibGVkTGFuZ3VhZ2VzID0gV1BHbG9idXNDb3JlRGF0YS5lbmFibGVkX2xhbmd1YWdlcztcblx0dmFyIGxhbmd1YWdlTmFtZXMgPSBXUEdsb2J1c0NvcmVEYXRhLmVuX2xhbmd1YWdlX25hbWU7XG5cdHZhciByZWYgPSBsb2NhdGlvbi5ocmVmO1xuXHR2YXIgcmVmcyA9IHt9O1xuXHRmb3IgKHZhciBrZXkgaW4gZW5hYmxlZExhbmd1YWdlcykge1xuXHRcdGlmICgtMSA9PSByZWYuaW5kZXhPZignbGFuZ3VhZ2U9JyArIGxhbmd1YWdlKSkge1xuXHRcdFx0cmVmc1tlbmFibGVkTGFuZ3VhZ2VzW2tleV1dID0gcmVmICsgJyZsYW5ndWFnZT0nICsgZW5hYmxlZExhbmd1YWdlc1trZXldO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZWZzW2VuYWJsZWRMYW5ndWFnZXNba2V5XV0gPSByZWYucmVwbGFjZSgnbGFuZ3VhZ2U9JyArIGxhbmd1YWdlLCAnbGFuZ3VhZ2U9JyArIGVuYWJsZWRMYW5ndWFnZXNba2V5XSk7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHQnZGl2Jyxcblx0XHR7IGNsYXNzTmFtZTogJ3dwZ2xvYnVzLWJsb2NrLWVkaXRvci1wYW5lbF9fc3dpdGNoZXItYm94JyB9LFxuXHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdCd1bCcsXG5cdFx0XHRudWxsLFxuXHRcdFx0ZW5hYmxlZExhbmd1YWdlcy5tYXAoZnVuY3Rpb24gKGxhbmcpIHtcblx0XHRcdFx0cmV0dXJuIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHQnbGknLFxuXHRcdFx0XHRcdHsga2V5OiBsYW5nIH0sXG5cdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KCdpbWcnLCB7IGNsYXNzTmFtZTogJ3dwZ2xvYnVzLWJsb2NrLWVkaXRvci1wYW5lbF9fZmxhZycsIGhlaWdodDogJzIwcHgnLCB3aWR0aDogJzIwcHgnLCBzcmM6IGZsYWdzVXJsW2xhbmddIH0pLFxuXHRcdFx0XHRcdCdcXHhBMFxceEEwJyxcblx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRCdXR0b24sXG5cdFx0XHRcdFx0XHR7IGhyZWY6IHJlZnNbbGFuZ10sIGlzU21hbGw6IHRydWUsIGlzUHJpbWFyeTogdHJ1ZSB9LFxuXHRcdFx0XHRcdFx0bGFuZ3VhZ2VOYW1lc1tsYW5nXVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KTtcblx0XHRcdH0pXG5cdFx0KVxuXHQpO1xufTtcblxudmFyIFdQR2xvYnVzSW5mbyA9IGZ1bmN0aW9uIFdQR2xvYnVzSW5mbyhwcm9wcykge1xuXHRyZXR1cm4gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdCdkaXYnLFxuXHRcdHsgY2xhc3NOYW1lOiAnd3BnbG9idXMtYmxvY2stZWRpdG9yLXBhbmVsX19pbmZvJyB9LFxuXHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdEJ1dHRvbixcblx0XHRcdHsgaHJlZjogcHJvcHMuaHJlZiwgdGFyZ2V0OiAnX2JsYW5rJywgaXNMaW5rOiB0cnVlIH0sXG5cdFx0XHRfXygnV1BHbG9idXMgUHJlbWl1bSBBZGQtb25zJylcblx0XHQpXG5cdCk7XG59O1xuXG52YXIgU2V0dGluZ3NMaW5rID0gZnVuY3Rpb24gU2V0dGluZ3NMaW5rKHByb3BzKSB7XG5cdHJldHVybiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0J2RpdicsXG5cdFx0eyBjbGFzc05hbWU6ICd3cGdsb2J1cy1ibG9jay1lZGl0b3ItcGFuZWxfX3NldHRpbmdzLWxpbmsnIH0sXG5cdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0QnV0dG9uLFxuXHRcdFx0eyBocmVmOiBwcm9wcy5ocmVmLCBpc0xpbms6IHRydWUgfSxcblx0XHRcdF9fKCdTZXR0aW5ncycpXG5cdFx0KVxuXHQpO1xufTtcblxudmFyIHJlZ2lzdGVyUGx1Z2luID0gd3AucGx1Z2lucy5yZWdpc3RlclBsdWdpbjtcblxudmFyIFdQR2xvYnVzX0Jsb2NrRWRpdG9yID0gZnVuY3Rpb24gKF9Db21wb25lbnQpIHtcblx0X2luaGVyaXRzKFdQR2xvYnVzX0Jsb2NrRWRpdG9yLCBfQ29tcG9uZW50KTtcblxuXHRmdW5jdGlvbiBXUEdsb2J1c19CbG9ja0VkaXRvcigpIHtcblx0XHRfY2xhc3NDYWxsQ2hlY2sodGhpcywgV1BHbG9idXNfQmxvY2tFZGl0b3IpO1xuXG5cdFx0dmFyIF90aGlzID0gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgKFdQR2xvYnVzX0Jsb2NrRWRpdG9yLl9fcHJvdG9fXyB8fCBfT2JqZWN0JGdldFByb3RvdHlwZU9mKFdQR2xvYnVzX0Jsb2NrRWRpdG9yKSkuYXBwbHkodGhpcywgYXJndW1lbnRzKSk7XG5cblx0XHR2YXIgZGV2ID0gJyc7XG5cdFx0aWYgKCd1bmRlZmluZWQnICE9PSB0eXBlb2YgV1BHbG9idXNCbG9ja0VkaXRvckRldmVsb3AgJiYgIVdQR2xvYnVzQmxvY2tFZGl0b3JEZXZlbG9wLnByb2R1Y3Rpb24pIHtcblx0XHRcdGRldiA9ICcgKGRldmVsb3ApJztcblx0XHR9XG5cblx0XHRfdGhpcy5zdGF0ZSA9IHtcblx0XHRcdG9wdGlvbnNUYWJVcmw6IFdQR2xvYnVzR3V0ZW5iZXJnLmJsb2NrX2VkaXRvcl90YWJfdXJsLFxuXHRcdFx0c3RvcmVMaW5rOiBXUEdsb2J1c0d1dGVuYmVyZy5zdG9yZV9saW5rLFxuXHRcdFx0aGVhZGVyVGl0bGU6IF9fKCdXUEdsb2J1cycpICsgZGV2LFxuXHRcdFx0bW9yZU1lbnVJdGVtVGl0bGU6IF9fKCdXUEdsb2J1cycpXG5cdFx0fTtcblxuXHRcdHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuXHRcdFx0dmFyIGJ1dHRvbnMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjb21wb25lbnRzLWljb24tYnV0dG9uJyk7XG5cdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGJ1dHRvbnMubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0dmFyIHN0YXR1cyA9IGJ1dHRvbnNbaV0uZ2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJyk7XG5cdFx0XHRcdC8vaWYgKCBzdGF0dXMgPT0gJ1dQR2xvYnVzJyApIHsgXG5cdFx0XHRcdGlmICgtMSAhPSBzdGF0dXMuaW5kZXhPZignV1BHbG9idXMnKSkge1xuXHRcdFx0XHRcdHZhciBkb25lID0gYnV0dG9uc1tpXS5kYXRhc2V0LmRvbmU7XG5cdFx0XHRcdFx0aWYgKCd1bmRlZmluZWQnID09PSB0eXBlb2YgZG9uZSkge1xuXHRcdFx0XHRcdFx0dmFyIGNvbnRlbnQgPSBidXR0b25zW2ldLmlubmVySFRNTDtcblx0XHRcdFx0XHRcdC8vQHRvZG8gYnV0dG9uc1tpXS5jbGFzc0xpc3QuYWRkKCd3cGdsb2J1cy1zd2l0Y2hlci1idXR0b24nKTtcblx0XHRcdFx0XHRcdGJ1dHRvbnNbaV0uaW5uZXJIVE1MID0gY29udGVudCArICc8aW1nIGhlaWdodD1cIjIwcHhcIiB3aWR0aD1cIjIwcHhcIiBzcmM9XCInICsgV1BHbG9idXNHdXRlbmJlcmcuZmxhZ3NfdXJsW1dQR2xvYnVzR3V0ZW5iZXJnLmxhbmd1YWdlXSArICdcIiAvPiZuYnNwOycgKyBXUEdsb2J1c0FkbWluLmRhdGEuZW5fbGFuZ3VhZ2VfbmFtZVtXUEdsb2J1c0d1dGVuYmVyZy5sYW5ndWFnZV07XG5cdFx0XHRcdFx0XHRidXR0b25zW2ldLmRhdGFzZXQuZG9uZSA9ICd5ZXMnO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0sIDUwMCk7XG5cdFx0cmV0dXJuIF90aGlzO1xuXHR9XG5cblx0X2NyZWF0ZUNsYXNzKFdQR2xvYnVzX0Jsb2NrRWRpdG9yLCBbe1xuXHRcdGtleTogJ3JlbmRlcicsXG5cdFx0dmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcblx0XHRcdHJldHVybiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdEZyYWdtZW50LFxuXHRcdFx0XHRudWxsLFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0UGx1Z2luU2lkZWJhck1vcmVNZW51SXRlbSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHR0YXJnZXQ6ICd3cGdsb2J1cy1ndXRlbmJlcmctc2lkZWJhcidcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHRoaXMuc3RhdGUubW9yZU1lbnVJdGVtVGl0bGVcblx0XHRcdFx0KSxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFBsdWdpblNpZGViYXIsXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bmFtZTogJ3dwZ2xvYnVzLWd1dGVuYmVyZy1zaWRlYmFyJyxcblx0XHRcdFx0XHRcdHRpdGxlOiB0aGlzLnN0YXRlLmhlYWRlclRpdGxlXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRQYW5lbEJvZHksXG5cdFx0XHRcdFx0XHR7IGNsYXNzTmFtZTogJ3dwZ2xvYnVzLWJsb2NrLWVkaXRvci1wYW5lbF9fYm9keScgfSxcblx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChMYW5ndWFnZVN3aXRjaGVyTm90aWNlLCBudWxsKSxcblx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChMYW5ndWFnZVN3aXRjaGVyLCBudWxsKSxcblx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0J2RpdicsXG5cdFx0XHRcdFx0XHRcdG51bGwsXG5cdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChXUEdsb2J1c0luZm8sIHsgaHJlZjogdGhpcy5zdGF0ZS5zdG9yZUxpbmsgfSksXG5cdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChTZXR0aW5nc0xpbmssIHsgaHJlZjogdGhpcy5zdGF0ZS5vcHRpb25zVGFiVXJsIH0pXG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpXG5cdFx0XHQpO1xuXHRcdH1cblx0fV0pO1xuXG5cdHJldHVybiBXUEdsb2J1c19CbG9ja0VkaXRvcjtcbn0oQ29tcG9uZW50KTtcblxudmFyIFdQR0JFID0gd2l0aFNlbGVjdChmdW5jdGlvbiAoc2VsZWN0LCBfcmVmKSB7XG5cdHZhciBmb3JjZUlzU2F2aW5nID0gX3JlZi5mb3JjZUlzU2F2aW5nO1xuXG5cdHZhciBfc2VsZWN0ID0gc2VsZWN0KCdjb3JlL2VkaXRvcicpLFxuXHQgICAgZ2V0Q3VycmVudFBvc3RJZCA9IF9zZWxlY3QuZ2V0Q3VycmVudFBvc3RJZCxcblx0ICAgIGlzU2F2aW5nUG9zdCA9IF9zZWxlY3QuaXNTYXZpbmdQb3N0LFxuXHQgICAgaXNQdWJsaXNoaW5nUG9zdCA9IF9zZWxlY3QuaXNQdWJsaXNoaW5nUG9zdCxcblx0ICAgIGlzQXV0b3NhdmluZ1Bvc3QgPSBfc2VsZWN0LmlzQXV0b3NhdmluZ1Bvc3Q7XG5cblx0cmV0dXJuIHtcblx0XHRwb3N0SWQ6IGdldEN1cnJlbnRQb3N0SWQoKSxcblx0XHRpc1NhdmluZzogZm9yY2VJc1NhdmluZyB8fCBpc1NhdmluZ1Bvc3QoKSxcblx0XHRpc0F1dG9TYXZpbmc6IGlzQXV0b3NhdmluZ1Bvc3QoKSxcblx0XHRpc1B1Ymxpc2hpbmc6IGlzUHVibGlzaGluZ1Bvc3QoKVxuXHR9O1xufSkoV1BHbG9idXNfQmxvY2tFZGl0b3IpO1xuXG5yZWdpc3RlclBsdWdpbignd3BnbG9idXMtZ3V0ZW5iZXJnJywge1xuXHRpY29uOiAnYWRtaW4tc2l0ZScsXG5cdHJlbmRlcjogV1BHQkVcbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vc3JjL3NpZGViYXIuanNcbi8vIG1vZHVsZSBpZCA9IDQzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///43\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(45), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9nZXQtcHJvdG90eXBlLW9mLmpzPzY3MWUiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9nZXQtcHJvdG90eXBlLW9mXCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9nZXQtcHJvdG90eXBlLW9mLmpzXG4vLyBtb2R1bGUgaWQgPSA0NFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///44\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(46);\nmodule.exports = __webpack_require__(0).Object.getPrototypeOf;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9nZXQtcHJvdG90eXBlLW9mLmpzPzdkMmUiXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LmdldC1wcm90b3R5cGUtb2YnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpLk9iamVjdC5nZXRQcm90b3R5cGVPZjtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvZ2V0LXByb3RvdHlwZS1vZi5qc1xuLy8gbW9kdWxlIGlkID0gNDVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///45\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = __webpack_require__(28);\nvar $getPrototypeOf = __webpack_require__(29);\n\n__webpack_require__(47)('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5nZXQtcHJvdG90eXBlLW9mLmpzPzJhMWUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4yLjkgT2JqZWN0LmdldFByb3RvdHlwZU9mKE8pXG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciAkZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG5cbnJlcXVpcmUoJy4vX29iamVjdC1zYXAnKSgnZ2V0UHJvdG90eXBlT2YnLCBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBmdW5jdGlvbiBnZXRQcm90b3R5cGVPZihpdCkge1xuICAgIHJldHVybiAkZ2V0UHJvdG90eXBlT2YodG9PYmplY3QoaXQpKTtcbiAgfTtcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5nZXQtcHJvdG90eXBlLW9mLmpzXG4vLyBtb2R1bGUgaWQgPSA0NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///46\n")},function(module,exports,__webpack_require__){eval("// most Object methods by ES6 should accept primitives\nvar $export = __webpack_require__(5);\nvar core = __webpack_require__(0);\nvar fails = __webpack_require__(11);\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1zYXAuanM/YmFhNSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBtb3N0IE9iamVjdCBtZXRob2RzIGJ5IEVTNiBzaG91bGQgYWNjZXB0IHByaW1pdGl2ZXNcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChLRVksIGV4ZWMpIHtcbiAgdmFyIGZuID0gKGNvcmUuT2JqZWN0IHx8IHt9KVtLRVldIHx8IE9iamVjdFtLRVldO1xuICB2YXIgZXhwID0ge307XG4gIGV4cFtLRVldID0gZXhlYyhmbik7XG4gICRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogZmFpbHMoZnVuY3Rpb24gKCkgeyBmbigxKTsgfSksICdPYmplY3QnLCBleHApO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3Qtc2FwLmpzXG4vLyBtb2R1bGUgaWQgPSA0N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///47\n")},function(module,exports){eval("module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2EtZnVuY3Rpb24uanM/OTRlOSJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAodHlwZW9mIGl0ICE9ICdmdW5jdGlvbicpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGEgZnVuY3Rpb24hJyk7XG4gIHJldHVybiBpdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYS1mdW5jdGlvbi5qc1xuLy8gbW9kdWxlIGlkID0gNDhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///48\n")},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError("Cannot call a class as a function");\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrLmpzPzY2YjkiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGZ1bmN0aW9uIChpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHtcbiAgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xuICB9XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjay5qc1xuLy8gbW9kdWxlIGlkID0gNDlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///49\n')},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nvar _defineProperty = __webpack_require__(51);\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if ("value" in descriptor) descriptor.writable = true;\n (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzLmpzP2MzMTAiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKFwiLi4vY29yZS1qcy9vYmplY3QvZGVmaW5lLXByb3BlcnR5XCIpO1xuXG52YXIgX2RlZmluZVByb3BlcnR5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2RlZmluZVByb3BlcnR5KTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldO1xuICAgICAgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlO1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgICAgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTtcbiAgICAgICgwLCBfZGVmaW5lUHJvcGVydHkyLmRlZmF1bHQpKHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7XG4gICAgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTtcbiAgICBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTtcbiAgICByZXR1cm4gQ29uc3RydWN0b3I7XG4gIH07XG59KCk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzLmpzXG4vLyBtb2R1bGUgaWQgPSA1MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///50\n')},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(52), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanM/MGI4MyJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L2RlZmluZS1wcm9wZXJ0eVwiKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvZGVmaW5lLXByb3BlcnR5LmpzXG4vLyBtb2R1bGUgaWQgPSA1MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///51\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(53);\nvar $Object = __webpack_require__(0).Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanM/ZjViMCJdLCJzb3VyY2VzQ29udGVudCI6WyJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5vYmplY3QuZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgJE9iamVjdCA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5PYmplY3Q7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KGl0LCBrZXksIGRlc2MpIHtcbiAgcmV0dXJuICRPYmplY3QuZGVmaW5lUHJvcGVydHkoaXQsIGtleSwgZGVzYyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanNcbi8vIG1vZHVsZSBpZCA9IDUyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///52\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(5);\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !__webpack_require__(4), 'Object', { defineProperty: __webpack_require__(3).f });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5kZWZpbmUtcHJvcGVydHkuanM/OTgyOSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuLy8gMTkuMS4yLjQgLyAxNS4yLjMuNiBPYmplY3QuZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcylcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyksICdPYmplY3QnLCB7IGRlZmluZVByb3BlcnR5OiByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mIH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5kZWZpbmUtcHJvcGVydHkuanNcbi8vIG1vZHVsZSBpZCA9IDUzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///53\n")},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nvar _typeof2 = __webpack_require__(33);\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (self, call) {\n if (!self) {\n throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called");\n }\n\n return call && ((typeof call === "undefined" ? "undefined" : (0, _typeof3.default)(call)) === "object" || typeof call === "function") ? call : self;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4uanM/Y2YwYSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF90eXBlb2YyID0gcmVxdWlyZShcIi4uL2hlbHBlcnMvdHlwZW9mXCIpO1xuXG52YXIgX3R5cGVvZjMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF90eXBlb2YyKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKHNlbGYsIGNhbGwpIHtcbiAgaWYgKCFzZWxmKSB7XG4gICAgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO1xuICB9XG5cbiAgcmV0dXJuIGNhbGwgJiYgKCh0eXBlb2YgY2FsbCA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiAoMCwgX3R5cGVvZjMuZGVmYXVsdCkoY2FsbCkpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpID8gY2FsbCA6IHNlbGY7XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuLmpzXG4vLyBtb2R1bGUgaWQgPSA1NFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///54\n')},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(56), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL3N5bWJvbC9pdGVyYXRvci5qcz82NzM4Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9zeW1ib2wvaXRlcmF0b3JcIiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvc3ltYm9sL2l0ZXJhdG9yLmpzXG4vLyBtb2R1bGUgaWQgPSA1NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///55\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(57);\n__webpack_require__(66);\nmodule.exports = __webpack_require__(25).f('iterator');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3N5bWJvbC9pdGVyYXRvci5qcz9mZTdlIl0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvcicpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy93ZWIuZG9tLml0ZXJhYmxlJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX3drcy1leHQnKS5mKCdpdGVyYXRvcicpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3N5bWJvbC9pdGVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gNTZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///56\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $at = __webpack_require__(58)(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\n__webpack_require__(34)(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvci5qcz9jZDA0Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciAkYXQgPSByZXF1aXJlKCcuL19zdHJpbmctYXQnKSh0cnVlKTtcblxuLy8gMjEuMS4zLjI3IFN0cmluZy5wcm90b3R5cGVbQEBpdGVyYXRvcl0oKVxucmVxdWlyZSgnLi9faXRlci1kZWZpbmUnKShTdHJpbmcsICdTdHJpbmcnLCBmdW5jdGlvbiAoaXRlcmF0ZWQpIHtcbiAgdGhpcy5fdCA9IFN0cmluZyhpdGVyYXRlZCk7IC8vIHRhcmdldFxuICB0aGlzLl9pID0gMDsgICAgICAgICAgICAgICAgLy8gbmV4dCBpbmRleFxuLy8gMjEuMS41LjIuMSAlU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUlLm5leHQoKVxufSwgZnVuY3Rpb24gKCkge1xuICB2YXIgTyA9IHRoaXMuX3Q7XG4gIHZhciBpbmRleCA9IHRoaXMuX2k7XG4gIHZhciBwb2ludDtcbiAgaWYgKGluZGV4ID49IE8ubGVuZ3RoKSByZXR1cm4geyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH07XG4gIHBvaW50ID0gJGF0KE8sIGluZGV4KTtcbiAgdGhpcy5faSArPSBwb2ludC5sZW5ndGg7XG4gIHJldHVybiB7IHZhbHVlOiBwb2ludCwgZG9uZTogZmFsc2UgfTtcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gNTdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///57\n")},function(module,exports,__webpack_require__){eval("var toInteger = __webpack_require__(19);\nvar defined = __webpack_require__(15);\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3N0cmluZy1hdC5qcz84N2FlIl0sInNvdXJjZXNDb250ZW50IjpbInZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbi8vIHRydWUgIC0+IFN0cmluZyNhdFxuLy8gZmFsc2UgLT4gU3RyaW5nI2NvZGVQb2ludEF0XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChUT19TVFJJTkcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh0aGF0LCBwb3MpIHtcbiAgICB2YXIgcyA9IFN0cmluZyhkZWZpbmVkKHRoYXQpKTtcbiAgICB2YXIgaSA9IHRvSW50ZWdlcihwb3MpO1xuICAgIHZhciBsID0gcy5sZW5ndGg7XG4gICAgdmFyIGEsIGI7XG4gICAgaWYgKGkgPCAwIHx8IGkgPj0gbCkgcmV0dXJuIFRPX1NUUklORyA/ICcnIDogdW5kZWZpbmVkO1xuICAgIGEgPSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgcmV0dXJuIGEgPCAweGQ4MDAgfHwgYSA+IDB4ZGJmZiB8fCBpICsgMSA9PT0gbCB8fCAoYiA9IHMuY2hhckNvZGVBdChpICsgMSkpIDwgMHhkYzAwIHx8IGIgPiAweGRmZmZcbiAgICAgID8gVE9fU1RSSU5HID8gcy5jaGFyQXQoaSkgOiBhXG4gICAgICA6IFRPX1NUUklORyA/IHMuc2xpY2UoaSwgaSArIDIpIDogKGEgLSAweGQ4MDAgPDwgMTApICsgKGIgLSAweGRjMDApICsgMHgxMDAwMDtcbiAgfTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc3RyaW5nLWF0LmpzXG4vLyBtb2R1bGUgaWQgPSA1OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///58\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar create = __webpack_require__(21);\nvar descriptor = __webpack_require__(14);\nvar setToStringTag = __webpack_require__(24);\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n__webpack_require__(6)(IteratorPrototype, __webpack_require__(9)('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItY3JlYXRlLmpzP2Y3ODUiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4vX29iamVjdC1jcmVhdGUnKTtcbnZhciBkZXNjcmlwdG9yID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBJdGVyYXRvclByb3RvdHlwZSA9IHt9O1xuXG4vLyAyNS4xLjIuMS4xICVJdGVyYXRvclByb3RvdHlwZSVbQEBpdGVyYXRvcl0oKVxucmVxdWlyZSgnLi9faGlkZScpKEl0ZXJhdG9yUHJvdG90eXBlLCByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KSB7XG4gIENvbnN0cnVjdG9yLnByb3RvdHlwZSA9IGNyZWF0ZShJdGVyYXRvclByb3RvdHlwZSwgeyBuZXh0OiBkZXNjcmlwdG9yKDEsIG5leHQpIH0pO1xuICBzZXRUb1N0cmluZ1RhZyhDb25zdHJ1Y3RvciwgTkFNRSArICcgSXRlcmF0b3InKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlci1jcmVhdGUuanNcbi8vIG1vZHVsZSBpZCA9IDU5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///59\n")},function(module,exports,__webpack_require__){eval("var dP = __webpack_require__(3);\nvar anObject = __webpack_require__(10);\nvar getKeys = __webpack_require__(22);\n\nmodule.exports = __webpack_require__(4) ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1kcHMuanM/YWEyYSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGdldEtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoTywgUHJvcGVydGllcykge1xuICBhbk9iamVjdChPKTtcbiAgdmFyIGtleXMgPSBnZXRLZXlzKFByb3BlcnRpZXMpO1xuICB2YXIgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gIHZhciBpID0gMDtcbiAgdmFyIFA7XG4gIHdoaWxlIChsZW5ndGggPiBpKSBkUC5mKE8sIFAgPSBrZXlzW2krK10sIFByb3BlcnRpZXNbUF0pO1xuICByZXR1cm4gTztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWRwcy5qc1xuLy8gbW9kdWxlIGlkID0gNjBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///60\n")},function(module,exports,__webpack_require__){eval("// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(37);\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lvYmplY3QuanM/MzE0ZSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIGFuZCBub24tZW51bWVyYWJsZSBvbGQgVjggc3RyaW5nc1xudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QoJ3onKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKSA/IE9iamVjdCA6IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gY29mKGl0KSA9PSAnU3RyaW5nJyA/IGl0LnNwbGl0KCcnKSA6IE9iamVjdChpdCk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lvYmplY3QuanNcbi8vIG1vZHVsZSBpZCA9IDYxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///61\n")},function(module,exports,__webpack_require__){eval("// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = __webpack_require__(8);\nvar toLength = __webpack_require__(63);\nvar toAbsoluteIndex = __webpack_require__(64);\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FycmF5LWluY2x1ZGVzLmpzP2JjNTciXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZmFsc2UgLT4gQXJyYXkjaW5kZXhPZlxuLy8gdHJ1ZSAgLT4gQXJyYXkjaW5jbHVkZXNcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuL190by1hYnNvbHV0ZS1pbmRleCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoSVNfSU5DTFVERVMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgZWwsIGZyb21JbmRleCkge1xuICAgIHZhciBPID0gdG9JT2JqZWN0KCR0aGlzKTtcbiAgICB2YXIgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICAgIHZhciBpbmRleCA9IHRvQWJzb2x1dGVJbmRleChmcm9tSW5kZXgsIGxlbmd0aCk7XG4gICAgdmFyIHZhbHVlO1xuICAgIC8vIEFycmF5I2luY2x1ZGVzIHVzZXMgU2FtZVZhbHVlWmVybyBlcXVhbGl0eSBhbGdvcml0aG1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgaWYgKElTX0lOQ0xVREVTICYmIGVsICE9IGVsKSB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIHtcbiAgICAgIHZhbHVlID0gT1tpbmRleCsrXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICAgIGlmICh2YWx1ZSAhPSB2YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgLy8gQXJyYXkjaW5kZXhPZiBpZ25vcmVzIGhvbGVzLCBBcnJheSNpbmNsdWRlcyAtIG5vdFxuICAgIH0gZWxzZSBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykgaWYgKElTX0lOQ0xVREVTIHx8IGluZGV4IGluIE8pIHtcbiAgICAgIGlmIChPW2luZGV4XSA9PT0gZWwpIHJldHVybiBJU19JTkNMVURFUyB8fCBpbmRleCB8fCAwO1xuICAgIH0gcmV0dXJuICFJU19JTkNMVURFUyAmJiAtMTtcbiAgfTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYXJyYXktaW5jbHVkZXMuanNcbi8vIG1vZHVsZSBpZCA9IDYyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///62\n")},function(module,exports,__webpack_require__){eval("// 7.1.15 ToLength\nvar toInteger = __webpack_require__(19);\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWxlbmd0aC5qcz80MTExIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMS4xNSBUb0xlbmd0aFxudmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBtaW4gPSBNYXRoLm1pbjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCA+IDAgPyBtaW4odG9JbnRlZ2VyKGl0KSwgMHgxZmZmZmZmZmZmZmZmZikgOiAwOyAvLyBwb3coMiwgNTMpIC0gMSA9PSA5MDA3MTk5MjU0NzQwOTkxXG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWxlbmd0aC5qc1xuLy8gbW9kdWxlIGlkID0gNjNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///63\n")},function(module,exports,__webpack_require__){eval("var toInteger = __webpack_require__(19);\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWFic29sdXRlLWluZGV4LmpzPzdlNDAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBtYXggPSBNYXRoLm1heDtcbnZhciBtaW4gPSBNYXRoLm1pbjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGluZGV4LCBsZW5ndGgpIHtcbiAgaW5kZXggPSB0b0ludGVnZXIoaW5kZXgpO1xuICByZXR1cm4gaW5kZXggPCAwID8gbWF4KGluZGV4ICsgbGVuZ3RoLCAwKSA6IG1pbihpbmRleCwgbGVuZ3RoKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tYWJzb2x1dGUtaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDY0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///64\n")},function(module,exports,__webpack_require__){eval("var document = __webpack_require__(1).document;\nmodule.exports = document && document.documentElement;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2h0bWwuanM/NDRmMiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZG9jdW1lbnQgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5kb2N1bWVudDtcbm1vZHVsZS5leHBvcnRzID0gZG9jdW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2h0bWwuanNcbi8vIG1vZHVsZSBpZCA9IDY1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///65\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(67);\nvar global = __webpack_require__(1);\nvar hide = __webpack_require__(6);\nvar Iterators = __webpack_require__(20);\nvar TO_STRING_TAG = __webpack_require__(9)('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvd2ViLmRvbS5pdGVyYWJsZS5qcz9mYWQzIl0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4vZXM2LmFycmF5Lml0ZXJhdG9yJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbnZhciBUT19TVFJJTkdfVEFHID0gcmVxdWlyZSgnLi9fd2tzJykoJ3RvU3RyaW5nVGFnJyk7XG5cbnZhciBET01JdGVyYWJsZXMgPSAoJ0NTU1J1bGVMaXN0LENTU1N0eWxlRGVjbGFyYXRpb24sQ1NTVmFsdWVMaXN0LENsaWVudFJlY3RMaXN0LERPTVJlY3RMaXN0LERPTVN0cmluZ0xpc3QsJyArXG4gICdET01Ub2tlbkxpc3QsRGF0YVRyYW5zZmVySXRlbUxpc3QsRmlsZUxpc3QsSFRNTEFsbENvbGxlY3Rpb24sSFRNTENvbGxlY3Rpb24sSFRNTEZvcm1FbGVtZW50LEhUTUxTZWxlY3RFbGVtZW50LCcgK1xuICAnTWVkaWFMaXN0LE1pbWVUeXBlQXJyYXksTmFtZWROb2RlTWFwLE5vZGVMaXN0LFBhaW50UmVxdWVzdExpc3QsUGx1Z2luLFBsdWdpbkFycmF5LFNWR0xlbmd0aExpc3QsU1ZHTnVtYmVyTGlzdCwnICtcbiAgJ1NWR1BhdGhTZWdMaXN0LFNWR1BvaW50TGlzdCxTVkdTdHJpbmdMaXN0LFNWR1RyYW5zZm9ybUxpc3QsU291cmNlQnVmZmVyTGlzdCxTdHlsZVNoZWV0TGlzdCxUZXh0VHJhY2tDdWVMaXN0LCcgK1xuICAnVGV4dFRyYWNrTGlzdCxUb3VjaExpc3QnKS5zcGxpdCgnLCcpO1xuXG5mb3IgKHZhciBpID0gMDsgaSA8IERPTUl0ZXJhYmxlcy5sZW5ndGg7IGkrKykge1xuICB2YXIgTkFNRSA9IERPTUl0ZXJhYmxlc1tpXTtcbiAgdmFyIENvbGxlY3Rpb24gPSBnbG9iYWxbTkFNRV07XG4gIHZhciBwcm90byA9IENvbGxlY3Rpb24gJiYgQ29sbGVjdGlvbi5wcm90b3R5cGU7XG4gIGlmIChwcm90byAmJiAhcHJvdG9bVE9fU1RSSU5HX1RBR10pIGhpZGUocHJvdG8sIFRPX1NUUklOR19UQUcsIE5BTUUpO1xuICBJdGVyYXRvcnNbTkFNRV0gPSBJdGVyYXRvcnMuQXJyYXk7XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy93ZWIuZG9tLml0ZXJhYmxlLmpzXG4vLyBtb2R1bGUgaWQgPSA2NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///66\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar addToUnscopables = __webpack_require__(68);\nvar step = __webpack_require__(69);\nvar Iterators = __webpack_require__(20);\nvar toIObject = __webpack_require__(8);\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = __webpack_require__(34)(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LmFycmF5Lml0ZXJhdG9yLmpzP2M0NjkiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIGFkZFRvVW5zY29wYWJsZXMgPSByZXF1aXJlKCcuL19hZGQtdG8tdW5zY29wYWJsZXMnKTtcbnZhciBzdGVwID0gcmVxdWlyZSgnLi9faXRlci1zdGVwJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xuXG4vLyAyMi4xLjMuNCBBcnJheS5wcm90b3R5cGUuZW50cmllcygpXG4vLyAyMi4xLjMuMTMgQXJyYXkucHJvdG90eXBlLmtleXMoKVxuLy8gMjIuMS4zLjI5IEFycmF5LnByb3RvdHlwZS52YWx1ZXMoKVxuLy8gMjIuMS4zLjMwIEFycmF5LnByb3RvdHlwZVtAQGl0ZXJhdG9yXSgpXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2l0ZXItZGVmaW5lJykoQXJyYXksICdBcnJheScsIGZ1bmN0aW9uIChpdGVyYXRlZCwga2luZCkge1xuICB0aGlzLl90ID0gdG9JT2JqZWN0KGl0ZXJhdGVkKTsgLy8gdGFyZ2V0XG4gIHRoaXMuX2kgPSAwOyAgICAgICAgICAgICAgICAgICAvLyBuZXh0IGluZGV4XG4gIHRoaXMuX2sgPSBraW5kOyAgICAgICAgICAgICAgICAvLyBraW5kXG4vLyAyMi4xLjUuMi4xICVBcnJheUl0ZXJhdG9yUHJvdG90eXBlJS5uZXh0KClcbn0sIGZ1bmN0aW9uICgpIHtcbiAgdmFyIE8gPSB0aGlzLl90O1xuICB2YXIga2luZCA9IHRoaXMuX2s7XG4gIHZhciBpbmRleCA9IHRoaXMuX2krKztcbiAgaWYgKCFPIHx8IGluZGV4ID49IE8ubGVuZ3RoKSB7XG4gICAgdGhpcy5fdCA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gc3RlcCgxKTtcbiAgfVxuICBpZiAoa2luZCA9PSAna2V5cycpIHJldHVybiBzdGVwKDAsIGluZGV4KTtcbiAgaWYgKGtpbmQgPT0gJ3ZhbHVlcycpIHJldHVybiBzdGVwKDAsIE9baW5kZXhdKTtcbiAgcmV0dXJuIHN0ZXAoMCwgW2luZGV4LCBPW2luZGV4XV0pO1xufSwgJ3ZhbHVlcycpO1xuXG4vLyBhcmd1bWVudHNMaXN0W0BAaXRlcmF0b3JdIGlzICVBcnJheVByb3RvX3ZhbHVlcyUgKDkuNC40LjYsIDkuNC40LjcpXG5JdGVyYXRvcnMuQXJndW1lbnRzID0gSXRlcmF0b3JzLkFycmF5O1xuXG5hZGRUb1Vuc2NvcGFibGVzKCdrZXlzJyk7XG5hZGRUb1Vuc2NvcGFibGVzKCd2YWx1ZXMnKTtcbmFkZFRvVW5zY29wYWJsZXMoJ2VudHJpZXMnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5hcnJheS5pdGVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gNjdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///67\n")},function(module,exports){eval("module.exports = function () { /* empty */ };\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FkZC10by11bnNjb3BhYmxlcy5qcz9lMjY3Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FkZC10by11bnNjb3BhYmxlcy5qc1xuLy8gbW9kdWxlIGlkID0gNjhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///68\n")},function(module,exports){eval("module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItc3RlcC5qcz8xMDY2Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGRvbmUsIHZhbHVlKSB7XG4gIHJldHVybiB7IHZhbHVlOiB2YWx1ZSwgZG9uZTogISFkb25lIH07XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItc3RlcC5qc1xuLy8gbW9kdWxlIGlkID0gNjlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///69\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(71), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL3N5bWJvbC5qcz9lNTA1Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9zeW1ib2xcIiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvc3ltYm9sLmpzXG4vLyBtb2R1bGUgaWQgPSA3MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///70\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(72);\n__webpack_require__(77);\n__webpack_require__(78);\n__webpack_require__(79);\nmodule.exports = __webpack_require__(0).Symbol;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3N5bWJvbC9pbmRleC5qcz8wNzA3Il0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2LnN5bWJvbCcpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LnRvLXN0cmluZycpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczcuc3ltYm9sLmFzeW5jLWl0ZXJhdG9yJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNy5zeW1ib2wub2JzZXJ2YWJsZScpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuU3ltYm9sO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3N5bWJvbC9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gNzFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///71\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// ECMAScript 6 symbols shim\nvar global = __webpack_require__(1);\nvar has = __webpack_require__(2);\nvar DESCRIPTORS = __webpack_require__(4);\nvar $export = __webpack_require__(5);\nvar redefine = __webpack_require__(35);\nvar META = __webpack_require__(73).KEY;\nvar $fails = __webpack_require__(11);\nvar shared = __webpack_require__(17);\nvar setToStringTag = __webpack_require__(24);\nvar uid = __webpack_require__(13);\nvar wks = __webpack_require__(9);\nvar wksExt = __webpack_require__(25);\nvar wksDefine = __webpack_require__(26);\nvar enumKeys = __webpack_require__(74);\nvar isArray = __webpack_require__(75);\nvar anObject = __webpack_require__(10);\nvar isObject = __webpack_require__(7);\nvar toIObject = __webpack_require__(8);\nvar toPrimitive = __webpack_require__(18);\nvar createDesc = __webpack_require__(14);\nvar _create = __webpack_require__(21);\nvar gOPNExt = __webpack_require__(76);\nvar $GOPD = __webpack_require__(40);\nvar $DP = __webpack_require__(3);\nvar $keys = __webpack_require__(22);\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n __webpack_require__(39).f = gOPNExt.f = $getOwnPropertyNames;\n __webpack_require__(27).f = $propertyIsEnumerable;\n __webpack_require__(38).f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !__webpack_require__(12)) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(6)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnN5bWJvbC5qcz83ZDY3Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIEVDTUFTY3JpcHQgNiBzeW1ib2xzIHNoaW1cbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUnKTtcbnZhciBNRVRBID0gcmVxdWlyZSgnLi9fbWV0YScpLktFWTtcbnZhciAkZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4vX3NoYXJlZCcpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuL191aWQnKTtcbnZhciB3a3MgPSByZXF1aXJlKCcuL193a3MnKTtcbnZhciB3a3NFeHQgPSByZXF1aXJlKCcuL193a3MtZXh0Jyk7XG52YXIgd2tzRGVmaW5lID0gcmVxdWlyZSgnLi9fd2tzLWRlZmluZScpO1xudmFyIGVudW1LZXlzID0gcmVxdWlyZSgnLi9fZW51bS1rZXlzJyk7XG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4vX2lzLWFycmF5Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG52YXIgX2NyZWF0ZSA9IHJlcXVpcmUoJy4vX29iamVjdC1jcmVhdGUnKTtcbnZhciBnT1BORXh0ID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcG4tZXh0Jyk7XG52YXIgJEdPUEQgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wZCcpO1xudmFyICREUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyICRrZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKTtcbnZhciBnT1BEID0gJEdPUEQuZjtcbnZhciBkUCA9ICREUC5mO1xudmFyIGdPUE4gPSBnT1BORXh0LmY7XG52YXIgJFN5bWJvbCA9IGdsb2JhbC5TeW1ib2w7XG52YXIgJEpTT04gPSBnbG9iYWwuSlNPTjtcbnZhciBfc3RyaW5naWZ5ID0gJEpTT04gJiYgJEpTT04uc3RyaW5naWZ5O1xudmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xudmFyIEhJRERFTiA9IHdrcygnX2hpZGRlbicpO1xudmFyIFRPX1BSSU1JVElWRSA9IHdrcygndG9QcmltaXRpdmUnKTtcbnZhciBpc0VudW0gPSB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBTeW1ib2xSZWdpc3RyeSA9IHNoYXJlZCgnc3ltYm9sLXJlZ2lzdHJ5Jyk7XG52YXIgQWxsU3ltYm9scyA9IHNoYXJlZCgnc3ltYm9scycpO1xudmFyIE9QU3ltYm9scyA9IHNoYXJlZCgnb3Atc3ltYm9scycpO1xudmFyIE9iamVjdFByb3RvID0gT2JqZWN0W1BST1RPVFlQRV07XG52YXIgVVNFX05BVElWRSA9IHR5cGVvZiAkU3ltYm9sID09ICdmdW5jdGlvbic7XG52YXIgUU9iamVjdCA9IGdsb2JhbC5RT2JqZWN0O1xuLy8gRG9uJ3QgdXNlIHNldHRlcnMgaW4gUXQgU2NyaXB0LCBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvMTczXG52YXIgc2V0dGVyID0gIVFPYmplY3QgfHwgIVFPYmplY3RbUFJPVE9UWVBFXSB8fCAhUU9iamVjdFtQUk9UT1RZUEVdLmZpbmRDaGlsZDtcblxuLy8gZmFsbGJhY2sgZm9yIG9sZCBBbmRyb2lkLCBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9Njg3XG52YXIgc2V0U3ltYm9sRGVzYyA9IERFU0NSSVBUT1JTICYmICRmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBfY3JlYXRlKGRQKHt9LCAnYScsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGRQKHRoaXMsICdhJywgeyB2YWx1ZTogNyB9KS5hOyB9XG4gIH0pKS5hICE9IDc7XG59KSA/IGZ1bmN0aW9uIChpdCwga2V5LCBEKSB7XG4gIHZhciBwcm90b0Rlc2MgPSBnT1BEKE9iamVjdFByb3RvLCBrZXkpO1xuICBpZiAocHJvdG9EZXNjKSBkZWxldGUgT2JqZWN0UHJvdG9ba2V5XTtcbiAgZFAoaXQsIGtleSwgRCk7XG4gIGlmIChwcm90b0Rlc2MgJiYgaXQgIT09IE9iamVjdFByb3RvKSBkUChPYmplY3RQcm90bywga2V5LCBwcm90b0Rlc2MpO1xufSA6IGRQO1xuXG52YXIgd3JhcCA9IGZ1bmN0aW9uICh0YWcpIHtcbiAgdmFyIHN5bSA9IEFsbFN5bWJvbHNbdGFnXSA9IF9jcmVhdGUoJFN5bWJvbFtQUk9UT1RZUEVdKTtcbiAgc3ltLl9rID0gdGFnO1xuICByZXR1cm4gc3ltO1xufTtcblxudmFyIGlzU3ltYm9sID0gVVNFX05BVElWRSAmJiB0eXBlb2YgJFN5bWJvbC5pdGVyYXRvciA9PSAnc3ltYm9sJyA/IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdHlwZW9mIGl0ID09ICdzeW1ib2wnO1xufSA6IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgaW5zdGFuY2VvZiAkU3ltYm9sO1xufTtcblxudmFyICRkZWZpbmVQcm9wZXJ0eSA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KGl0LCBrZXksIEQpIHtcbiAgaWYgKGl0ID09PSBPYmplY3RQcm90bykgJGRlZmluZVByb3BlcnR5KE9QU3ltYm9scywga2V5LCBEKTtcbiAgYW5PYmplY3QoaXQpO1xuICBrZXkgPSB0b1ByaW1pdGl2ZShrZXksIHRydWUpO1xuICBhbk9iamVjdChEKTtcbiAgaWYgKGhhcyhBbGxTeW1ib2xzLCBrZXkpKSB7XG4gICAgaWYgKCFELmVudW1lcmFibGUpIHtcbiAgICAgIGlmICghaGFzKGl0LCBISURERU4pKSBkUChpdCwgSElEREVOLCBjcmVhdGVEZXNjKDEsIHt9KSk7XG4gICAgICBpdFtISURERU5dW2tleV0gPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaGFzKGl0LCBISURERU4pICYmIGl0W0hJRERFTl1ba2V5XSkgaXRbSElEREVOXVtrZXldID0gZmFsc2U7XG4gICAgICBEID0gX2NyZWF0ZShELCB7IGVudW1lcmFibGU6IGNyZWF0ZURlc2MoMCwgZmFsc2UpIH0pO1xuICAgIH0gcmV0dXJuIHNldFN5bWJvbERlc2MoaXQsIGtleSwgRCk7XG4gIH0gcmV0dXJuIGRQKGl0LCBrZXksIEQpO1xufTtcbnZhciAkZGVmaW5lUHJvcGVydGllcyA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoaXQsIFApIHtcbiAgYW5PYmplY3QoaXQpO1xuICB2YXIga2V5cyA9IGVudW1LZXlzKFAgPSB0b0lPYmplY3QoUCkpO1xuICB2YXIgaSA9IDA7XG4gIHZhciBsID0ga2V5cy5sZW5ndGg7XG4gIHZhciBrZXk7XG4gIHdoaWxlIChsID4gaSkgJGRlZmluZVByb3BlcnR5KGl0LCBrZXkgPSBrZXlzW2krK10sIFBba2V5XSk7XG4gIHJldHVybiBpdDtcbn07XG52YXIgJGNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZShpdCwgUCkge1xuICByZXR1cm4gUCA9PT0gdW5kZWZpbmVkID8gX2NyZWF0ZShpdCkgOiAkZGVmaW5lUHJvcGVydGllcyhfY3JlYXRlKGl0KSwgUCk7XG59O1xudmFyICRwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IGZ1bmN0aW9uIHByb3BlcnR5SXNFbnVtZXJhYmxlKGtleSkge1xuICB2YXIgRSA9IGlzRW51bS5jYWxsKHRoaXMsIGtleSA9IHRvUHJpbWl0aXZlKGtleSwgdHJ1ZSkpO1xuICBpZiAodGhpcyA9PT0gT2JqZWN0UHJvdG8gJiYgaGFzKEFsbFN5bWJvbHMsIGtleSkgJiYgIWhhcyhPUFN5bWJvbHMsIGtleSkpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIEUgfHwgIWhhcyh0aGlzLCBrZXkpIHx8ICFoYXMoQWxsU3ltYm9scywga2V5KSB8fCBoYXModGhpcywgSElEREVOKSAmJiB0aGlzW0hJRERFTl1ba2V5XSA/IEUgOiB0cnVlO1xufTtcbnZhciAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGl0LCBrZXkpIHtcbiAgaXQgPSB0b0lPYmplY3QoaXQpO1xuICBrZXkgPSB0b1ByaW1pdGl2ZShrZXksIHRydWUpO1xuICBpZiAoaXQgPT09IE9iamVjdFByb3RvICYmIGhhcyhBbGxTeW1ib2xzLCBrZXkpICYmICFoYXMoT1BTeW1ib2xzLCBrZXkpKSByZXR1cm47XG4gIHZhciBEID0gZ09QRChpdCwga2V5KTtcbiAgaWYgKEQgJiYgaGFzKEFsbFN5bWJvbHMsIGtleSkgJiYgIShoYXMoaXQsIEhJRERFTikgJiYgaXRbSElEREVOXVtrZXldKSkgRC5lbnVtZXJhYmxlID0gdHJ1ZTtcbiAgcmV0dXJuIEQ7XG59O1xudmFyICRnZXRPd25Qcm9wZXJ0eU5hbWVzID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhpdCkge1xuICB2YXIgbmFtZXMgPSBnT1BOKHRvSU9iamVjdChpdCkpO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHZhciBpID0gMDtcbiAgdmFyIGtleTtcbiAgd2hpbGUgKG5hbWVzLmxlbmd0aCA+IGkpIHtcbiAgICBpZiAoIWhhcyhBbGxTeW1ib2xzLCBrZXkgPSBuYW1lc1tpKytdKSAmJiBrZXkgIT0gSElEREVOICYmIGtleSAhPSBNRVRBKSByZXN1bHQucHVzaChrZXkpO1xuICB9IHJldHVybiByZXN1bHQ7XG59O1xudmFyICRnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaXQpIHtcbiAgdmFyIElTX09QID0gaXQgPT09IE9iamVjdFByb3RvO1xuICB2YXIgbmFtZXMgPSBnT1BOKElTX09QID8gT1BTeW1ib2xzIDogdG9JT2JqZWN0KGl0KSk7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGkgPSAwO1xuICB2YXIga2V5O1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkge1xuICAgIGlmIChoYXMoQWxsU3ltYm9scywga2V5ID0gbmFtZXNbaSsrXSkgJiYgKElTX09QID8gaGFzKE9iamVjdFByb3RvLCBrZXkpIDogdHJ1ZSkpIHJlc3VsdC5wdXNoKEFsbFN5bWJvbHNba2V5XSk7XG4gIH0gcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8vIDE5LjQuMS4xIFN5bWJvbChbZGVzY3JpcHRpb25dKVxuaWYgKCFVU0VfTkFUSVZFKSB7XG4gICRTeW1ib2wgPSBmdW5jdGlvbiBTeW1ib2woKSB7XG4gICAgaWYgKHRoaXMgaW5zdGFuY2VvZiAkU3ltYm9sKSB0aHJvdyBUeXBlRXJyb3IoJ1N5bWJvbCBpcyBub3QgYSBjb25zdHJ1Y3RvciEnKTtcbiAgICB2YXIgdGFnID0gdWlkKGFyZ3VtZW50cy5sZW5ndGggPiAwID8gYXJndW1lbnRzWzBdIDogdW5kZWZpbmVkKTtcbiAgICB2YXIgJHNldCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgaWYgKHRoaXMgPT09IE9iamVjdFByb3RvKSAkc2V0LmNhbGwoT1BTeW1ib2xzLCB2YWx1ZSk7XG4gICAgICBpZiAoaGFzKHRoaXMsIEhJRERFTikgJiYgaGFzKHRoaXNbSElEREVOXSwgdGFnKSkgdGhpc1tISURERU5dW3RhZ10gPSBmYWxzZTtcbiAgICAgIHNldFN5bWJvbERlc2ModGhpcywgdGFnLCBjcmVhdGVEZXNjKDEsIHZhbHVlKSk7XG4gICAgfTtcbiAgICBpZiAoREVTQ1JJUFRPUlMgJiYgc2V0dGVyKSBzZXRTeW1ib2xEZXNjKE9iamVjdFByb3RvLCB0YWcsIHsgY29uZmlndXJhYmxlOiB0cnVlLCBzZXQ6ICRzZXQgfSk7XG4gICAgcmV0dXJuIHdyYXAodGFnKTtcbiAgfTtcbiAgcmVkZWZpbmUoJFN5bWJvbFtQUk9UT1RZUEVdLCAndG9TdHJpbmcnLCBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5faztcbiAgfSk7XG5cbiAgJEdPUEQuZiA9ICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG4gICREUC5mID0gJGRlZmluZVByb3BlcnR5O1xuICByZXF1aXJlKCcuL19vYmplY3QtZ29wbicpLmYgPSBnT1BORXh0LmYgPSAkZ2V0T3duUHJvcGVydHlOYW1lcztcbiAgcmVxdWlyZSgnLi9fb2JqZWN0LXBpZScpLmYgPSAkcHJvcGVydHlJc0VudW1lcmFibGU7XG4gIHJlcXVpcmUoJy4vX29iamVjdC1nb3BzJykuZiA9ICRnZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cbiAgaWYgKERFU0NSSVBUT1JTICYmICFyZXF1aXJlKCcuL19saWJyYXJ5JykpIHtcbiAgICByZWRlZmluZShPYmplY3RQcm90bywgJ3Byb3BlcnR5SXNFbnVtZXJhYmxlJywgJHByb3BlcnR5SXNFbnVtZXJhYmxlLCB0cnVlKTtcbiAgfVxuXG4gIHdrc0V4dC5mID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICByZXR1cm4gd3JhcCh3a3MobmFtZSkpO1xuICB9O1xufVxuXG4kZXhwb3J0KCRleHBvcnQuRyArICRleHBvcnQuVyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCB7IFN5bWJvbDogJFN5bWJvbCB9KTtcblxuZm9yICh2YXIgZXM2U3ltYm9scyA9IChcbiAgLy8gMTkuNC4yLjIsIDE5LjQuMi4zLCAxOS40LjIuNCwgMTkuNC4yLjYsIDE5LjQuMi44LCAxOS40LjIuOSwgMTkuNC4yLjEwLCAxOS40LjIuMTEsIDE5LjQuMi4xMiwgMTkuNC4yLjEzLCAxOS40LjIuMTRcbiAgJ2hhc0luc3RhbmNlLGlzQ29uY2F0U3ByZWFkYWJsZSxpdGVyYXRvcixtYXRjaCxyZXBsYWNlLHNlYXJjaCxzcGVjaWVzLHNwbGl0LHRvUHJpbWl0aXZlLHRvU3RyaW5nVGFnLHVuc2NvcGFibGVzJ1xuKS5zcGxpdCgnLCcpLCBqID0gMDsgZXM2U3ltYm9scy5sZW5ndGggPiBqOyl3a3MoZXM2U3ltYm9sc1tqKytdKTtcblxuZm9yICh2YXIgd2VsbEtub3duU3ltYm9scyA9ICRrZXlzKHdrcy5zdG9yZSksIGsgPSAwOyB3ZWxsS25vd25TeW1ib2xzLmxlbmd0aCA+IGs7KSB3a3NEZWZpbmUod2VsbEtub3duU3ltYm9sc1trKytdKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwgJ1N5bWJvbCcsIHtcbiAgLy8gMTkuNC4yLjEgU3ltYm9sLmZvcihrZXkpXG4gICdmb3InOiBmdW5jdGlvbiAoa2V5KSB7XG4gICAgcmV0dXJuIGhhcyhTeW1ib2xSZWdpc3RyeSwga2V5ICs9ICcnKVxuICAgICAgPyBTeW1ib2xSZWdpc3RyeVtrZXldXG4gICAgICA6IFN5bWJvbFJlZ2lzdHJ5W2tleV0gPSAkU3ltYm9sKGtleSk7XG4gIH0sXG4gIC8vIDE5LjQuMi41IFN5bWJvbC5rZXlGb3Ioc3ltKVxuICBrZXlGb3I6IGZ1bmN0aW9uIGtleUZvcihzeW0pIHtcbiAgICBpZiAoIWlzU3ltYm9sKHN5bSkpIHRocm93IFR5cGVFcnJvcihzeW0gKyAnIGlzIG5vdCBhIHN5bWJvbCEnKTtcbiAgICBmb3IgKHZhciBrZXkgaW4gU3ltYm9sUmVnaXN0cnkpIGlmIChTeW1ib2xSZWdpc3RyeVtrZXldID09PSBzeW0pIHJldHVybiBrZXk7XG4gIH0sXG4gIHVzZVNldHRlcjogZnVuY3Rpb24gKCkgeyBzZXR0ZXIgPSB0cnVlOyB9LFxuICB1c2VTaW1wbGU6IGZ1bmN0aW9uICgpIHsgc2V0dGVyID0gZmFsc2U7IH1cbn0pO1xuXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCAnT2JqZWN0Jywge1xuICAvLyAxOS4xLjIuMiBPYmplY3QuY3JlYXRlKE8gWywgUHJvcGVydGllc10pXG4gIGNyZWF0ZTogJGNyZWF0ZSxcbiAgLy8gMTkuMS4yLjQgT2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpXG4gIGRlZmluZVByb3BlcnR5OiAkZGVmaW5lUHJvcGVydHksXG4gIC8vIDE5LjEuMi4zIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKE8sIFByb3BlcnRpZXMpXG4gIGRlZmluZVByb3BlcnRpZXM6ICRkZWZpbmVQcm9wZXJ0aWVzLFxuICAvLyAxOS4xLjIuNiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApXG4gIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogJGdldE93blByb3BlcnR5RGVzY3JpcHRvcixcbiAgLy8gMTkuMS4yLjcgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoTylcbiAgZ2V0T3duUHJvcGVydHlOYW1lczogJGdldE93blByb3BlcnR5TmFtZXMsXG4gIC8vIDE5LjEuMi44IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoTylcbiAgZ2V0T3duUHJvcGVydHlTeW1ib2xzOiAkZ2V0T3duUHJvcGVydHlTeW1ib2xzXG59KTtcblxuLy8gMjQuMy4yIEpTT04uc3RyaW5naWZ5KHZhbHVlIFssIHJlcGxhY2VyIFssIHNwYWNlXV0pXG4kSlNPTiAmJiAkZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICghVVNFX05BVElWRSB8fCAkZmFpbHMoZnVuY3Rpb24gKCkge1xuICB2YXIgUyA9ICRTeW1ib2woKTtcbiAgLy8gTVMgRWRnZSBjb252ZXJ0cyBzeW1ib2wgdmFsdWVzIHRvIEpTT04gYXMge31cbiAgLy8gV2ViS2l0IGNvbnZlcnRzIHN5bWJvbCB2YWx1ZXMgdG8gSlNPTiBhcyBudWxsXG4gIC8vIFY4IHRocm93cyBvbiBib3hlZCBzeW1ib2xzXG4gIHJldHVybiBfc3RyaW5naWZ5KFtTXSkgIT0gJ1tudWxsXScgfHwgX3N0cmluZ2lmeSh7IGE6IFMgfSkgIT0gJ3t9JyB8fCBfc3RyaW5naWZ5KE9iamVjdChTKSkgIT0gJ3t9Jztcbn0pKSwgJ0pTT04nLCB7XG4gIHN0cmluZ2lmeTogZnVuY3Rpb24gc3RyaW5naWZ5KGl0KSB7XG4gICAgdmFyIGFyZ3MgPSBbaXRdO1xuICAgIHZhciBpID0gMTtcbiAgICB2YXIgcmVwbGFjZXIsICRyZXBsYWNlcjtcbiAgICB3aGlsZSAoYXJndW1lbnRzLmxlbmd0aCA+IGkpIGFyZ3MucHVzaChhcmd1bWVudHNbaSsrXSk7XG4gICAgJHJlcGxhY2VyID0gcmVwbGFjZXIgPSBhcmdzWzFdO1xuICAgIGlmICghaXNPYmplY3QocmVwbGFjZXIpICYmIGl0ID09PSB1bmRlZmluZWQgfHwgaXNTeW1ib2woaXQpKSByZXR1cm47IC8vIElFOCByZXR1cm5zIHN0cmluZyBvbiB1bmRlZmluZWRcbiAgICBpZiAoIWlzQXJyYXkocmVwbGFjZXIpKSByZXBsYWNlciA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgICBpZiAodHlwZW9mICRyZXBsYWNlciA9PSAnZnVuY3Rpb24nKSB2YWx1ZSA9ICRyZXBsYWNlci5jYWxsKHRoaXMsIGtleSwgdmFsdWUpO1xuICAgICAgaWYgKCFpc1N5bWJvbCh2YWx1ZSkpIHJldHVybiB2YWx1ZTtcbiAgICB9O1xuICAgIGFyZ3NbMV0gPSByZXBsYWNlcjtcbiAgICByZXR1cm4gX3N0cmluZ2lmeS5hcHBseSgkSlNPTiwgYXJncyk7XG4gIH1cbn0pO1xuXG4vLyAxOS40LjMuNCBTeW1ib2wucHJvdG90eXBlW0BAdG9QcmltaXRpdmVdKGhpbnQpXG4kU3ltYm9sW1BST1RPVFlQRV1bVE9fUFJJTUlUSVZFXSB8fCByZXF1aXJlKCcuL19oaWRlJykoJFN5bWJvbFtQUk9UT1RZUEVdLCBUT19QUklNSVRJVkUsICRTeW1ib2xbUFJPVE9UWVBFXS52YWx1ZU9mKTtcbi8vIDE5LjQuMy41IFN5bWJvbC5wcm90b3R5cGVbQEB0b1N0cmluZ1RhZ11cbnNldFRvU3RyaW5nVGFnKCRTeW1ib2wsICdTeW1ib2wnKTtcbi8vIDIwLjIuMS45IE1hdGhbQEB0b1N0cmluZ1RhZ11cbnNldFRvU3RyaW5nVGFnKE1hdGgsICdNYXRoJywgdHJ1ZSk7XG4vLyAyNC4zLjMgSlNPTltAQHRvU3RyaW5nVGFnXVxuc2V0VG9TdHJpbmdUYWcoZ2xvYmFsLkpTT04sICdKU09OJywgdHJ1ZSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYuc3ltYm9sLmpzXG4vLyBtb2R1bGUgaWQgPSA3MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///72\n")},function(module,exports,__webpack_require__){eval("var META = __webpack_require__(13)('meta');\nvar isObject = __webpack_require__(7);\nvar has = __webpack_require__(2);\nvar setDesc = __webpack_require__(3).f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !__webpack_require__(11)(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX21ldGEuanM/ZDNhMyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgTUVUQSA9IHJlcXVpcmUoJy4vX3VpZCcpKCdtZXRhJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBzZXREZXNjID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZjtcbnZhciBpZCA9IDA7XG52YXIgaXNFeHRlbnNpYmxlID0gT2JqZWN0LmlzRXh0ZW5zaWJsZSB8fCBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0cnVlO1xufTtcbnZhciBGUkVFWkUgPSAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBpc0V4dGVuc2libGUoT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKHt9KSk7XG59KTtcbnZhciBzZXRNZXRhID0gZnVuY3Rpb24gKGl0KSB7XG4gIHNldERlc2MoaXQsIE1FVEEsIHsgdmFsdWU6IHtcbiAgICBpOiAnTycgKyArK2lkLCAvLyBvYmplY3QgSURcbiAgICB3OiB7fSAgICAgICAgICAvLyB3ZWFrIGNvbGxlY3Rpb25zIElEc1xuICB9IH0pO1xufTtcbnZhciBmYXN0S2V5ID0gZnVuY3Rpb24gKGl0LCBjcmVhdGUpIHtcbiAgLy8gcmV0dXJuIHByaW1pdGl2ZSB3aXRoIHByZWZpeFxuICBpZiAoIWlzT2JqZWN0KGl0KSkgcmV0dXJuIHR5cGVvZiBpdCA9PSAnc3ltYm9sJyA/IGl0IDogKHR5cGVvZiBpdCA9PSAnc3RyaW5nJyA/ICdTJyA6ICdQJykgKyBpdDtcbiAgaWYgKCFoYXMoaXQsIE1FVEEpKSB7XG4gICAgLy8gY2FuJ3Qgc2V0IG1ldGFkYXRhIHRvIHVuY2F1Z2h0IGZyb3plbiBvYmplY3RcbiAgICBpZiAoIWlzRXh0ZW5zaWJsZShpdCkpIHJldHVybiAnRic7XG4gICAgLy8gbm90IG5lY2Vzc2FyeSB0byBhZGQgbWV0YWRhdGFcbiAgICBpZiAoIWNyZWF0ZSkgcmV0dXJuICdFJztcbiAgICAvLyBhZGQgbWlzc2luZyBtZXRhZGF0YVxuICAgIHNldE1ldGEoaXQpO1xuICAvLyByZXR1cm4gb2JqZWN0IElEXG4gIH0gcmV0dXJuIGl0W01FVEFdLmk7XG59O1xudmFyIGdldFdlYWsgPSBmdW5jdGlvbiAoaXQsIGNyZWF0ZSkge1xuICBpZiAoIWhhcyhpdCwgTUVUQSkpIHtcbiAgICAvLyBjYW4ndCBzZXQgbWV0YWRhdGEgdG8gdW5jYXVnaHQgZnJvemVuIG9iamVjdFxuICAgIGlmICghaXNFeHRlbnNpYmxlKGl0KSkgcmV0dXJuIHRydWU7XG4gICAgLy8gbm90IG5lY2Vzc2FyeSB0byBhZGQgbWV0YWRhdGFcbiAgICBpZiAoIWNyZWF0ZSkgcmV0dXJuIGZhbHNlO1xuICAgIC8vIGFkZCBtaXNzaW5nIG1ldGFkYXRhXG4gICAgc2V0TWV0YShpdCk7XG4gIC8vIHJldHVybiBoYXNoIHdlYWsgY29sbGVjdGlvbnMgSURzXG4gIH0gcmV0dXJuIGl0W01FVEFdLnc7XG59O1xuLy8gYWRkIG1ldGFkYXRhIG9uIGZyZWV6ZS1mYW1pbHkgbWV0aG9kcyBjYWxsaW5nXG52YXIgb25GcmVlemUgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKEZSRUVaRSAmJiBtZXRhLk5FRUQgJiYgaXNFeHRlbnNpYmxlKGl0KSAmJiAhaGFzKGl0LCBNRVRBKSkgc2V0TWV0YShpdCk7XG4gIHJldHVybiBpdDtcbn07XG52YXIgbWV0YSA9IG1vZHVsZS5leHBvcnRzID0ge1xuICBLRVk6IE1FVEEsXG4gIE5FRUQ6IGZhbHNlLFxuICBmYXN0S2V5OiBmYXN0S2V5LFxuICBnZXRXZWFrOiBnZXRXZWFrLFxuICBvbkZyZWV6ZTogb25GcmVlemVcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fbWV0YS5qc1xuLy8gbW9kdWxlIGlkID0gNzNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///73\n")},function(module,exports,__webpack_require__){eval("// all enumerable object keys, includes symbols\nvar getKeys = __webpack_require__(22);\nvar gOPS = __webpack_require__(38);\nvar pIE = __webpack_require__(27);\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2VudW0ta2V5cy5qcz81ZGNlIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGFsbCBlbnVtZXJhYmxlIG9iamVjdCBrZXlzLCBpbmNsdWRlcyBzeW1ib2xzXG52YXIgZ2V0S2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzJyk7XG52YXIgZ09QUyA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BzJyk7XG52YXIgcElFID0gcmVxdWlyZSgnLi9fb2JqZWN0LXBpZScpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIHJlc3VsdCA9IGdldEtleXMoaXQpO1xuICB2YXIgZ2V0U3ltYm9scyA9IGdPUFMuZjtcbiAgaWYgKGdldFN5bWJvbHMpIHtcbiAgICB2YXIgc3ltYm9scyA9IGdldFN5bWJvbHMoaXQpO1xuICAgIHZhciBpc0VudW0gPSBwSUUuZjtcbiAgICB2YXIgaSA9IDA7XG4gICAgdmFyIGtleTtcbiAgICB3aGlsZSAoc3ltYm9scy5sZW5ndGggPiBpKSBpZiAoaXNFbnVtLmNhbGwoaXQsIGtleSA9IHN5bWJvbHNbaSsrXSkpIHJlc3VsdC5wdXNoKGtleSk7XG4gIH0gcmV0dXJuIHJlc3VsdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZW51bS1rZXlzLmpzXG4vLyBtb2R1bGUgaWQgPSA3NFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///74\n")},function(module,exports,__webpack_require__){eval("// 7.2.2 IsArray(argument)\nvar cof = __webpack_require__(37);\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLWFycmF5LmpzP2VkNDMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gNy4yLjIgSXNBcnJheShhcmd1bWVudClcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbm1vZHVsZS5leHBvcnRzID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiBpc0FycmF5KGFyZykge1xuICByZXR1cm4gY29mKGFyZykgPT0gJ0FycmF5Jztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtYXJyYXkuanNcbi8vIG1vZHVsZSBpZCA9IDc1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///75\n")},function(module,exports,__webpack_require__){eval("// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = __webpack_require__(8);\nvar gOPN = __webpack_require__(39).f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BuLWV4dC5qcz80NmI3Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGZhbGxiYWNrIGZvciBJRTExIGJ1Z2d5IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzIHdpdGggaWZyYW1lIGFuZCB3aW5kb3dcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgZ09QTiA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BuJykuZjtcbnZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG52YXIgd2luZG93TmFtZXMgPSB0eXBlb2Ygd2luZG93ID09ICdvYmplY3QnICYmIHdpbmRvdyAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc1xuICA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHdpbmRvdykgOiBbXTtcblxudmFyIGdldFdpbmRvd05hbWVzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGdPUE4oaXQpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIHdpbmRvd05hbWVzLnNsaWNlKCk7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzLmYgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKGl0KSB7XG4gIHJldHVybiB3aW5kb3dOYW1lcyAmJiB0b1N0cmluZy5jYWxsKGl0KSA9PSAnW29iamVjdCBXaW5kb3ddJyA/IGdldFdpbmRvd05hbWVzKGl0KSA6IGdPUE4odG9JT2JqZWN0KGl0KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BuLWV4dC5qc1xuLy8gbW9kdWxlIGlkID0gNzZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///76\n")},function(module,exports){eval("//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzcuanMiLCJzb3VyY2VzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///77\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(26)('asyncIterator');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnN5bWJvbC5hc3luYy1pdGVyYXRvci5qcz8zOTg5Il0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4vX3drcy1kZWZpbmUnKSgnYXN5bmNJdGVyYXRvcicpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnN5bWJvbC5hc3luYy1pdGVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gNzhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///78\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(26)('observable');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnN5bWJvbC5vYnNlcnZhYmxlLmpzPzQxNjciXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi9fd2tzLWRlZmluZScpKCdvYnNlcnZhYmxlJyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczcuc3ltYm9sLm9ic2VydmFibGUuanNcbi8vIG1vZHVsZSBpZCA9IDc5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///79\n")},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nvar _setPrototypeOf = __webpack_require__(81);\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _create = __webpack_require__(85);\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = __webpack_require__(33);\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (subClass, superClass) {\n if (typeof superClass !== "function" && superClass !== null) {\n throw new TypeError("Super expression must either be null or a function, not " + (typeof superClass === "undefined" ? "undefined" : (0, _typeof3.default)(superClass)));\n }\n\n subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2luaGVyaXRzLmpzPzNkZmQiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfc2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKFwiLi4vY29yZS1qcy9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZlwiKTtcblxudmFyIF9zZXRQcm90b3R5cGVPZjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zZXRQcm90b3R5cGVPZik7XG5cbnZhciBfY3JlYXRlID0gcmVxdWlyZShcIi4uL2NvcmUtanMvb2JqZWN0L2NyZWF0ZVwiKTtcblxudmFyIF9jcmVhdGUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY3JlYXRlKTtcblxudmFyIF90eXBlb2YyID0gcmVxdWlyZShcIi4uL2hlbHBlcnMvdHlwZW9mXCIpO1xuXG52YXIgX3R5cGVvZjMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF90eXBlb2YyKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7XG4gIGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIiArICh0eXBlb2Ygc3VwZXJDbGFzcyA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiAoMCwgX3R5cGVvZjMuZGVmYXVsdCkoc3VwZXJDbGFzcykpKTtcbiAgfVxuXG4gIHN1YkNsYXNzLnByb3RvdHlwZSA9ICgwLCBfY3JlYXRlMi5kZWZhdWx0KShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7XG4gICAgY29uc3RydWN0b3I6IHtcbiAgICAgIHZhbHVlOiBzdWJDbGFzcyxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9XG4gIH0pO1xuICBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mMi5kZWZhdWx0ID8gKDAsIF9zZXRQcm90b3R5cGVPZjIuZGVmYXVsdCkoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzcztcbn07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2luaGVyaXRzLmpzXG4vLyBtb2R1bGUgaWQgPSA4MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///80\n')},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(82), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9zZXQtcHJvdG90eXBlLW9mLmpzPzkyMjAiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9zZXQtcHJvdG90eXBlLW9mXCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9zZXQtcHJvdG90eXBlLW9mLmpzXG4vLyBtb2R1bGUgaWQgPSA4MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///81\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(83);\nmodule.exports = __webpack_require__(0).Object.setPrototypeOf;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9zZXQtcHJvdG90eXBlLW9mLmpzPzhiZjAiXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LnNldC1wcm90b3R5cGUtb2YnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpLk9iamVjdC5zZXRQcm90b3R5cGVPZjtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZi5qc1xuLy8gbW9kdWxlIGlkID0gODJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///82\n")},function(module,exports,__webpack_require__){eval("// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = __webpack_require__(5);\n$export($export.S, 'Object', { setPrototypeOf: __webpack_require__(84).set });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5zZXQtcHJvdG90eXBlLW9mLmpzPzdiMTgiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4zLjE5IE9iamVjdC5zZXRQcm90b3R5cGVPZihPLCBwcm90bylcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG4kZXhwb3J0KCRleHBvcnQuUywgJ09iamVjdCcsIHsgc2V0UHJvdG90eXBlT2Y6IHJlcXVpcmUoJy4vX3NldC1wcm90bycpLnNldCB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3Quc2V0LXByb3RvdHlwZS1vZi5qc1xuLy8gbW9kdWxlIGlkID0gODNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///83\n")},function(module,exports,__webpack_require__){eval("// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = __webpack_require__(7);\nvar anObject = __webpack_require__(10);\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = __webpack_require__(30)(Function.call, __webpack_require__(40).f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NldC1wcm90by5qcz82NWE0Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFdvcmtzIHdpdGggX19wcm90b19fIG9ubHkuIE9sZCB2OCBjYW4ndCB3b3JrIHdpdGggbnVsbCBwcm90byBvYmplY3RzLlxuLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG8gKi9cbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgY2hlY2sgPSBmdW5jdGlvbiAoTywgcHJvdG8pIHtcbiAgYW5PYmplY3QoTyk7XG4gIGlmICghaXNPYmplY3QocHJvdG8pICYmIHByb3RvICE9PSBudWxsKSB0aHJvdyBUeXBlRXJyb3IocHJvdG8gKyBcIjogY2FuJ3Qgc2V0IGFzIHByb3RvdHlwZSFcIik7XG59O1xubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHNldDogT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8ICgnX19wcm90b19fJyBpbiB7fSA/IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgICBmdW5jdGlvbiAodGVzdCwgYnVnZ3ksIHNldCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgc2V0ID0gcmVxdWlyZSgnLi9fY3R4JykoRnVuY3Rpb24uY2FsbCwgcmVxdWlyZSgnLi9fb2JqZWN0LWdvcGQnKS5mKE9iamVjdC5wcm90b3R5cGUsICdfX3Byb3RvX18nKS5zZXQsIDIpO1xuICAgICAgICBzZXQodGVzdCwgW10pO1xuICAgICAgICBidWdneSA9ICEodGVzdCBpbnN0YW5jZW9mIEFycmF5KTtcbiAgICAgIH0gY2F0Y2ggKGUpIHsgYnVnZ3kgPSB0cnVlOyB9XG4gICAgICByZXR1cm4gZnVuY3Rpb24gc2V0UHJvdG90eXBlT2YoTywgcHJvdG8pIHtcbiAgICAgICAgY2hlY2soTywgcHJvdG8pO1xuICAgICAgICBpZiAoYnVnZ3kpIE8uX19wcm90b19fID0gcHJvdG87XG4gICAgICAgIGVsc2Ugc2V0KE8sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIE87XG4gICAgICB9O1xuICAgIH0oe30sIGZhbHNlKSA6IHVuZGVmaW5lZCksXG4gIGNoZWNrOiBjaGVja1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zZXQtcHJvdG8uanNcbi8vIG1vZHVsZSBpZCA9IDg0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///84\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(86), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9jcmVhdGUuanM/M2FmNCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L2NyZWF0ZVwiKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvY3JlYXRlLmpzXG4vLyBtb2R1bGUgaWQgPSA4NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///85\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(87);\nvar $Object = __webpack_require__(0).Object;\nmodule.exports = function create(P, D) {\n return $Object.create(P, D);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9jcmVhdGUuanM/YTBjZSJdLCJzb3VyY2VzQ29udGVudCI6WyJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5vYmplY3QuY3JlYXRlJyk7XG52YXIgJE9iamVjdCA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5PYmplY3Q7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGNyZWF0ZShQLCBEKSB7XG4gIHJldHVybiAkT2JqZWN0LmNyZWF0ZShQLCBEKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L2NyZWF0ZS5qc1xuLy8gbW9kdWxlIGlkID0gODZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///86\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(5);\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: __webpack_require__(21) });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5jcmVhdGUuanM/YjA1ZiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuLy8gMTkuMS4yLjIgLyAxNS4yLjMuNSBPYmplY3QuY3JlYXRlKE8gWywgUHJvcGVydGllc10pXG4kZXhwb3J0KCRleHBvcnQuUywgJ09iamVjdCcsIHsgY3JlYXRlOiByZXF1aXJlKCcuL19vYmplY3QtY3JlYXRlJykgfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYub2JqZWN0LmNyZWF0ZS5qc1xuLy8gbW9kdWxlIGlkID0gODdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///87\n")}]);
 
trunk/includes/builders/gutenberg/assets/js/wpglobus-gutenberg.js DELETED
@@ -1,632 +0,0 @@
1
- /**
2
- * WPGlobus Administration
3
- * Interface JS functions
4
- *
5
- * @since 1.9.17
6
- * @since 2.2.3
7
- *
8
- * @package WPGlobus
9
- * @subpackage Administration/Gutenberg
10
- */
11
- /*jslint browser: true */
12
- /*global jQuery, console, _wpGutenbergCodeEditorSettings*/
13
-
14
- jQuery(document).ready(function ($) {
15
- "use strict";
16
-
17
- var api = {
18
- counter: 0,
19
- noticeOn: false,
20
- initDone: false,
21
- languageSelectorBoxDelta: 0,
22
- oldLanguageSelector: false,
23
- languageSelectorEnabled: true,
24
- parseBool: function(b) {
25
- return !(/^(false|0)$/i).test(b) && !!b;
26
- },
27
- getCounter: function(alias) {
28
- return api.counter;
29
- },
30
- getOptionKey: function(alias) {
31
- alias = alias || '';
32
- return WPGlobusGutenberg.keyOption[alias];
33
- },
34
- getOptions: function() {
35
- return WPGlobusGutenberg.options;
36
- },
37
- isOldLanguageSelector: function() {
38
- return api.oldLanguageSelector;
39
- },
40
- isPostDisabled: function() {
41
- return WPGlobusGutenberg.__post.disabled;
42
- },
43
- isEnabledTab: function(tab) {
44
- if ( 'undefined' === typeof tab ) {
45
- tab = 'options';
46
- }
47
- var enabled = false;
48
- if ( 'options' == tab ) {
49
- if ( api.parseBool(WPGlobusGutenberg.enabledOptionsTab) ) {
50
- enabled = true;
51
- }
52
- }
53
- return enabled;
54
- },
55
- init: function() {
56
- WPGlobusGutenberg.yoastSeo = api.parseBool(WPGlobusGutenberg.yoastSeo);
57
- WPGlobusGutenberg.elementor = api.parseBool(WPGlobusGutenberg.elementor);
58
- if ( api.isPostDisabled() ) {
59
- return;
60
- }
61
- api.initListeners();
62
- api.initNotifications();
63
- api.setTabs();
64
- api.formHandler();
65
- api.attachListeners();
66
- },
67
- initListeners: function() {
68
- if ( WPGlobusGutenberg.yoastSeo && 1 == $('.yoast.wpseo-metabox').length ) {
69
- /**
70
- * Prevent start of alert message when yoast seo is present.
71
- * Check getEventListeners(window).beforeunload in Chrome console for beforeunload event.
72
- * @see https://developers.google.com/web/tools/chrome-devtools/console/command-line-reference#monitoreventsobject-events
73
- */
74
- $(window).on('beforeunload', function (event) {
75
- event.stopImmediatePropagation()
76
- });
77
- }
78
- },
79
- formHandler: function() {
80
-
81
- var val = $('.metabox-base-form #referredby').attr('value');
82
- if ( 'undefined' !== typeof val ) {
83
- if( val.indexOf('language=en') == -1 ) {
84
- val = val+'&language='+WPGlobusGutenberg.language;
85
- } else {
86
- val = val.replace('language=en', 'language='+WPGlobusGutenberg.language);
87
- }
88
- $('.metabox-base-form #referredby').attr('value', val);
89
- }
90
-
91
- val = $('input[name="_wp_original_http_referer"]').attr('value');
92
- if ( 'undefined' !== typeof val ) {
93
- if( val.indexOf('language=en') == -1 ) {
94
- val = val+'&language='+WPGlobusGutenberg.language;
95
- } else {
96
- val = val.replace('language=en', 'language='+WPGlobusGutenberg.language);
97
- }
98
- $('input[name="_wp_original_http_referer"]').attr('value', val);
99
- }
100
- },
101
- initNotifications: function() {
102
- // @since 2.4.11
103
- if ( 'undefined' === typeof wp.editPost || 'undefined' === typeof wp.plugins ) {
104
- return;
105
- }
106
- if ( ! WPGlobusGutenberg.elementor ) {
107
- return;
108
- }
109
- if ( 'internal' != WPGlobusGutenberg.data.elementorCssPrintMethod ) {
110
- return;
111
- }
112
-
113
- wp.data.dispatch('core/notices').createNotice(
114
- 'error', // Can be one of: success, info, warning, error.
115
- WPGlobusGutenberg.i18n.elementorWarning, // Text string to display.
116
- {
117
- id: 'elementorcssprintmethodnotice', // Assigning an ID prevents the notice from being added repeatedly.
118
- isDismissible: true, // Whether the user can dismiss the notice.
119
- actions: [
120
- // Any actions the user can perform.
121
- {
122
- url: WPGlobusGutenberg.i18n.elementorActionLink,
123
- label: WPGlobusGutenberg.i18n.elementorActionLabel
124
- }
125
- ]
126
- }
127
- );
128
- },
129
- setTabs: function() {
130
- if ( WPGlobusGutenberg.tabs.length == 0 ) {
131
- api.WPGlobusSwitcherPlugin();
132
- return;
133
- }
134
- api.oldLanguageSelector = true;
135
- var intervalID = setInterval( function() {
136
- /** var $toolbar = $('.edit-post-header'); **/
137
- var $toolbar = $('.edit-post-header__settings');
138
- if( $toolbar.length == 1 ) {
139
- $toolbar.before(WPGlobusGutenberg.tabs);
140
- /*
141
- var width = $('.edit-post-header-toolbar').css('width');
142
- width = width.replace('px','') * 1;
143
- if ( width < 50 ) {
144
- width = width + 5;
145
- } else {
146
- width = width + 30;
147
- }
148
- $('.wpglobus-gutenberg-selector-box').css({'margin-left':width+'px'});
149
- // */
150
- clearInterval(intervalID)
151
- } else {
152
- //console.log('Here: else');
153
- }
154
- }, 200);
155
- },
156
- setSelectorStatus: function() {
157
- if ( ! api.isOldLanguageSelector() ) {
158
- return;
159
- }
160
- $('.wpglobus-gutenberg-selector-box').css({'opacity':'0.2'}).attr('onclick','return false;');
161
- api.languageSelectorEnabled = false;
162
- var iID = setInterval( function() {
163
- if ( $('.is-saving').length == 0 ) {
164
- clearInterval(iID);
165
- if ( WPGlobusGutenberg.pagenow == WPGlobusGutenberg.postNewPage ) {
166
- if ( location.pathname.indexOf(WPGlobusGutenberg.postEditPage) != -1 ) {
167
- WPGlobusGutenberg.pagenow = WPGlobusGutenberg.postEditPage;
168
- $('.wpglobus-gutenberg-selector-box').css({'opacity':'1'}).attr('onclick','');
169
- api.reloadPage();
170
- return;
171
- }
172
- }
173
- api.languageSelectorEnabled = true;
174
- $('.wpglobus-gutenberg-selector-box').css({'opacity':'1'}).attr('onclick','');
175
- }
176
- }, 400);
177
- },
178
- reloadPage: function() {
179
- $('.wpglobus-selector-grid').css({'grid-template-columns':'10% 90%'});
180
- $('.wpglobus-gutenberg-selector-text').text(WPGlobusGutenberg.i18n.reload);
181
- (function blink() {
182
- $('.wpglobus-gutenberg-selector').fadeOut(500).fadeIn(500, blink);
183
- })();
184
- setTimeout( function() {
185
- location.reload();
186
- }, 500);
187
- },
188
- attachListeners: function() {
189
- if ( ! api.isOldLanguageSelector() ) {
190
- return;
191
- }
192
- /**
193
- * Language selector.
194
- */
195
- $(document).on('mouseenter', '.wpglobus-gutenberg-selector', function(ev) {
196
- if ( ! api.languageSelectorEnabled ) {
197
- return;
198
- }
199
- $('.wpglobus-gutenberg-selector-dropdown').css({'display':'block'});
200
- api.languageSelectorBoxDelta = ev.screenY;
201
- $('.edit-post-header').css({'z-index':'100000'});
202
- $('.wpglobus-gutenberg-selector-box').css({'z-index':'100001'});
203
- });
204
- $(document).on('mouseleave', '.wpglobus-gutenberg-selector', function(ev) {
205
- if ( api.languageSelectorBoxDelta != 0 && ev.screenY - api.languageSelectorBoxDelta <= 0) {
206
- $('.wpglobus-gutenberg-selector-dropdown').css({'display':'none'});
207
- $('.edit-post-header').css({'z-index':'9989'});
208
- $('.wpglobus-gutenberg-selector-box').css({'z-index':'100'});
209
- }
210
- });
211
-
212
- /**
213
- * Dropdown list.
214
- */
215
- $(document).on('mouseleave', '.wpglobus-gutenberg-selector-dropdown', function(ev) {
216
- $('.wpglobus-gutenberg-selector-dropdown').css({'display':'none'});
217
- $('.edit-post-header').css({'z-index':'9989'});
218
- $('.wpglobus-gutenberg-selector-box').css({'z-index':'10000'});
219
- });
220
-
221
- /**
222
- * editor-post-save-draft.
223
- */
224
- $(document).on('click', '.editor-post-save-draft', function() {
225
- api.setSelectorStatus();
226
- });
227
-
228
- /**
229
- * editor-post-publish-button.
230
- */
231
- $(document).on('click', '.editor-post-publish-button', function() {
232
- api.setSelectorStatus();
233
- });
234
-
235
- },
236
- WPGlobusSwitcherPlugin: function(){
237
- // @since 2.2.3
238
- // @since 2.2.14
239
-
240
- if ( 'undefined' === typeof wp.editPost || 'undefined' === typeof wp.plugins ) {
241
- // @since 2.2.15
242
- return;
243
- }
244
- var language = WPGlobusGutenberg.language;
245
- var enabledLanguages = WPGlobusCoreData.enabled_languages;
246
- var languageNames = WPGlobusCoreData.en_language_name;
247
- var flagsUrl = WPGlobusGutenberg.flags_url;
248
- var switcherButtonTitle = 'WPGlobus Switcher';
249
- var ref = location.href;
250
- var refs = {};
251
- for (var key in enabledLanguages) {
252
- if ( -1 == ref.indexOf('language='+language) ) {
253
- refs[enabledLanguages[key]] = ref + '&language='+enabledLanguages[key];
254
- } else {
255
- refs[enabledLanguages[key]] = ref.replace( 'language='+language, 'language='+enabledLanguages[key] );
256
- }
257
- }
258
-
259
- var __ = wp.i18n.__;
260
- var el = wp.element.createElement;
261
- var Fragment = wp.element.Fragment;
262
-
263
- var TabPanel = wp.components.TabPanel;
264
- var withState = wp.compose.withState;
265
- var RadioControl = wp.components.RadioControl;
266
- var Notice = wp.components.Notice;
267
- var Button = wp.components.Button;
268
-
269
- var PluginSidebarMoreMenuItem = wp.editPost.PluginSidebarMoreMenuItem;
270
- var PanelBody = wp.components.PanelBody;
271
- var PluginSidebar = wp.editPost.PluginSidebar;
272
- var registerPlugin = wp.plugins.registerPlugin;
273
-
274
- var pluginStarButton = $('.components-panel__header.edit-post-sidebar-header button.components-icon-button').eq(0);
275
-
276
- var switcherButtonHTML = {
277
- flagOnly: '<img height="20" width="20" style="width:20px;" src="'+WPGlobusGutenberg.flags_url[WPGlobusGutenberg.language]+'" />',
278
- flagLanguage: '<img height="20" width="20" style="width:20px;" src="'+WPGlobusGutenberg.flags_url[WPGlobusGutenberg.language]+'" />&nbsp;' + WPGlobusAdmin.data.en_language_name[WPGlobusGutenberg.language],
279
- flagCode: '<img height="20" width="20" style="width:20px;" src="'+WPGlobusGutenberg.flags_url[WPGlobusGutenberg.language]+'" />&nbsp;' + WPGlobusGutenberg.language,
280
- languageOnly: '&nbsp;' + WPGlobusAdmin.data.en_language_name[WPGlobusGutenberg.language],
281
- languageCode: '&nbsp;' + WPGlobusGutenberg.language,
282
- };
283
-
284
- var switcherPluginButtonType = '';
285
- var promisedPluginButtonType = '';
286
- var optionSwitcherButtonType = api.getOptionKey('switcherButtonType');
287
-
288
- function setSwitcherButtonType(type) {
289
- type = type || 'flagLanguage';
290
- switcherPluginButtonType = type;
291
- }
292
-
293
- function getSwitcherButtonType() {
294
- return switcherPluginButtonType;
295
- }
296
-
297
- function getSwitcherButtonTitle() {
298
- return switcherButtonTitle;
299
- }
300
-
301
- setSwitcherButtonType(WPGlobusGutenberg.options[optionSwitcherButtonType]);
302
-
303
- promisedPluginButtonType = getSwitcherButtonType();
304
-
305
- $(document).on('click', pluginStarButton, function(){
306
- setSwitcherPluginButton();
307
- });
308
-
309
- function rbAnimate(start) {
310
- if ( 'undefined' === typeof start ) {
311
- start = true;
312
- }
313
- var elems = document.querySelectorAll('.wpglobus-switcher-components-radio-control .components-radio-control__input');
314
- if ( elems.length == 0 ) {
315
- return;
316
- }
317
- if ( start ) {
318
- elems.forEach(function(elem) {
319
- elem.classList.add(elem.value);
320
- elem.classList.remove('wpglobus-switcher-pulsate-radio');
321
- elem.classList.add('wpglobus-switcher-pulsate-radio-off');
322
- });
323
- var elem = document.querySelector('.wpglobus-switcher-components-radio-control .'+promisedPluginButtonType);
324
- elem.classList.remove('wpglobus-switcher-pulsate-radio-off');
325
- elem.classList.add('wpglobus-switcher-pulsate-radio');
326
- } else {
327
- elems.forEach(function(elem) {
328
- elem.classList.remove('wpglobus-switcher-pulsate-radio');
329
- elem.classList.remove('wpglobus-switcher-pulsate-radio-off');
330
- elem.classList.add('wpglobus-switcher-pulsate-radio-on');
331
- });
332
- }
333
- }
334
- function notice(el, mess) {
335
- if ( 'undefined' === typeof el || api.noticeOn ) {
336
- return;
337
- }
338
- api.noticeOn = true;
339
- el.innerText = mess;
340
- el.classList.remove('hidden');
341
- setTimeout(function() {
342
- el.classList.add('hidden');
343
- api.noticeOn = false;
344
- }, 3000);
345
- }
346
-
347
- function setOption(option, value) {
348
- option = option || '';
349
- value = value || '';
350
- if ( optionSwitcherButtonType == option ) {
351
- rbAnimate(true);
352
- saveOptions(option, value).then(function(response){
353
- if ('success' == response.result) {
354
- setSwitcherButtonType(value);
355
- WPGlobusGutenberg.options[optionSwitcherButtonType] = value;
356
- setSwitcherPluginButton(value);
357
- }
358
- })
359
- .fail( function(response) {
360
- var el = document.getElementsByClassName('wpglobus-switcher-error-message');
361
- if ('undefined' !== typeof el[0]) {
362
- if ('error' == response.result) {
363
- notice(el[0], response.message);
364
- } else if (response.status == 400) {
365
- notice(el[0], 'Error: '+response.status + ' (' + response.statusText + ')' );
366
- }
367
- promisedPluginButtonType = getSwitcherButtonType();
368
- }
369
- var tab = document.getElementsByClassName('wpglobus-panel-tab-options');
370
- if ('undefined' !== typeof tab[0]) {
371
- if ( -1 != tab[0].classList.value.indexOf('is-active') ) {
372
- tab[0].click();
373
- }
374
- }
375
- })
376
- .always(function() {
377
- rbAnimate(false);
378
- });
379
- }
380
- }
381
-
382
- function saveOptions(option, value) {
383
- option = option || '';
384
- if ( option == '' ) {
385
- return;
386
- }
387
- var data = {};
388
- data['sender'] = 'WPGlobusGutenberg';
389
- data['_action'] = 'saveOption';
390
- data['is_admin'] = 1;
391
- data['counter'] = api.counter++;
392
- data['options'] = {};
393
- data['options'][option] = value;
394
- return wp.ajax.post(WPGlobusGutenberg.wpglobusAjax, {data:data});
395
- }
396
-
397
- function getSwitcherButton(type) {
398
- if ( 'undefined' === typeof switcherButtonHTML[type] ) {
399
- type = switcherPluginButtonType;
400
- }
401
- return switcherButtonHTML[type];
402
- }
403
-
404
- function setSwitcherPluginButton(type) {
405
- if ( 'undefined' === typeof type || 'undefined' === typeof switcherButtonHTML[type] ) {
406
- type = switcherPluginButtonType;
407
- }
408
-
409
- setTimeout(function() {
410
- var button = document.querySelector('[aria-label="'+getSwitcherButtonTitle()+'"]');
411
- if ( 'undefined' === typeof button || null === button ) {
412
- return;
413
- }
414
- var status = button.dataset.status;
415
- if ( 'undefined' === typeof status ) {
416
- var content = button.innerHTML;
417
- button.innerHTML = content + getSwitcherButton(type);
418
- button.dataset.status = 'init';
419
- } else {
420
- button.innerHTML = getSwitcherButton(type);
421
- button.dataset.status = 'changed';
422
- }
423
- }, 300);
424
- }
425
-
426
- function languageList() {
427
-
428
- if ( WPGlobusGutenberg.pagenow == WPGlobusGutenberg.postNewPage ) {
429
- return el(
430
- 'div',
431
- {style:{marginBottom:'20px'},className: "wpglobus-switcher-panel__switcher-notice"},
432
- WPGlobusGutenberg.i18n.save_post
433
- );
434
- }
435
-
436
- return el(
437
- 'ul',
438
- {className: 'language-list'},
439
- enabledLanguages.map(
440
- function(lang){
441
- return el( 'li', {key:lang, className:'language-item'},
442
- el('img', {style:{marginRight:'7px',width:'20px'},className:'wpglobus-switcher-panel__flag', height:'20', width:'20', src:flagsUrl[lang]}),
443
- el(Button, {href:refs[lang], isSmall:true, isPrimary:true}, languageNames[lang])
444
- );
445
- }
446
- )
447
- );
448
- }
449
-
450
- function onTabSelect(tab) {
451
- if ( tab.name == 'switcher' ) {
452
- return SwitcherTabContent();
453
- } else if ( tab.name == 'options' ) {
454
- return OptionsTabContent();
455
- }
456
- }
457
-
458
- function TabLayout() {
459
-
460
- var tabs = [
461
- {
462
- name: 'switcher',
463
- title: 'Languages',
464
- className: 'wpglobus-panel-tab wpglobus-panel-tab-selector edit-post-sidebar__panel-tab'
465
- }
466
- ];
467
-
468
- if ( WPGlobusGutenberg.isEnabledTab('options') ) {
469
- tabs.push(
470
- {
471
- name: 'options',
472
- title: 'Options',
473
- className: 'wpglobus-panel-tab wpglobus-panel-tab-options edit-post-sidebar__panel-tab'
474
- }
475
- );
476
- }
477
-
478
- return el(
479
- TabPanel,
480
- {
481
- name: 'WPGlobusSwitcherTabPanel',
482
- className: 'wpglobus-tab-panel',
483
- activeClass: 'is-active',
484
- tabs: tabs
485
- },
486
- onTabSelect
487
- );
488
- }
489
-
490
- function SwitcherTabContent() {
491
- return el(
492
- 'div',
493
- {
494
- className: 'wpglobus-tab-content wpglobus-selector-tab-content',
495
- },
496
- el(
497
- Notice,
498
- {
499
- className: 'wpglobus-switcher-panel__notice',
500
- status: 'informational',
501
- isDismissible: false
502
- },
503
- __( 'Select language' )
504
- ),
505
- el(
506
- 'div',
507
- {
508
- className: 'wpglobus-switcher-panel__switcher-box'
509
- },
510
- languageList()
511
- ),
512
- el(
513
- Button,
514
- {
515
- className: 'wpglobus-switcher-panel__button-link wpglobus-switcher-panel__info',
516
- href: WPGlobusGutenberg.store_link,
517
- isLink: true,
518
- target: "_blank"
519
- },
520
- __( 'WPGlobus Premium' )
521
- ),
522
- el(
523
- Button,
524
- {
525
- className: 'wpglobus-switcher-panel__button-link wpglobus-switcher-panel__settings-link',
526
- href: WPGlobusGutenberg.options_page_url,
527
- isLink: true
528
- },
529
- __( 'WPGlobus Options' )
530
- )
531
- );
532
- }
533
-
534
- var SwitcherPluginButton = withState({
535
- value: promisedPluginButtonType
536
- })(({
537
- value,
538
- setState
539
- }) => el(RadioControl, {
540
- label: '',
541
- help: 'Select type of switcher language button.',
542
- selected: promisedPluginButtonType,
543
- className: 'wpglobus-switcher-components-radio-control',
544
- options: [
545
- { label: 'Flag only', value: 'flagOnly' },
546
- { label: 'Flag with language', value: 'flagLanguage' },
547
- { label: 'Flag with language code', value: 'flagCode' },
548
- { label: 'Language only', value: 'languageOnly' },
549
- { label: 'Language code', value: 'languageCode' },
550
- ],
551
- onChange: value => {
552
- promisedPluginButtonType = value;
553
- setState({
554
- value
555
- });
556
- // @see setOption function for setSwitcherButtonType(value) and setSwitcherPluginButton(value)
557
- setOption(optionSwitcherButtonType, value);
558
- }
559
- }));
560
-
561
- function OptionsTabContent() {
562
- return el(
563
- 'div',
564
- {
565
- className: 'wpglobus-tab-content wpglobus-options-tab-content',
566
- },
567
- el(
568
- Notice,
569
- {
570
- className: 'wpglobus-switcher-panel__notice',
571
- status: 'informational',
572
- isDismissible: false
573
- },
574
- __( 'Select type' )
575
- ),
576
- el(
577
- SwitcherPluginButton,
578
- null
579
- )
580
- );
581
- }
582
-
583
- function Component() {
584
- setSwitcherPluginButton();
585
- return el(
586
- Fragment,
587
- {},
588
- el(
589
- PluginSidebarMoreMenuItem,
590
- {
591
- target: 'wpglobus-switcher-sidebar',
592
- icon: 'admin-site',
593
- //onClick: @see wp-includes\js\dist\edit-post.js
594
- },
595
- __( 'WPGlobus' )
596
- ),
597
- el(
598
- PluginSidebar,
599
- {
600
- name: 'wpglobus-switcher-sidebar',
601
- title: getSwitcherButtonTitle(),
602
- className: 'wpglobus-switcher-components-panel',
603
- //togglePin: @see wp-includes\js\dist\edit-post.js
604
- },
605
- el(
606
- 'div',
607
- {
608
- className: 'wpglobus-switcher-message wpglobus-switcher-error-message hidden',
609
- style:{}
610
- },
611
- ''
612
- ),
613
- el(
614
- PanelBody,
615
- {
616
- className: 'wpglobus-switcher-panel__body'
617
- },
618
- TabLayout()
619
- )
620
-
621
- )
622
- );
623
- }
624
- registerPlugin( 'wpglobus-switcher', {
625
- icon: '',
626
- render: Component,
627
- } );
628
- }
629
- }
630
- WPGlobusGutenberg = $.extend({}, WPGlobusGutenberg, api);
631
- WPGlobusGutenberg.init();
632
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/builders/gutenberg/assets/js/wpglobus-gutenberg.min.js DELETED
@@ -1 +0,0 @@
1
- "use strict";jQuery(document).ready(function(E){var C={counter:0,noticeOn:!1,initDone:!1,languageSelectorBoxDelta:0,oldLanguageSelector:!1,languageSelectorEnabled:!0,parseBool:function(e){return!/^(false|0)$/i.test(e)&&!!e},getCounter:function(){return C.counter},getOptionKey:function(e){return e=e||"",WPGlobusGutenberg.keyOption[e]},getOptions:function(){return WPGlobusGutenberg.options},isOldLanguageSelector:function(){return C.oldLanguageSelector},isPostDisabled:function(){return WPGlobusGutenberg.__post.disabled},isEnabledTab:function(e){void 0===e&&(e="options");var t=!1;return"options"==e&&C.parseBool(WPGlobusGutenberg.enabledOptionsTab)&&(t=!0),t},init:function(){WPGlobusGutenberg.yoastSeo=C.parseBool(WPGlobusGutenberg.yoastSeo),WPGlobusGutenberg.elementor=C.parseBool(WPGlobusGutenberg.elementor),C.isPostDisabled()||(C.initListeners(),C.initNotifications(),C.setTabs(),C.formHandler(),C.attachListeners())},initListeners:function(){WPGlobusGutenberg.yoastSeo&&1==E(".yoast.wpseo-metabox").length&&E(window).on("beforeunload",function(e){e.stopImmediatePropagation()})},formHandler:function(){var e=E(".metabox-base-form #referredby").attr("value");void 0!==e&&(e=-1==e.indexOf("language=en")?e+"&language="+WPGlobusGutenberg.language:e.replace("language=en","language="+WPGlobusGutenberg.language),E(".metabox-base-form #referredby").attr("value",e)),void 0!==(e=E('input[name="_wp_original_http_referer"]').attr("value"))&&(e=-1==e.indexOf("language=en")?e+"&language="+WPGlobusGutenberg.language:e.replace("language=en","language="+WPGlobusGutenberg.language),E('input[name="_wp_original_http_referer"]').attr("value",e))},initNotifications:function(){void 0!==wp.editPost&&void 0!==wp.plugins&&WPGlobusGutenberg.elementor&&"internal"==WPGlobusGutenberg.data.elementorCssPrintMethod&&wp.data.dispatch("core/notices").createNotice("error",WPGlobusGutenberg.i18n.elementorWarning,{id:"elementorcssprintmethodnotice",isDismissible:!0,actions:[{url:WPGlobusGutenberg.i18n.elementorActionLink,label:WPGlobusGutenberg.i18n.elementorActionLabel}]})},setTabs:function(){var t;0!=WPGlobusGutenberg.tabs.length?(C.oldLanguageSelector=!0,t=setInterval(function(){var e=E(".edit-post-header__settings");1==e.length&&(e.before(WPGlobusGutenberg.tabs),clearInterval(t))},200)):C.WPGlobusSwitcherPlugin()},setSelectorStatus:function(){var e;C.isOldLanguageSelector()&&(E(".wpglobus-gutenberg-selector-box").css({opacity:"0.2"}).attr("onclick","return false;"),C.languageSelectorEnabled=!1,e=setInterval(function(){if(0==E(".is-saving").length){if(clearInterval(e),WPGlobusGutenberg.pagenow==WPGlobusGutenberg.postNewPage&&-1!=location.pathname.indexOf(WPGlobusGutenberg.postEditPage))return WPGlobusGutenberg.pagenow=WPGlobusGutenberg.postEditPage,E(".wpglobus-gutenberg-selector-box").css({opacity:"1"}).attr("onclick",""),void C.reloadPage();C.languageSelectorEnabled=!0,E(".wpglobus-gutenberg-selector-box").css({opacity:"1"}).attr("onclick","")}},400))},reloadPage:function(){E(".wpglobus-selector-grid").css({"grid-template-columns":"10% 90%"}),E(".wpglobus-gutenberg-selector-text").text(WPGlobusGutenberg.i18n.reload),function e(){E(".wpglobus-gutenberg-selector").fadeOut(500).fadeIn(500,e)}(),setTimeout(function(){location.reload()},500)},attachListeners:function(){C.isOldLanguageSelector()&&(E(document).on("mouseenter",".wpglobus-gutenberg-selector",function(e){C.languageSelectorEnabled&&(E(".wpglobus-gutenberg-selector-dropdown").css({display:"block"}),C.languageSelectorBoxDelta=e.screenY,E(".edit-post-header").css({"z-index":"100000"}),E(".wpglobus-gutenberg-selector-box").css({"z-index":"100001"}))}),E(document).on("mouseleave",".wpglobus-gutenberg-selector",function(e){0!=C.languageSelectorBoxDelta&&e.screenY-C.languageSelectorBoxDelta<=0&&(E(".wpglobus-gutenberg-selector-dropdown").css({display:"none"}),E(".edit-post-header").css({"z-index":"9989"}),E(".wpglobus-gutenberg-selector-box").css({"z-index":"100"}))}),E(document).on("mouseleave",".wpglobus-gutenberg-selector-dropdown",function(e){E(".wpglobus-gutenberg-selector-dropdown").css({display:"none"}),E(".edit-post-header").css({"z-index":"9989"}),E(".wpglobus-gutenberg-selector-box").css({"z-index":"10000"})}),E(document).on("click",".editor-post-save-draft",function(){C.setSelectorStatus()}),E(document).on("click",".editor-post-publish-button",function(){C.setSelectorStatus()}))},WPGlobusSwitcherPlugin:function(){if(void 0!==wp.editPost&&void 0!==wp.plugins){var e,t=WPGlobusGutenberg.language,n=WPGlobusCoreData.enabled_languages,o=WPGlobusCoreData.en_language_name,s=WPGlobusGutenberg.flags_url,a="WPGlobus Switcher",l=location.href,u={};for(e in n)-1==l.indexOf("language="+t)?u[n[e]]=l+"&language="+n[e]:u[n[e]]=l.replace("language="+t,"language="+n[e]);var i=wp.i18n.__,r=wp.element.createElement,g=wp.element.Fragment,c=wp.components.TabPanel,b=wp.compose.withState,p=wp.components.RadioControl,d=wp.components.Notice,w=wp.components.Button,m=wp.editPost.PluginSidebarMoreMenuItem,G=wp.components.PanelBody,f=wp.editPost.PluginSidebar,h=wp.plugins.registerPlugin,P=E(".components-panel__header.edit-post-sidebar-header button.components-icon-button").eq(0),v={flagOnly:'<img height="20" width="20" style="width:20px;" src="'+WPGlobusGutenberg.flags_url[WPGlobusGutenberg.language]+'" />',flagLanguage:'<img height="20" width="20" style="width:20px;" src="'+WPGlobusGutenberg.flags_url[WPGlobusGutenberg.language]+'" />&nbsp;'+WPGlobusAdmin.data.en_language_name[WPGlobusGutenberg.language],flagCode:'<img height="20" width="20" style="width:20px;" src="'+WPGlobusGutenberg.flags_url[WPGlobusGutenberg.language]+'" />&nbsp;'+WPGlobusGutenberg.language,languageOnly:"&nbsp;"+WPGlobusAdmin.data.en_language_name[WPGlobusGutenberg.language],languageCode:"&nbsp;"+WPGlobusGutenberg.language},W="",_="",y=C.getOptionKey("switcherButtonType");S(WPGlobusGutenberg.options[y]),_=W,E(document).on("click",P,function(){T()});var x=b({value:_})(function(e){e.value;var t=e.setState;return r(p,{label:"",help:"Select type of switcher language button.",selected:_,className:"wpglobus-switcher-components-radio-control",options:[{label:"Flag only",value:"flagOnly"},{label:"Flag with language",value:"flagLanguage"},{label:"Flag with language code",value:"flagCode"},{label:"Language only",value:"languageOnly"},{label:"Language code",value:"languageCode"}],onChange:function(e){t({value:_=e}),O(y,e)}})});h("wpglobus-switcher",{icon:"",render:function(){return T(),r(g,{},r(m,{target:"wpglobus-switcher-sidebar",icon:"admin-site"},i("WPGlobus")),r(f,{name:"wpglobus-switcher-sidebar",title:a,className:"wpglobus-switcher-components-panel"},r("div",{className:"wpglobus-switcher-message wpglobus-switcher-error-message hidden",style:{}},""),r(G,{className:"wpglobus-switcher-panel__body"},(e=[{name:"switcher",title:"Languages",className:"wpglobus-panel-tab wpglobus-panel-tab-selector edit-post-sidebar__panel-tab"}],WPGlobusGutenberg.isEnabledTab("options")&&e.push({name:"options",title:"Options",className:"wpglobus-panel-tab wpglobus-panel-tab-options edit-post-sidebar__panel-tab"}),r(c,{name:"WPGlobusSwitcherTabPanel",className:"wpglobus-tab-panel",activeClass:"is-active",tabs:e},B)))));var e}})}function S(e){W=e=e||"flagLanguage"}function L(e){void 0===e&&(e=!0);var t,n=document.querySelectorAll(".wpglobus-switcher-components-radio-control .components-radio-control__input");0!=n.length&&(e?(n.forEach(function(e){e.classList.add(e.value),e.classList.remove("wpglobus-switcher-pulsate-radio"),e.classList.add("wpglobus-switcher-pulsate-radio-off")}),(t=document.querySelector(".wpglobus-switcher-components-radio-control ."+_)).classList.remove("wpglobus-switcher-pulsate-radio-off"),t.classList.add("wpglobus-switcher-pulsate-radio")):n.forEach(function(e){e.classList.remove("wpglobus-switcher-pulsate-radio"),e.classList.remove("wpglobus-switcher-pulsate-radio-off"),e.classList.add("wpglobus-switcher-pulsate-radio-on")}))}function N(e,t){void 0===e||C.noticeOn||(C.noticeOn=!0,e.innerText=t,e.classList.remove("hidden"),setTimeout(function(){e.classList.add("hidden"),C.noticeOn=!1},3e3))}function O(e,t){t=t||"",y==(e=e||"")&&(L(!0),function(e,t){if(""==(e=e||""))return;var n={sender:"WPGlobusGutenberg",_action:"saveOption",is_admin:1};return n.counter=C.counter++,n.options={},n.options[e]=t,wp.ajax.post(WPGlobusGutenberg.wpglobusAjax,{data:n})}(e,t).then(function(e){"success"==e.result&&(S(t),T(WPGlobusGutenberg.options[y]=t))}).fail(function(e){var t=document.getElementsByClassName("wpglobus-switcher-error-message");void 0!==t[0]&&("error"==e.result?N(t[0],e.message):400==e.status&&N(t[0],"Error: "+e.status+" ("+e.statusText+")"),_=W);var n=document.getElementsByClassName("wpglobus-panel-tab-options");void 0!==n[0]&&-1!=n[0].classList.value.indexOf("is-active")&&n[0].click()}).always(function(){L(!1)}))}function k(e){return void 0===v[e]&&(e=W),v[e]}function T(n){void 0!==n&&void 0!==v[n]||(n=W),setTimeout(function(){var e,t=document.querySelector('[aria-label="'+a+'"]');null!=t&&(void 0===t.dataset.status?(e=t.innerHTML,t.innerHTML=e+k(n),t.dataset.status="init"):(t.innerHTML=k(n),t.dataset.status="changed"))},300)}function B(e){return"switcher"==e.name?r("div",{className:"wpglobus-tab-content wpglobus-selector-tab-content"},r(d,{className:"wpglobus-switcher-panel__notice",status:"informational",isDismissible:!1},i("Select language")),r("div",{className:"wpglobus-switcher-panel__switcher-box"},WPGlobusGutenberg.pagenow==WPGlobusGutenberg.postNewPage?r("div",{style:{marginBottom:"20px"},className:"wpglobus-switcher-panel__switcher-notice"},WPGlobusGutenberg.i18n.save_post):r("ul",{className:"language-list"},n.map(function(e){return r("li",{key:e,className:"language-item"},r("img",{style:{marginRight:"7px",width:"20px"},className:"wpglobus-switcher-panel__flag",height:"20",width:"20",src:s[e]}),r(w,{href:u[e],isSmall:!0,isPrimary:!0},o[e]))}))),r(w,{className:"wpglobus-switcher-panel__button-link wpglobus-switcher-panel__info",href:WPGlobusGutenberg.store_link,isLink:!0,target:"_blank"},i("WPGlobus Premium")),r(w,{className:"wpglobus-switcher-panel__button-link wpglobus-switcher-panel__settings-link",href:WPGlobusGutenberg.options_page_url,isLink:!0},i("WPGlobus Options"))):"options"==e.name?r("div",{className:"wpglobus-tab-content wpglobus-options-tab-content"},r(d,{className:"wpglobus-switcher-panel__notice",status:"informational",isDismissible:!1},i("Select type")),r(x,null)):void 0}}};WPGlobusGutenberg=E.extend({},WPGlobusGutenberg,C),WPGlobusGutenberg.init()});
 
trunk/includes/builders/gutenberg/class-wpglobus-gutenberg-update-post.php DELETED
@@ -1,304 +0,0 @@
1
- <?php
2
- /**
3
- * File: class-wpglobus-gutenberg-update-post.php
4
- *
5
- * @package WPGlobus\Builders\Gutenberg
6
- * @author Alex Gor(alexgff)
7
- */
8
-
9
- if ( ! class_exists( 'WPGlobus_Gutenberg_Update_Post' ) ) :
10
-
11
- /**
12
- * Class WPGlobus_Gutenberg_Update_Post.
13
- */
14
- class WPGlobus_Gutenberg_Update_Post extends WPGlobus_Builder_Update_Post {
15
-
16
- /** @var string */
17
- protected $language = null;
18
-
19
- /** @var WP_Post */
20
- protected $_prepared_post = null;
21
-
22
- /**
23
- * Constructor.
24
- */
25
- public function __construct() {
26
-
27
- parent::__construct( 'gutenberg' );
28
-
29
- /**
30
- * @todo to save meta see request ($_REQUEST)
31
- * post.php?post=259&action=edit&classic-editor=1&meta_box=1
32
- */
33
-
34
- //if ( defined('DOING_AJAX') && DOING_AJAX ) {
35
- //}
36
-
37
- /**
38
- * Filter's order:
39
- * 1. rest_pre_insert_post
40
- * 2. wp_insert_post_data
41
- * 3. rest_request_after_callbacks
42
- */
43
-
44
- /**
45
- * @see \WP_REST_Posts_Controller::prepare_item_for_database
46
- */
47
- if ( 'core' === WPGlobus::Config()->builder->get( 'context' ) ) {
48
-
49
- $post_type = WPGlobus::Config()->builder->get( 'post_type' );
50
- if ( ! empty( $post_type ) ) {
51
- add_filter( "rest_pre_insert_{$post_type}", array( $this, 'filter__pre_insert_post' ), 2, 2 );
52
- }
53
- } else {
54
-
55
- add_filter( 'rest_pre_insert_post', array( $this, 'filter__pre_insert_post' ), 2, 2 );
56
- add_filter( 'rest_pre_insert_page', array( $this, 'filter__pre_insert_post' ), 2, 2 );
57
-
58
- }
59
-
60
- /**
61
- * @todo incorrect the saving post in extra languages with priority = 10
62
- */
63
- add_filter( 'wp_insert_post_data', array( $this, 'filter__wp_insert_post_data' ), 100, 2 );
64
-
65
- /**
66
- * @see \WP_REST_Server::dispatch in \wp-includes\rest-api\class-wp-rest-server.php
67
- */
68
- add_filter( 'rest_request_after_callbacks', array( $this, 'filter__rest_after_callbacks' ), 10, 3 );
69
-
70
- }
71
-
72
- /**
73
- * Callback for 'rest_request_after_callbacks' will be fired after 'wp_insert_post_data' filter.
74
- *
75
- * @see 'filter__wp_insert_post_data'
76
- *
77
- * @param stdClass $response
78
- * @param array $handler
79
- * @param mixed $request Unused.
80
- *
81
- * @return mixed
82
- */
83
- public function filter__rest_after_callbacks(
84
- $response, $handler, /** @noinspection PhpUnusedParameterInspection */
85
- $request
86
- ) {
87
-
88
- if ( ! empty( $handler['methods']['POST'] ) && ! empty( $handler['methods']['PUT'] ) && ! empty( $handler['methods']['PATCH'] ) ) {
89
- /**
90
- * Update post.
91
- */
92
-
93
- /**
94
- * This returns incorrect language
95
- * $builder_language = get_post_meta($post_id, WPGlobus::Config()->builder->get_language_meta_key(), true);
96
- *
97
- * @todo check updating language meta after UPDATE post
98
- */
99
- $builder_language = $this->language;
100
-
101
- // if ( empty( $builder_language ) ) {
102
- // @todo incorrect case
103
- // }
104
-
105
- $fix_title = true;
106
- if ( ! empty( $response->data['title']['raw'] ) && WPGlobus_Core::has_translations( $response->data['title']['raw'] ) ) {
107
- $response->data['title']['raw'] = WPGlobus_Core::text_filter( $response->data['title']['raw'], $builder_language, WPGlobus::RETURN_EMPTY );
108
- $response->data['title']['rendered'] = $response->data['title']['raw'];
109
- $fix_title = false;
110
- }
111
-
112
- // $fix_excerpt = true;
113
- if ( ! empty( $response->data['excerpt']['raw'] ) && WPGlobus_Core::has_translations( $response->data['excerpt']['raw'] ) ) {
114
- $excerpt_in_default = WPGlobus_Core::text_filter( $response->data['excerpt']['raw'], WPGlobus::Config()->default_language );
115
- //$excerpt = WPGlobus_Core::text_filter($response->data['excerpt']['raw'], $builder_language);
116
- $excerpt = WPGlobus_Core::text_filter( $response->data['excerpt']['raw'], $builder_language, WPGlobus::RETURN_EMPTY );
117
- $response->data['excerpt']['raw'] = $excerpt;
118
- $response->data['excerpt']['rendered'] = str_replace( $excerpt_in_default, $excerpt, $response->data['excerpt']['rendered'] );
119
- // $fix_excerpt = false;
120
- }
121
-
122
- if ( WPGlobus::Config()->default_language === $builder_language ) {
123
- return $response;
124
- }
125
-
126
- if ( $fix_title ) :
127
- /**
128
- * Fix the title.
129
- * When we have title with different value:
130
- * $response->data[title][raw] => Русский заголовок
131
- * $response->data[title][rendered] => English title
132
- */
133
- if ( empty( $response->data['title'] ) ) {
134
- return $response;
135
- }
136
- if ( empty( $response->data['title']['rendered'] ) || empty( $response->data['title']['raw'] ) ) {
137
- return $response;
138
- }
139
-
140
- if ( $response->data['title']['rendered'] !== $response->data['title']['raw'] ) {
141
- $response->data['title']['rendered'] = $response->data['title']['raw'];
142
- }
143
-
144
- endif;
145
-
146
- }
147
-
148
- return $response;
149
- }
150
-
151
- /**
152
- * Callback for 'rest_pre_insert_post'.
153
- *
154
- * @param WP_Post $prepared_post
155
- * @param mixed $request Unused.
156
- *
157
- * @return mixed
158
- */
159
- public function filter__pre_insert_post(
160
- $prepared_post, /** @noinspection PhpUnusedParameterInspection */
161
- $request
162
- ) {
163
-
164
- global $wpdb;
165
- $_post = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE ID = %d LIMIT 1", $prepared_post->ID ) );
166
-
167
- $builder_language = WPGlobus::Config()->builder->get_language();
168
-
169
- if ( empty( $builder_language ) ) {
170
- /**
171
- * @todo Probably we are working with WP Rest API here.
172
- * Check superglobal variable $_SERVER or may be something other.
173
- */
174
- $builder_language = get_post_meta( $prepared_post->ID, WPGlobus::get_language_meta_key(), true );
175
-
176
- if ( empty( $builder_language ) ) {
177
- /**
178
- * Case when post is draft and has post_status 'auto-draft'.
179
- */
180
- $builder_language = WPGlobus::Config()->default_language;
181
- }
182
- }
183
-
184
- $this->language = $builder_language;
185
-
186
- $fields = array();
187
-
188
- /**
189
- * Post title.
190
- */
191
- if ( ! empty( $prepared_post->post_title ) ) {
192
- $fields['post_title'] = $prepared_post->post_title;
193
- // } else {
194
- //$fields['post_title'] = '';
195
- }
196
-
197
- /**
198
- * Post content.
199
- */
200
- if ( ! empty( $prepared_post->post_content ) ) {
201
- $fields['post_content'] = $prepared_post->post_content;
202
- } else {
203
- $fields['post_content'] = '';
204
- }
205
-
206
- /**
207
- * Post excerpt.
208
- */
209
- if ( isset( $prepared_post->post_excerpt ) ) {
210
- if ( empty( $prepared_post->post_excerpt ) ) {
211
- /**
212
- * Post excerpt was removed by user.
213
- */
214
- $fields['post_excerpt'] = '';
215
- } else {
216
- $fields['post_excerpt'] = $prepared_post->post_excerpt;
217
- }
218
- } else {
219
- /**
220
- * Post excerpt was not modified by user.
221
- * so, we have unset '$prepared_post->post_excerpt' field.
222
- */
223
- $fields['post_excerpt'] = WPGlobus_Core::text_filter( $_post->post_excerpt, $builder_language, WPGlobus::RETURN_EMPTY );
224
- }
225
-
226
- foreach ( $fields as $field => $value ) {
227
-
228
- $tr = array();
229
-
230
- foreach ( WPGlobus::Config()->enabled_languages as $lang ) :
231
-
232
- if ( $lang === $builder_language ) {
233
-
234
- $text = $value;
235
- if ( WPGlobus_Core::has_translations( $value ) ) {
236
- $text = WPGlobus_Core::text_filter( $value, $lang, WPGlobus::RETURN_EMPTY );
237
- }
238
- if ( ! empty( $text ) ) {
239
- $tr[ $lang ] = $text;
240
- }
241
- } else {
242
-
243
- $text = WPGlobus_Core::text_filter( $_post->$field, $lang, WPGlobus::RETURN_EMPTY );
244
- if ( ! empty( $text ) ) {
245
- $tr[ $lang ] = $text;
246
- }
247
- }
248
-
249
- endforeach;
250
-
251
- /**
252
- * @since 2.2.29 we are using `wp_slash` function.
253
- * @see https://github.com/WPGlobus/WPGlobus/pull/83
254
- */
255
- $prepared_post->$field = wp_slash( WPGlobus_Utils::build_multilingual_string( $tr ) );
256
-
257
- }
258
-
259
- /**
260
- * $this->_prepared_post contains 'post_title', 'post_content', 'post_excerpt' with language marks and ready to insert in DB.
261
- */
262
- $this->_prepared_post = clone $prepared_post;
263
-
264
- return $prepared_post;
265
-
266
- }
267
-
268
- /**
269
- * Callback for 'wp_insert_post_data'.
270
- *
271
- * @param array $data
272
- * @param mixed $postarr Unused.
273
- *
274
- * @return array
275
- */
276
- public function filter__wp_insert_post_data(
277
- $data, /** @noinspection PhpUnusedParameterInspection */
278
- $postarr
279
- ) {
280
-
281
- /**
282
- * Check $this->_prepared_post was loaded with first XMLHttpRequest.
283
- *
284
- * @see 'filter__pre_insert_post' filter.
285
- * @see Network tab in browser console.
286
- */
287
- if ( ! is_object( $this->_prepared_post ) ) {
288
- return $data;
289
- }
290
-
291
- $_fields = array( 'post_title', 'post_content', 'post_excerpt' );
292
- foreach ( $_fields as $_field ) {
293
-
294
- if ( ! empty( $data[ $_field ] ) && ! empty( $this->_prepared_post->$_field ) ) {
295
- $data[ $_field ] = $this->_prepared_post->$_field;
296
- }
297
- }
298
-
299
- return $data;
300
- }
301
-
302
- }
303
-
304
- endif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/builders/gutenberg/class-wpglobus-gutenberg.php DELETED
@@ -1,601 +0,0 @@
1
- <?php
2
- /**
3
- * File: class-wpglobus-gutenberg.php
4
- *
5
- * @package WPGlobus\Builders\Gutenberg
6
- * @author Alex Gor(alexgff)
7
- */
8
-
9
- /**
10
- * Class WPGlobus_Gutenberg.
11
- */
12
- class WPGlobus_Gutenberg extends WPGlobus_Builder {
13
-
14
- /**
15
- * Constructor.
16
- */
17
- public function __construct() {
18
-
19
- parent::__construct( 'gutenberg' );
20
-
21
- if ( is_admin() ) {
22
-
23
- /**
24
- * Filter the post for Gutenberg editor.
25
- *
26
- * @see wp-includes\class-wp-query.php
27
- */
28
- add_action( 'the_post', array( $this, 'translate_post' ), 5 );
29
-
30
- /**
31
- * Add 'wpglobus-language' hidden field.
32
- */
33
- add_action( 'add_meta_boxes', array( $this, 'on__add_meta_box' ) );
34
-
35
- add_action( 'admin_enqueue_scripts', array( $this, 'on__enqueue_scripts' ), 1000 );
36
-
37
- /**
38
- * Action admin_print_styles.
39
- *
40
- * @since 1.9.29
41
- */
42
- add_action( 'admin_print_styles', array( $this, 'on__enqueue_styles' ) );
43
-
44
- /**
45
- * Action enqueue_block_assets.
46
- *
47
- * @see wp-includes\script-loader.php
48
- * @since 2.2.3
49
- */
50
- add_action( 'enqueue_block_assets', array( $this, 'on__enqueue_block_assets' ) );
51
-
52
- /**
53
- * Filter wpglobus_seo_meta_box_title.
54
- *
55
- * @see wpglobus-seo\includes\class-wpglobus-seo.php
56
- */
57
- add_filter( 'wpglobus_seo_meta_box_title', array( $this, 'filter__seo_meta_box_title' ) );
58
-
59
- }
60
-
61
- }
62
-
63
- /**
64
- * Enqueue block assets.
65
- *
66
- * @since 2.2.3
67
- */
68
- public function on__enqueue_block_assets() {
69
-
70
- if ( ! empty( WPGlobus::Config()->block_editor_old_fashioned_language_switcher ) && '1' === WPGlobus::Config()->block_editor_old_fashioned_language_switcher ) {
71
- return;
72
- }
73
-
74
- /**
75
- * @since 2.2.3 wpglobus-block-editor.css
76
- * @since 2.2.14 wpglobus-switcher.css
77
- */
78
- $style_file = WPGlobus::plugin_dir_url() . 'includes/builders/gutenberg/assets/css/dist/wpglobus-switcher.css';
79
-
80
- /**
81
- * Enqueue frontend and editor block styles.
82
- */
83
- wp_enqueue_style(
84
- 'wpglobus-switcher-css',
85
- $style_file,
86
- '',
87
- WPGLOBUS_VERSION
88
- );
89
-
90
- /**
91
- * Using ESNext syntax @W.I.P.
92
- *
93
- * @since 2.2.3 We are using ES5 syntax for WPGlobus plugin for Block Editor.
94
- */
95
- return;
96
-
97
- // phpcs:disable
98
-
99
- /**
100
- * Temporarily.
101
- *
102
- * @noinspection PhpUnreachableStatementInspection
103
- */
104
- $script_file = WPGlobus::plugin_dir_url() . 'includes/builders/gutenberg/assets/js/dist/wpglobus-block-editor' . WPGlobus::SCRIPT_SUFFIX() . '.js';
105
-
106
- /**
107
- * Enqueue the bundled block JS file.
108
- */
109
- wp_enqueue_script(
110
- 'wpglobus-block-editor-js',
111
- $script_file,
112
- array(
113
- 'wp-i18n',
114
- 'wp-blocks',
115
- 'wp-edit-post',
116
- 'wp-element',
117
- 'wp-editor',
118
- 'wp-components',
119
- 'wp-data',
120
- 'wp-plugins',
121
- 'wp-edit-post',
122
- 'wp-api',
123
- ),
124
- WPGLOBUS_VERSION,
125
- false
126
- );
127
-
128
- /**
129
- * Enqueue frontend and editor block styles.
130
- */
131
- wp_enqueue_style(
132
- 'wpglobus-block-editor-css',
133
- $style_file,
134
- '',
135
- WPGLOBUS_VERSION
136
- );
137
-
138
- // phpcs:enable
139
-
140
- }
141
-
142
- /**
143
- * Translate post.
144
- *
145
- * @param WP_Post $object The Post object.
146
- */
147
- public function translate_post( $object ) {
148
- if ( $object instanceof WP_Post ) {
149
- WPGlobus_Core::translate_wp_post( $object, $this->language, WPGlobus::RETURN_EMPTY );
150
- }
151
- }
152
-
153
- /**
154
- * Generate box with language switcher.
155
- *
156
- * @param string $page The page.
157
- *
158
- * @return string
159
- */
160
- private function get_switcher_box( $page ) {
161
-
162
- global $post;
163
-
164
- // TODO check if $_SERVER['QUERY_STRING'] exists and sanitize it.
165
- // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized: Detected usage of a non-sanitized input variable: $_SERVER['QUERY_STRING'].
166
- // phpcs: WordPress.Security.ValidatedSanitizedInput.InputNotValidated: Detected usage of a possibly undefined superglobal array index: $_SERVER['QUERY_STRING']. Use isset() or empty() to check the index exists before using it.
167
- // phpcs: WordPress.Security.ValidatedSanitizedInput.MissingUnslash: $_SERVER data not unslashed before sanitization. Use wp_unslash() or similar.
168
- $query_string = explode( '&', $_SERVER['QUERY_STRING'] ); // phpcs:ignore
169
-
170
- foreach ( $query_string as $key => $_q ) {
171
- if ( false !== strpos( $_q, 'language=' ) ) {
172
- unset( $query_string[ $key ] );
173
- }
174
- }
175
- $query = implode( '&', $query_string );
176
- $url = admin_url(
177
- add_query_arg(
178
- array(
179
- 'language' => '{{language}}',
180
- ),
181
- 'post.php?' . $query
182
- )
183
- );
184
-
185
- $_box_style = 'position:absolute;top:15px;left:10px;z-index:100;';
186
- if ( file_exists( WPGlobus::Config()->flag_path['big'] . WPGlobus::Config()->flag[ $this->language ] ) ) {
187
- $_flag_img = WPGlobus::Config()->flag_urls['big'] . WPGlobus::Config()->flag[ $this->language ];
188
- $_height = 'height="25px"';
189
- $_width = 'width="25px"';
190
- $_flag_style = 'style="border: 1px solid #bfbfbf;border-radius: 25px;"';
191
- } else {
192
- $_flag_img = WPGlobus::Config()->flags_url . WPGlobus::Config()->flag[ $this->language ];
193
- $_height = '';
194
- $_width = '';
195
- $_flag_style = 'style="margin-top:5px;"';
196
-
197
- $_box_style .= 'margin-top:3px;';
198
- }
199
-
200
- $out = '';
201
-
202
- if ( 'post-new.php' === $page ) {
203
-
204
- ob_start();
205
- ?>
206
- <div style="<?php echo $_box_style; // phpcs:ignore WordPress.Security.EscapeOutput ?>"
207
- class="wpglobus-gutenberg-selector-box">
208
- <!--suppress CssInvalidPropertyValue -->
209
- <div class="wpglobus-selector-grid"
210
- style="">
211
- <a style="text-decoration:none;cursor:text;" onclick="return false;"
212
- href="#" class="wpglobus-gutenberg-selector wpglobus-gutenberg-selector-column-1"
213
- data-language="<?php echo esc_attr( $this->language ); ?>">
214
- <img <?php echo $_height . $_width; // phpcs:ignore WordPress.Security.EscapeOutput ?>
215
- <?php echo $_flag_style; // phpcs:ignore WordPress.Security.EscapeOutput ?>
216
- src="<?php echo esc_url( $_flag_img ); ?>" alt=""/>
217
- </a>
218
- <a style="text-decoration:none;cursor:text;" onclick="return false;"
219
- href="#" class="wpglobus-gutenberg-selector wpglobus-gutenberg-selector-column-2"
220
- data-language="<?php echo esc_attr( $this->language ); ?>">
221
- &nbsp;<span
222
- class="wpglobus-gutenberg-selector-text"><?php echo esc_html( WPGlobus::Config()->en_language_name[ $this->language ] ); ?></span>
223
- </a>
224
- </div>
225
- <ul class="wpglobus-gutenberg-selector-dropdown"
226
- style="display:none;position:fixed;margin:5px;list-style-type:none;">
227
- <li class="item" style="border:1px solid #ddd;background-color:#eee;padding:4px;">
228
- <?php esc_html_e( 'Before switching the language, please save draft or publish.', 'wpglobus' ); ?>
229
- </li>
230
- </ul>
231
- </div>
232
- <?php
233
- $out = ob_get_clean();
234
-
235
- } elseif ( 'post.php' === $page ) {
236
-
237
- ob_start();
238
- ?>
239
- <div style="<?php echo $_box_style; // phpcs:ignore WordPress.Security.EscapeOutput ?>"
240
- class="wpglobus-gutenberg-selector-box">
241
- <!--suppress CssInvalidPropertyValue -->
242
- <div class="wpglobus-selector-grid"
243
- style="">
244
- <a style="text-decoration: none;"
245
- href="<?php echo esc_url( str_replace( '{{language}}', $this->language, $url ) ); ?>"
246
- class="wpglobus-gutenberg-selector wpglobus-gutenberg-selector-column-1"
247
- data-language="<?php echo esc_attr( $this->language ); ?>">
248
- <img <?php echo $_height . $_width; // phpcs:ignore WordPress.Security.EscapeOutput ?>
249
- <?php echo $_flag_style; // phpcs:ignore WordPress.Security.EscapeOutput ?>
250
- src="<?php echo $_flag_img; // phpcs:ignore WordPress.Security.EscapeOutput ?>" alt=""/>
251
- </a>
252
- <a style="text-decoration: none;"
253
- href="<?php echo esc_url( str_replace( '{{language}}', $this->language, $url ) ); ?>"
254
- class="wpglobus-gutenberg-selector wpglobus-gutenberg-selector-column-2"
255
- data-language="<?php echo esc_attr( $this->language ); ?>">
256
- &nbsp;<span class="wpglobus-gutenberg-selector-text">
257
- <?php
258
- /**
259
- * Filter the current language name.
260
- *
261
- * @since 2.1.0
262
- *
263
- * @param string $en_language_name English language name.
264
- * @param string $language Current language.
265
- * @param WP_Post $post The current post.
266
- *
267
- * @return string
268
- */
269
- $en_language_name = apply_filters(
270
- 'wpglobus_gutenberg_selector_text',
271
- WPGlobus::Config()->en_language_name[ $this->language ],
272
- $this->language,
273
- $post
274
- );
275
- echo esc_html( $en_language_name );
276
- ?>
277
- </span>
278
- </a>
279
- </div>
280
- <ul class="wpglobus-gutenberg-selector-dropdown"
281
- style="display:none;position:fixed;border-left:1px solid #ddd;border-right:1px solid #ddd;background-color:#eee;margin:5px 0 0;padding:0 5px 5px 0;list-style-type:none;">
282
- <?php foreach ( WPGlobus::Config()->enabled_languages as $lang ) : ?>
283
- <?php
284
- if ( $lang === $this->language ) {
285
- continue;
286
- }
287
- ?>
288
- <li class="item"
289
- style="text-align:left;cursor:pointer;border-bottom:1px solid #ddd;margin:0;height:25px;padding:5px 0 5px 5px;"
290
- data-language="<?php echo esc_attr( $lang ); ?>">
291
- <a href="<?php echo esc_url( str_replace( '{{language}}', $lang, $url ) ); ?>">
292
- <img src="<?php echo esc_url( WPGlobus::Config()->flags_url . WPGlobus::Config()->flag[ $lang ] ); ?>"
293
- alt=""/>&nbsp;<?php echo esc_html( WPGlobus::Config()->en_language_name[ $lang ] ); ?>
294
- </a>
295
- </li>
296
- <?php endforeach; ?>
297
- </ul>
298
- </div>
299
- <?php
300
- $out = ob_get_clean();
301
-
302
- }
303
-
304
- return $out;
305
-
306
- }
307
-
308
- /**
309
- * Callback for 'wpglobus_seo_meta_box_title'.
310
- *
311
- * @param string $meta_box_title Metabox title.
312
- *
313
- * @return string
314
- */
315
- public function filter__seo_meta_box_title( $meta_box_title ) {
316
- return $meta_box_title . ' ' .
317
- // Translators: Metabox title FOR language.
318
- _x( 'for', 'filter__seo_meta_box_title', 'wpglobus' )
319
- . ' ' . WPGlobus::Config()->en_language_name[ $this->get_current_language() ];
320
- }
321
-
322
- /**
323
- * Enqueue styles.
324
- *
325
- * @since 1.9.29
326
- * @return void
327
- */
328
- public function on__enqueue_styles() {
329
- /**
330
- * Pagenow global.
331
- *
332
- * @var string $pagenow
333
- */
334
- global $pagenow;
335
-
336
- if ( ! in_array( $pagenow, array( 'post.php', 'post-new.php' ), true ) ) {
337
- return;
338
- }
339
-
340
- // phpcs:ignore WordPress.Security.NonceVerification
341
- if ( isset( $_GET['classic-editor'] ) ) {
342
- return;
343
- }
344
-
345
- wp_register_style(
346
- 'wpglobus-gutenberg',
347
- WPGlobus::plugin_dir_url() . 'includes/builders/gutenberg/assets/css/wpglobus-gutenberg.css',
348
- array(),
349
- WPGLOBUS_VERSION,
350
- 'all'
351
- );
352
- wp_enqueue_style( 'wpglobus-gutenberg' );
353
-
354
- }
355
-
356
- /**
357
- * Enqueue scripts.
358
- *
359
- * @return void
360
- */
361
- public function on__enqueue_scripts() {
362
-
363
- /**
364
- * Globals.
365
- *
366
- * @var string $pagenow
367
- * @var string $wp_version
368
- * @var \WP_Post $post
369
- */
370
- global $pagenow, $wp_version, $post;
371
-
372
- if ( ! in_array( $pagenow, array( 'post.php', 'post-new.php' ), true ) ) {
373
- return;
374
- }
375
-
376
- // phpcs:ignore WordPress.Security.NonceVerification
377
- if ( isset( $_GET['classic-editor'] ) ) {
378
- return;
379
- }
380
-
381
- /**
382
- * Old-style switcher.
383
- *
384
- * @since 2.2.3
385
- */
386
- $tabs = '';
387
- if ( ! empty( WPGlobus::Config()->block_editor_old_fashioned_language_switcher ) && 1 === (int) WPGlobus::Config()->block_editor_old_fashioned_language_switcher ) {
388
- $tabs = $this->get_switcher_box( $pagenow );
389
- }
390
-
391
- $i18n = array();
392
- $i18n['reload'] = esc_html__( 'Page is being reloaded. Please wait...', 'wpglobus' );
393
- $i18n['save_post'] = esc_html__( 'Before switching the language, please save draft or publish, then reload page.', 'wpglobus' );
394
-
395
- /**
396
- * Extra data.
397
- *
398
- * @since 2.4.11
399
- */
400
- $__data = array();
401
-
402
- /**
403
- * We have Gutenberg in core since WP 5.0.
404
- *
405
- * @since 2.0
406
- */
407
- $version_gutenberg = '';
408
- if ( version_compare( $wp_version, '4.9.99', '>' ) ) {
409
- $version_gutenberg = $wp_version;
410
- } elseif ( defined( 'GUTENBERG_VERSION' ) ) {
411
- $version_gutenberg = GUTENBERG_VERSION;
412
- }
413
-
414
- /**
415
- * Check for Yoast SEO.
416
- */
417
- $yoast_seo = false;
418
- if ( defined( 'WPSEO_VERSION' ) ) {
419
- $yoast_seo = true;
420
- }
421
-
422
- /**
423
- * Check for Elementor.
424
- *
425
- * @since 2.4.11
426
- */
427
- $elementor = false;
428
- if ( defined( 'ELEMENTOR_VERSION' ) ) {
429
- $elementor = true;
430
- $__data['elementorVersion'] = ELEMENTOR_VERSION;
431
- $__data['elementorCssPrintMethod'] = get_option('elementor_css_print_method', 'external');
432
- $_url = add_query_arg(
433
- array(
434
- 'page' => 'elementor#tab-advanced',
435
- ),
436
- admin_url( 'admin.php' )
437
- );
438
- $i18n['elementorWarning'] = esc_html__( 'WPGlobus provides multilingual support for Elementor only when the option `CSS Print Method` is set to `External File`.', 'wpglobus' );
439
- $i18n['elementorActionLabel'] = esc_html__( 'Open Elementor Settings page', 'wpglobus' );
440
- $i18n['elementorActionLink'] = $_url;
441
- }
442
-
443
-
444
- /**
445
- * Block editor tab URL.
446
- *
447
- * @since 2.2.3
448
- */
449
- $block_editor_tab_url = admin_url(
450
- add_query_arg(
451
- array(
452
- 'page' => WPGlobus::OPTIONS_PAGE_SLUG,
453
- 'tab' => 'block-editor',
454
- ),
455
- 'admin.php'
456
- )
457
- );
458
-
459
- /**
460
- * Optons page URL.
461
- *
462
- * @since 2.5.10
463
- */
464
- $options_page_url = admin_url(
465
- add_query_arg(
466
- array(
467
- 'page' => WPGlobus::OPTIONS_PAGE_SLUG
468
- ),
469
- 'admin.php'
470
- )
471
- );
472
-
473
-
474
- /**
475
- * Build the flags URL.
476
- *
477
- * @since 2.2.3
478
- */
479
- $flags_url = array();
480
- foreach ( WPGlobus::Config()->enabled_languages as $language ) {
481
- if ( file_exists( WPGlobus::Config()->flag_path['big'] . WPGlobus::Config()->flag[ $language ] ) ) {
482
- $flags_url[ $language ] = WPGlobus::Config()->flag_urls['big'] . WPGlobus::Config()->flag[ $language ];
483
- } else {
484
- $flags_url[ $language ] = WPGlobus::Config()->flags_url . WPGlobus::Config()->flag[ $language ];
485
- }
486
- }
487
-
488
- /**
489
- * Pass the $post to JS.
490
- *
491
- * @since 2.2.4
492
- */
493
- $__post = array(
494
- 'ID' => '',
495
- 'type' => '',
496
- 'disabled' => false,
497
- );
498
- if ( $post instanceof WP_Post ) {
499
- $__post['ID'] = $post->ID;
500
- $__post['type'] = $post->post_type;
501
- if ( in_array( $post->post_type, WPGlobus::Config()->disabled_entities, true ) ) {
502
- $__post['disabled'] = true;
503
- }
504
- }
505
-
506
- /**
507
- * @see includes\class-wpglobus-config.php for config options.
508
- * @since 2.2.14
509
- */
510
- $key_option = array();
511
- $key_option['switcherButtonType'] = 'block_editor_switcher_plugin_button_type';
512
-
513
- $options = array();
514
- foreach($key_option as $key=>$option) {
515
- $options[ $option ] = '';
516
- if ( ! empty( WPGlobus::Config()->$option ) ) {
517
- $options[$option] = WPGlobus::Config()->$option;
518
- }
519
- }
520
-
521
- $data = array(
522
- 'version' => WPGLOBUS_VERSION,
523
- 'versionGutenberg' => $version_gutenberg,
524
- 'wpglobusAjax' => WPGLOBUS_AJAX,
525
- 'context' => WPGlobus::Config()->builder->get( 'context' ),
526
- 'tabs' => $tabs,
527
- 'language' => $this->language,
528
- 'pagenow' => $pagenow,
529
- 'postEditPage' => 'post.php',
530
- 'postNewPage' => 'post-new.php',
531
- 'defaultLanguage' => WPGlobus::Config()->default_language,
532
- 'i18n' => $i18n,
533
- 'yoastSeo' => $yoast_seo,
534
- 'elementor' => $elementor,
535
- 'flags_url' => $flags_url,
536
- 'store_link' => WPGlobus::URL_WPGLOBUS_SHOP,
537
- '__post' => $__post,
538
- 'block_editor_tab_url' => $block_editor_tab_url,
539
- 'options_page_url' => $options_page_url,
540
- 'disabled_entities' => WPGlobus::Config()->disabled_entities,
541
- 'options' => $options,
542
- 'enabledOptionsTab' => true,
543
- 'keyOption' => $key_option,
544
- 'data' => $__data
545
- );
546
-
547
- /**
548
- * Filter for data to send to JS.
549
- * Returning array.
550
- *
551
- * @since 2.2.14
552
- *
553
- * @param array $data An array with data.
554
- */
555
- $data = apply_filters( 'wpglobus_block_editor_localize_data', $data );
556
-
557
- wp_register_script(
558
- 'wpglobus-gutenberg',
559
- WPGlobus::plugin_dir_url() . 'includes/builders/gutenberg/assets/js/wpglobus-gutenberg' . WPGlobus::SCRIPT_SUFFIX() . '.js',
560
- array( 'jquery' ),
561
- WPGLOBUS_VERSION,
562
- true
563
- );
564
- wp_enqueue_script( 'wpglobus-gutenberg' );
565
- wp_localize_script(
566
- 'wpglobus-gutenberg',
567
- 'WPGlobusGutenberg',
568
- $data
569
- );
570
- }
571
-
572
- /**
573
- * Callback for 'add_meta_boxes'.
574
- */
575
- public function on__add_meta_box() {
576
-
577
- global $post;
578
-
579
- if ( in_array( $post->post_type, WPGlobus::Config()->disabled_entities, true ) ) {
580
- return;
581
- }
582
-
583
- add_meta_box(
584
- 'wpglobus',
585
- __( 'WPGlobus', 'wpglobus' ),
586
- array( $this, 'callback__meta_box' ),
587
- null,
588
- 'side',
589
- 'core'
590
- );
591
- }
592
-
593
- /**
594
- * Callback for 'add_meta_box' function.
595
- */
596
- public function callback__meta_box() {
597
- echo $this->get_language_field(); // phpcs:ignore WordPress.Security.EscapeOutput
598
- do_action( 'wpglobus_gutenberg_metabox' );
599
- }
600
-
601
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/builders/js_composer/class-wpglobus-js_composer-update-post.php DELETED
@@ -1,119 +0,0 @@
1
- <?php
2
- /**
3
- * File: class-wpglobus-js_composer-update-post.php
4
- *
5
- * @package WPGlobus\Builders\JS_Composer
6
- * @author Alex Gor(alexgff)
7
- */
8
-
9
- /**
10
- * Class WPGlobus_js_composer_Update_Post.
11
- */
12
-
13
- if ( ! class_exists( 'WPGlobus_js_composer_Update_Post' ) ) :
14
-
15
- // phpcs:ignore PEAR.NamingConventions
16
- class WPGlobus_js_composer_Update_Post extends WPGlobus_Builder_Update_Post {
17
-
18
- /**
19
- * Constructor.
20
- */
21
- public function __construct() {
22
-
23
- parent::__construct( 'js_composer' );
24
-
25
- /**
26
- * @see_file wpglobus\includes\class-wpglobus.php
27
- */
28
- remove_action( 'wp_insert_post_data', array( 'WPGlobus', 'on_save_post_data' ), 10 );
29
-
30
- /**
31
- * @todo incorrect the saving post in extra languages with priority = 10
32
- */
33
- add_filter( 'wp_insert_post_data', array( $this, 'filter__wp_insert_post_data' ), 100, 2 );
34
-
35
- }
36
-
37
- /**
38
- * Callback for 'wp_insert_post_data'.
39
- *
40
- * @param array $data
41
- * @param array $postarr
42
- *
43
- * @return array mixed
44
- */
45
- public function filter__wp_insert_post_data( $data, $postarr ) {
46
-
47
- /**
48
- * Prevent to filter disabled post type.
49
- *
50
- * @since 2.1.4
51
- */
52
- if ( in_array( $data['post_type'], WPGlobus::Config()->disabled_entities, true ) ) {
53
- return $data;
54
- }
55
-
56
- global $wpdb;
57
- $_post = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE ID = %d AND post_type = %s LIMIT 1", $postarr['ID'], $postarr['post_type'] ) );
58
-
59
- $fields = array();
60
- if ( isset( $postarr['post_title'] ) ) {
61
- $fields['post_title'] = $postarr['post_title'];
62
- }
63
-
64
- if ( isset( $postarr['post_content'] ) ) {
65
- $fields['post_content'] = $postarr['post_content'];
66
- }
67
-
68
- if ( isset( $postarr['post_excerpt'] ) ) {
69
- $fields['post_excerpt'] = $postarr['post_excerpt'];
70
- }
71
-
72
- $builder_language = WPGlobus::Config()->builder->get_language();
73
-
74
- if ( empty( $builder_language ) ) {
75
-
76
- if ( empty( $postarr[ WPGlobus::get_language_meta_key() ] ) ) {
77
- $builder_language = WPGlobus::Config()->default_language;
78
- } else {
79
- $builder_language = $postarr[ WPGlobus::get_language_meta_key() ];
80
- }
81
- }
82
-
83
- foreach ( $fields as $field => $value ) {
84
-
85
- $tr = array();
86
-
87
- foreach ( WPGlobus::Config()->enabled_languages as $lang ) :
88
-
89
- if ( $lang === $builder_language ) {
90
-
91
- $text = $value;
92
- if ( WPGlobus_Core::has_translations( $value ) ) {
93
- $text = WPGlobus_Core::text_filter( $value, $lang, WPGlobus::RETURN_EMPTY );
94
- }
95
- if ( ! empty( $text ) ) {
96
- $tr[ $lang ] = $text;
97
- }
98
- } else {
99
- if ( isset( $_post->$field ) ) {
100
- $text = WPGlobus_Core::text_filter( $_post->$field, $lang, WPGlobus::RETURN_EMPTY );
101
- if ( ! empty( $text ) ) {
102
- $tr[ $lang ] = $text;
103
- }
104
- }
105
- }
106
-
107
- endforeach;
108
-
109
- $data[ $field ] = WPGlobus_Utils::build_multilingual_string( $tr );
110
-
111
- }
112
-
113
- return $data;
114
-
115
- }
116
-
117
- }
118
-
119
- endif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/builders/js_composer/class-wpglobus-js_composer.php DELETED
@@ -1,26 +0,0 @@
1
- <?php
2
- /**
3
- * File: class-wpglobus-js_composer.php
4
- *
5
- * @package WPGlobus\Builders\WPBakeryPageBuilder
6
- * @author Alex Gor(alexgff)
7
- */
8
-
9
-
10
- if ( ! class_exists( 'WPGlobus_JS_Composer' ) ) :
11
-
12
- /**
13
- * Class WPGlobus_JS_Composer.
14
- */
15
- class WPGlobus_JS_Composer extends WPGlobus_Builder {
16
-
17
- /**
18
- * Constructor.
19
- */
20
- public function __construct() {
21
- parent::__construct( 'js_composer' );
22
- }
23
-
24
- }
25
-
26
- endif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/builders/pods/class-wpglobus-builder-pods.php DELETED
@@ -1,110 +0,0 @@
1
- <?php
2
- /**
3
- * File: class-wpglobus-builder-pods.php
4
- *
5
- * @since 2.3.0
6
- *
7
- * @package WPGlobus\Builders\Pods.
8
- * @author Alex Gor(alexgff)
9
- */
10
-
11
- if ( ! class_exists( 'WPGlobus_Builder_Pods' ) ) :
12
-
13
- /**
14
- * Class WPGlobus_Builder_Pods.
15
- */
16
- class WPGlobus_Builder_Pods {
17
-
18
- /**
19
- * Default Pods post type.
20
- */
21
- protected static $post_type = '_pods_pod';
22
-
23
- /**
24
- * Type of Pods: `post_type` or `settings`.
25
- */
26
- protected static $pods_type = '';
27
-
28
- /**
29
- * Get attributes.
30
- */
31
- public static function get_attrs($attrs) {
32
-
33
- if ( ! function_exists('pods_api') ) {
34
- return false;
35
- }
36
-
37
- /** @global string $pagenow */
38
- /** @global string $wpdb */
39
- global $pagenow, $wpdb;
40
-
41
- $result = true;
42
-
43
- if ( 'post.php' === $pagenow ) {
44
-
45
- /**
46
- * @see pods\includes\classes.php
47
- */
48
- $pods = pods_api()->load_pods( array( 'type' => 'post_type', 'fields' => true ) );
49
-
50
- self::$pods_type = 'post_type';
51
-
52
- $post_id = $attrs['post_id'];
53
-
54
- if ( $post_id > 0 ) {
55
-
56
- $pods_pod = $wpdb->get_results( $wpdb->prepare(
57
- "SELECT p.post_name AS name, p.ID, p.post_title AS title, p.post_parent AS parent, pm.meta_value AS type FROM $wpdb->posts as p
58
- LEFT JOIN $wpdb->postmeta AS pm ON pm.post_id = p.ID WHERE p.post_type = %s AND p.post_status = 'publish'
59
- AND pm.meta_key = 'type' AND pm.meta_value = %s",
60
- self::$post_type,
61
- self::$pods_type
62
- ), OBJECT_K );
63
-
64
- if ( ! empty($pods_pod) ) {
65
-
66
- foreach ( $pods_pod as $_pod_key => $_pod ) :
67
-
68
- if ( $attrs['post_type'] != $_pod_key ) {
69
- continue;
70
- }
71
-
72
- if ( empty($pods[ $_pod->ID ]['fields']) ) {
73
- /**
74
- * Pods_pod is attached to post type (e.g. for post) but has no fields.
75
- */
76
- $result = false;
77
- break;
78
- }
79
-
80
- endforeach;
81
- }
82
- }
83
-
84
- if ( ! $result ) {
85
- return false;
86
- }
87
-
88
- $attrs['builder_page'] = true;
89
- return $attrs;
90
-
91
- } else {
92
- /**
93
- * @todo W.I.P @since 2.3.0
94
- */
95
- //
96
- //if ( ! empty($_GET['page']) && false !== strpos( $_GET['page'], 'pods-settings' ) ) {
97
- // $attrs['builder_page'] = true;
98
- // return $attrs;
99
- //}
100
- }
101
-
102
-
103
-
104
- return false;
105
- }
106
- }
107
-
108
- endif;
109
-
110
- # --- EOF
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/builders/pods/class-wpglobus-pods-update-post.php DELETED
@@ -1,120 +0,0 @@
1
- <?php
2
- /**
3
- * File: class-wpglobus-pods-update-post.php
4
- *
5
- * @since 2.3.0
6
- *
7
- * @package WPGlobus\Builders\Pods.
8
- * @author Alex Gor(alexgff)
9
- */
10
-
11
- /**
12
- * Class WPGlobus_pods_Update_Post.
13
- */
14
- if ( ! class_exists( 'WPGlobus_pods_Update_Post' ) ) :
15
-
16
- // phpcs:ignore PEAR.NamingConventions
17
- class WPGlobus_pods_Update_Post extends WPGlobus_Builder_Update_Post {
18
-
19
- /**
20
- * Constructor.
21
- */
22
- public function __construct() {
23
-
24
- parent::__construct( 'pods' );
25
-
26
- /**
27
- * @see_file wpglobus\includes\class-wpglobus.php
28
- */
29
- remove_action( 'wp_insert_post_data', array( 'WPGlobus', 'on_save_post_data' ), 10 );
30
-
31
- /**
32
- * @todo incorrect the saving post in extra languages with priority = 10
33
- */
34
- add_filter( 'wp_insert_post_data', array( $this, 'filter__wp_insert_post_data' ), 100, 2 );
35
-
36
- }
37
-
38
- /**
39
- * Callback for 'wp_insert_post_data'.
40
- *
41
- * @param array $data
42
- * @param array $postarr
43
- *
44
- * @return mixed
45
- */
46
- public function filter__wp_insert_post_data( $data, $postarr ) {
47
-
48
- /**
49
- * Prevent to filter disabled post type.
50
- */
51
- if ( in_array( $data['post_type'], WPGlobus::Config()->disabled_entities, true ) ) {
52
- return $data;
53
- }
54
-
55
- global $wpdb;
56
- $_post = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE ID = %d AND post_type = %s LIMIT 1", $postarr['ID'], $postarr['post_type'] ) );
57
-
58
- $fields = array();
59
- if ( isset( $postarr['post_title'] ) ) {
60
- $fields['post_title'] = $postarr['post_title'];
61
- }
62
-
63
- if ( isset( $postarr['post_content'] ) ) {
64
- $fields['post_content'] = $postarr['post_content'];
65
- }
66
-
67
- if ( isset( $postarr['post_excerpt'] ) ) {
68
- $fields['post_excerpt'] = $postarr['post_excerpt'];
69
- }
70
-
71
- $builder_language = WPGlobus::Config()->builder->get_language();
72
-
73
- if ( empty( $builder_language ) ) {
74
-
75
- if ( empty( $postarr[ WPGlobus::get_language_meta_key() ] ) ) {
76
- $builder_language = WPGlobus::Config()->default_language;
77
- } else {
78
- $builder_language = $postarr[ WPGlobus::get_language_meta_key() ];
79
- }
80
- }
81
-
82
- foreach ( $fields as $field => $value ) {
83
-
84
- $tr = array();
85
-
86
- foreach ( WPGlobus::Config()->enabled_languages as $lang ) :
87
-
88
- if ( $lang === $builder_language ) {
89
-
90
- $text = $value;
91
- if ( WPGlobus_Core::has_translations( $value ) ) {
92
- $text = WPGlobus_Core::text_filter( $value, $lang, WPGlobus::RETURN_EMPTY );
93
- }
94
- if ( ! empty( $text ) ) {
95
- $tr[ $lang ] = $text;
96
- }
97
- } else {
98
- if ( isset( $_post->$field ) ) {
99
- $text = WPGlobus_Core::text_filter( $_post->$field, $lang, WPGlobus::RETURN_EMPTY );
100
- if ( ! empty( $text ) ) {
101
- $tr[ $lang ] = $text;
102
- }
103
- }
104
- }
105
-
106
- endforeach;
107
-
108
- $data[ $field ] = WPGlobus_Utils::build_multilingual_string( $tr );
109
-
110
- }
111
-
112
- return $data;
113
-
114
- }
115
-
116
- }
117
-
118
- endif;
119
-
120
- # --- EOF
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/builders/pods/class-wpglobus-pods.php DELETED
@@ -1,31 +0,0 @@
1
- <?php
2
- /**
3
- * File: class-wpglobus-pods.php
4
- *
5
- * @since 2.3.0
6
- *
7
- * @package WPGlobus\Builders\Pods.
8
- * @author Alex Gor(alexgff)
9
- */
10
-
11
- if ( ! class_exists( 'WPGlobus_Pods' ) ) :
12
-
13
- /**
14
- * Class WPGlobus_Pods.
15
- */
16
- class WPGlobus_Pods extends WPGlobus_Builder {
17
-
18
- /**
19
- * Constructor.
20
- */
21
- public function __construct() {
22
-
23
- parent::__construct( 'pods' );
24
-
25
- }
26
-
27
- }
28
-
29
- endif;
30
-
31
- # --- EOF
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/builders/rank_math_seo/class-wpglobus-builder-rank_math_seo.php DELETED
@@ -1,75 +0,0 @@
1
- <?php
2
- /**
3
- * File: class-wpglobus-builder-rank_math_seo.php
4
- *
5
- * @since 2.4.3
6
- *
7
- * @package WPGlobus\Builders\RankMathSEO.
8
- * @author Alex Gor(alexgff)
9
- */
10
-
11
- if ( ! class_exists( 'WPGlobus_Builder_RankMathSEO' ) ) :
12
-
13
- /**
14
- * Class WPGlobus_Builder_RankMathSEO.
15
- */
16
- class WPGlobus_Builder_RankMathSEO {
17
-
18
- /**
19
- * Options titles.
20
- * @see section Titles&Meta.
21
- */
22
- protected static $options_titles = 'rank-math-options-titles';
23
-
24
- /**
25
- * Get attributes.
26
- */
27
- public static function get_attrs($attrs) {
28
-
29
- /** @global string $pagenow */
30
- global $pagenow;
31
-
32
- if ( 'post.php' === $pagenow ) {
33
-
34
- $post_type = 'post';
35
- if ( ! empty( $attrs['post_type'] ) ) {
36
- $post_type = $attrs['post_type'];
37
- }
38
-
39
- $opts = get_option( self::$options_titles );
40
-
41
- if ( ! empty( $opts[ "pt_{$post_type}_add_meta_box" ] ) && 'off' == $opts[ "pt_{$post_type}_add_meta_box" ] ) {
42
- $attrs = false;
43
- } else {
44
- $attrs['builder_page'] = true;
45
- }
46
-
47
- return $attrs;
48
-
49
- } elseif ( 'term.php' === $pagenow ) {
50
-
51
- $tax = empty( $_GET['taxonomy'] ) ? false : sanitize_text_field( wp_unslash( $_GET['taxonomy'] ) ); // phpcs:ignore WordPress.CSRF.NonceVerification
52
-
53
- if ( $tax ) {
54
-
55
- $opts = get_option( self::$options_titles );
56
-
57
- if ( ! empty( $opts[ "tax_{$tax}_add_meta_box" ] ) && 'off' == $opts[ "tax_{$tax}_add_meta_box" ] ) {
58
- $attrs = false;
59
- } else {
60
- $attrs['post_type'] = ''; // reset post type.
61
- $attrs['taxonomy'] = $tax;
62
- $attrs['builder_page'] = true;
63
- }
64
-
65
- return $attrs;
66
- }
67
- }
68
-
69
- return false;
70
- }
71
- }
72
-
73
- endif;
74
-
75
- # --- EOF
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/builders/rank_math_seo/class-wpglobus-rank_math_seo-functions.php DELETED
@@ -1,168 +0,0 @@
1
- <?php
2
- /**
3
- * File: class-wpglobus-rank_math_seo-functions.php
4
- *
5
- * @since 2.4.3
6
- *
7
- * @package WPGlobus\Builders\RankMathSEO.
8
- * @author Alex Gor(alexgff)
9
- */
10
-
11
- if ( ! class_exists( 'WPGlobus_RankMathSEO_Functions' ) ) :
12
-
13
- /**
14
- * Class WPGlobus_RankMathSEO_Functions.
15
- */
16
- class WPGlobus_RankMathSEO_Functions {
17
-
18
- /**
19
- * Current taxonomy.
20
- */
21
- protected static $taxonomy = false;
22
-
23
- /**
24
- * WP_Term object.
25
- */
26
- protected static $tag = false;
27
-
28
- /**
29
- * Current language.
30
- */
31
- protected static $current_language = false;
32
-
33
- /**
34
- * Constructor.
35
- */
36
- public static function controller() {
37
-
38
- if ( empty( $_POST['nonce_CMB2phprank_math_metabox'] ) || empty( $_POST['action'] ) ) {
39
- /**
40
- * Not `Rank Math SEO`.
41
- */
42
- return;
43
- }
44
-
45
- global $pagenow;
46
-
47
- if ( ! empty( $_POST[ WPGlobus::get_language_meta_key() ] ) ) {
48
- self::$current_language = sanitize_text_field( $_POST[ WPGlobus::get_language_meta_key() ] );
49
- }
50
-
51
- if ( 'edit-tags.php' === $pagenow && 'editedtag' === $_POST['action'] ) { // phpcs:ignore WordPress.CSRF.NonceVerification
52
- /**
53
- * Update button was clicked.
54
- */
55
- self::build_ml_description();
56
- }
57
-
58
- add_filter( 'wp_update_term_data', array( __CLASS__, 'filter__update_term_data' ), 5, 4 );
59
- }
60
-
61
- /**
62
- * Build multilingual description.
63
- * We don't have filter for description like filter for name @see 'wp_update_term_data' in wp-includes\taxonomy.php
64
- */
65
- protected static function build_ml_description() {
66
-
67
- if ( ! self::$current_language ) {
68
- return;
69
- }
70
-
71
- global $wpdb;
72
-
73
- $tag_ID = (int) $_POST['tag_ID'];
74
- $taxonomy = $_POST['taxonomy']; // phpcs:ignore WordPress.CSRF.NonceVerification
75
-
76
- self::$tag = get_term( $tag_ID, $taxonomy );
77
-
78
- if ( is_wp_error( self::$tag ) ) {
79
-
80
- $terms = $wpdb->get_results( $wpdb->prepare( "SELECT t.*, tt.* FROM $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id WHERE t.term_id = %d", $tag_ID ) );
81
- if ( ! empty( $terms[0] ) && is_object( $terms[0] ) ) {
82
- self::$tag = $terms[0];
83
- }
84
- }
85
-
86
- if ( is_wp_error( self::$tag ) ) {
87
- /**
88
- * @todo Investigate.
89
- */
90
- return;
91
- }
92
-
93
- $new_desc = array();
94
-
95
- foreach ( WPGlobus::Config()->enabled_languages as $lang ) :
96
-
97
- if ( $lang === self::$current_language ) {
98
-
99
- $text = trim( $_POST['description'] ); // phpcs:ignore WordPress.CSRF.NonceVerification
100
- if ( ! empty( $text ) ) {
101
- $new_desc[ $lang ] = $text;
102
- }
103
- } else {
104
-
105
- $text = WPGlobus_Core::text_filter( self::$tag->description, $lang, WPGlobus::RETURN_EMPTY );
106
- if ( ! empty( $text ) ) {
107
- $new_desc[ $lang ] = $text;
108
- }
109
- }
110
-
111
- endforeach;
112
-
113
- $_POST['description'] = WPGlobus_Utils::build_multilingual_string( $new_desc );
114
- }
115
-
116
- /**
117
- * Filters term data before it is updated in the database.
118
- *
119
- * @param array $data Term data to be updated.
120
- * @param int $term_id Term ID.
121
- * @param string $taxonomy Taxonomy slug.
122
- * @param array $args Arguments passed to wp_update_term().
123
- *
124
- * @return array
125
- */
126
- public static function filter__update_term_data( $data, $term_id, $taxonomy, $args ) {
127
-
128
- if ( is_wp_error( self::$tag ) ) {
129
- /**
130
- * @todo Investigate.
131
- * may be to use $args.
132
- */
133
- return $data;
134
- }
135
-
136
- if ( ! self::$current_language ) {
137
- return $data;
138
- }
139
-
140
- $new_term_name = array();
141
- foreach ( WPGlobus::Config()->enabled_languages as $language ) :
142
-
143
- if ( $language === self::$current_language ) {
144
-
145
- $text = trim( $data['name'] );
146
- if ( ! empty( $text ) ) {
147
- $new_term_name[ $language ] = $text;
148
- }
149
- } else {
150
-
151
- $text = WPGlobus_Core::text_filter( self::$tag->name, $language, WPGlobus::RETURN_EMPTY );
152
- if ( ! empty( $text ) ) {
153
- $new_term_name[ $language ] = $text;
154
- }
155
- }
156
-
157
- endforeach;
158
-
159
- $data['name'] = WPGlobus_Utils::build_multilingual_string( $new_term_name );
160
-
161
- return $data;
162
- }
163
-
164
- } // class WPGlobus_RankMathSEO_Functions.
165
-
166
- endif;
167
-
168
- # --- EOF
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/builders/rank_math_seo/class-wpglobus-rank_math_seo-update-post.php DELETED
@@ -1,40 +0,0 @@
1
- <?php
2
- /**
3
- * File: class-wpglobus-rank_math_seo-update-post.php
4
- *
5
- * @since 2.4.3
6
- *
7
- * @package WPGlobus\Builders\RankMathSEO.
8
- * @author Alex Gor(alexgff)
9
- */
10
-
11
- if ( ! class_exists( 'WPGlobus_rank_math_seo_Update_Post' ) ) :
12
-
13
- /**
14
- * Class WPGlobus_rank_math_seo_Update_Post.
15
- */
16
- // phpcs:ignore PEAR.NamingConventions
17
- class WPGlobus_rank_math_seo_Update_Post extends WPGlobus_Builder_Update_Post {
18
-
19
- /**
20
- * Constructor.
21
- */
22
- public function __construct( $id = null ) {
23
-
24
- if ( is_null($id) ) {
25
- $id = WPGlobus::Config()->builder->get_id();
26
- }
27
-
28
- parent::__construct( $id );
29
-
30
- /**
31
- * @see_file wpglobus\includes\class-wpglobus.php
32
- */
33
- remove_action( 'wp_insert_post_data', array( 'WPGlobus', 'on_save_post_data' ), 10 );
34
- }
35
-
36
- } // class WPGlobus_rank_math_seo_Update_Post.
37
-
38
- endif;
39
-
40
- # --- EOF
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/builders/rank_math_seo/class-wpglobus-rank_math_seo.php DELETED
@@ -1,73 +0,0 @@
1
- <?php
2
- /**
3
- * File: class-wpglobus-rank_math_seo.php
4
- *
5
- * @since 2.4.3
6
- *
7
- * @package WPGlobus\Builders\RankMathSEO.
8
- * @author Alex Gor(alexgff)
9
- */
10
-
11
- if ( ! class_exists( 'WPGlobus_RankMathSEO' ) ) :
12
-
13
- /**
14
- * Class WPGlobus_RankMathSEO.
15
- */
16
- class WPGlobus_RankMathSEO extends WPGlobus_Builder {
17
-
18
- /**
19
- * Current taxonomy.
20
- */
21
- protected $taxonomy = null;
22
-
23
- /**
24
- * Constructor.
25
- */
26
- public function __construct( $id = null ) {
27
-
28
- if ( is_null($id) ) {
29
- $id = WPGlobus::Config()->builder->get_id();
30
- }
31
-
32
- parent::__construct( $id );
33
-
34
- $this->taxonomy = WPGlobus::Config()->builder->get('taxonomy');
35
-
36
- if ( ! is_null($this->taxonomy) ) {
37
-
38
- add_action( "{$this->taxonomy}_pre_edit_form", array( $this, 'on__pre_edit_form' ), 10, 2 );
39
-
40
- add_action( "{$this->taxonomy}_term_edit_form_top", array( $this, 'on__edit_form' ), 10, 2 );
41
- }
42
-
43
- }
44
-
45
- /**
46
- * Fires before the Edit Term form for all taxonomies.
47
- *
48
- * @param object $tag Current taxonomy term object.
49
- * @param string $taxonomy Current $taxonomy slug.
50
- */
51
- public function on__pre_edit_form( $tag, $taxonomy ) {
52
- /**
53
- * Init Name and Description in current language.
54
- */
55
- $tag->description = WPGlobus_Core::text_filter( $tag->description, $this->get_current_language(), WPGlobus::RETURN_EMPTY );
56
- $tag->name = WPGlobus_Core::text_filter( $tag->name, $this->get_current_language(), WPGlobus::RETURN_EMPTY );
57
- }
58
-
59
- /**
60
- * Add language field to taxonomy edit form.
61
- * Fires at the beginning of the Edit Term form.
62
- *
63
- * @param object $tag Current taxonomy term object.
64
- * @param string $taxonomy Current $taxonomy slug.
65
- */
66
- public function on__edit_form( $tag, $taxonomy ) {
67
- echo '<input type="hidden" name="'.WPGlobus::get_language_meta_key().'" value="'.$this->get_current_language().'">';
68
- }
69
- }
70
-
71
- endif;
72
-
73
- # --- EOF
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/builders/yoast_seo/class-wpglobus-yoast_seo-update-post.php DELETED
@@ -1,259 +0,0 @@
1
- <?php
2
- /**
3
- * File: class-wpglobus-yoast_seo-update-post.php
4
- *
5
- * @package WPGlobus\Builders\Yoast_SEO
6
- * @author Alex Gor(alexgff)
7
- */
8
-
9
- /**
10
- * Class WPGlobus_yoast_seo_Update_Post.
11
- */
12
-
13
- if ( ! class_exists( 'WPGlobus_yoast_seo_Update_Post' ) ) :
14
-
15
- // phpcs:ignore PEAR.NamingConventions
16
- class WPGlobus_yoast_seo_Update_Post extends WPGlobus_Builder_Update_Post {
17
-
18
- /**
19
- * Current taxonomy.
20
- */
21
- protected $taxonomy = '';
22
-
23
- /**
24
- * WP_Term object.
25
- */
26
- protected $tag;
27
-
28
- /**
29
- * Constructor.
30
- */
31
- public function __construct() {
32
-
33
- parent::__construct( 'yoast_seo' );
34
-
35
- global $pagenow;
36
-
37
- if ( 'edit-tags.php' === $pagenow && 'editedtag' === $_POST['action'] ) { // phpcs:ignore WordPress.CSRF.NonceVerification
38
- /**
39
- * Update button was clicked.
40
- */
41
- $this->build_ml_description();
42
- }
43
-
44
- /**
45
- * @see_file wpglobus\includes\class-wpglobus.php
46
- */
47
- remove_action( 'wp_insert_post_data', array( 'WPGlobus', 'on_save_post_data' ), 10 );
48
-
49
- /**
50
- * @todo incorrect the saving post in extra languages with priority = 10
51
- */
52
- add_filter( 'wp_insert_post_data', array( $this, 'filter__wp_insert_post_data' ), 100, 2 );
53
-
54
- $this->taxonomy = WPGlobus::Config()->builder->get( 'taxonomy' );
55
-
56
- if ( $this->taxonomy ) {
57
-
58
- add_filter( 'wp_update_term_data', array( $this, 'filter__update_term_data' ), 10, 4 );
59
-
60
- }
61
- }
62
-
63
- /**
64
- * Build multilingual description.
65
- * We don't have filter for description like filter for name @see 'wp_update_term_data' in wp-includes\taxonomy.php
66
- */
67
- public function build_ml_description() {
68
-
69
- global $wpdb;
70
-
71
- $current_language = WPGlobus::Config()->builder->get_language();
72
-
73
- $tag_ID = (int) $_POST['tag_ID'];
74
- $taxonomy = $_POST['taxonomy']; // phpcs:ignore WordPress.CSRF.NonceVerification
75
-
76
- $this->tag = get_term( $tag_ID, $taxonomy );
77
-
78
- if ( is_wp_error( $this->tag ) ) {
79
-
80
- $terms = $wpdb->get_results( $wpdb->prepare( "SELECT t.*, tt.* FROM $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id WHERE t.term_id = %d", $tag_ID ) );
81
- if ( ! empty( $terms[0] ) && is_object( $terms[0] ) ) {
82
- $this->tag = $terms[0];
83
- }
84
- }
85
-
86
- if ( is_wp_error( $this->tag ) ) {
87
- /**
88
- * @todo Investigate.
89
- */
90
- return;
91
- }
92
-
93
- $new_desc = array();
94
-
95
- foreach ( WPGlobus::Config()->enabled_languages as $lang ) :
96
-
97
- if ( $lang === $current_language ) {
98
-
99
- $text = trim( $_POST['description'] ); // phpcs:ignore WordPress.CSRF.NonceVerification
100
- if ( ! empty( $text ) ) {
101
- $new_desc[ $lang ] = $text;
102
- }
103
- } else {
104
-
105
- $text = WPGlobus_Core::text_filter( $this->tag->description, $lang, WPGlobus::RETURN_EMPTY );
106
- if ( ! empty( $text ) ) {
107
- $new_desc[ $lang ] = $text;
108
- }
109
- }
110
-
111
- endforeach;
112
-
113
- $_POST['description'] = WPGlobus_Utils::build_multilingual_string( $new_desc );
114
-
115
- }
116
-
117
- /**
118
- * Filters term data before it is updated in the database.
119
- *
120
- * @param array $data Term data to be updated.
121
- * @param int $term_id Term ID.
122
- * @param string $taxonomy Taxonomy slug.
123
- * @param array $args Arguments passed to wp_update_term().
124
- *
125
- * @return array
126
- */
127
- public function filter__update_term_data(
128
- $data,
129
- /** @noinspection PhpUnusedParameterInspection */
130
- $term_id,
131
- /** @noinspection PhpUnusedParameterInspection */
132
- $taxonomy,
133
- /** @noinspection PhpUnusedParameterInspection */
134
- $args
135
- ) {
136
-
137
- if ( is_wp_error( $this->tag ) ) {
138
- /**
139
- * @todo Investigate.
140
- * may be to use $args.
141
- */
142
- return $data;
143
- }
144
-
145
- if ( WPGlobus::Config()->builder && ! WPGlobus::Config()->builder->is_builder_page() ) {
146
- return $data;
147
- }
148
-
149
- $current_language = WPGlobus::Config()->builder->get_language();
150
-
151
- $new_name = array();
152
-
153
- foreach ( WPGlobus::Config()->enabled_languages as $lang ) :
154
-
155
- if ( $lang === $current_language ) {
156
-
157
- $text = trim( $data['name'] );
158
- if ( ! empty( $text ) ) {
159
- $new_name[ $lang ] = $text;
160
- }
161
- } else {
162
-
163
- $text = WPGlobus_Core::text_filter( $this->tag->name, $lang, WPGlobus::RETURN_EMPTY );
164
- if ( ! empty( $text ) ) {
165
- $new_name[ $lang ] = $text;
166
- }
167
- }
168
-
169
- endforeach;
170
-
171
- $data['name'] = WPGlobus_Utils::build_multilingual_string( $new_name );
172
-
173
- return $data;
174
-
175
- }
176
-
177
- /**
178
- * Callback for 'wp_insert_post_data'.
179
- *
180
- * @param array $data
181
- * @param array $postarr
182
- *
183
- * @return array mixed
184
- */
185
- public function filter__wp_insert_post_data( $data, $postarr ) {
186
-
187
- /**
188
- * Prevent to filter disabled post type.
189
- *
190
- * @since 2.1.4
191
- */
192
- if ( in_array( $data['post_type'], WPGlobus::Config()->disabled_entities, true ) ) {
193
- return $data;
194
- }
195
-
196
- global $wpdb;
197
- $_post = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE ID = %d AND post_type = %s LIMIT 1", $postarr['ID'], $postarr['post_type'] ) );
198
-
199
- $fields = array();
200
- if ( isset( $postarr['post_title'] ) ) {
201
- $fields['post_title'] = $postarr['post_title'];
202
- }
203
-
204
- if ( isset( $postarr['post_content'] ) ) {
205
- $fields['post_content'] = $postarr['post_content'];
206
- }
207
-
208
- if ( isset( $postarr['post_excerpt'] ) ) {
209
- $fields['post_excerpt'] = $postarr['post_excerpt'];
210
- }
211
-
212
- $builder_language = WPGlobus::Config()->builder->get_language();
213
-
214
- if ( empty( $builder_language ) ) {
215
-
216
- if ( empty( $postarr[ WPGlobus::get_language_meta_key() ] ) ) {
217
- $builder_language = WPGlobus::Config()->default_language;
218
- } else {
219
- $builder_language = $postarr[ WPGlobus::get_language_meta_key() ];
220
- }
221
- }
222
-
223
- foreach ( $fields as $field => $value ) {
224
-
225
- $tr = array();
226
-
227
- foreach ( WPGlobus::Config()->enabled_languages as $lang ) :
228
-
229
- if ( $lang === $builder_language ) {
230
-
231
- $text = $value;
232
- if ( WPGlobus_Core::has_translations( $value ) ) {
233
- $text = WPGlobus_Core::text_filter( $value, $lang, WPGlobus::RETURN_EMPTY );
234
- }
235
- if ( ! empty( $text ) ) {
236
- $tr[ $lang ] = $text;
237
- }
238
- } else {
239
- if ( isset( $_post->$field ) ) {
240
- $text = WPGlobus_Core::text_filter( $_post->$field, $lang, WPGlobus::RETURN_EMPTY );
241
- if ( ! empty( $text ) ) {
242
- $tr[ $lang ] = $text;
243
- }
244
- }
245
- }
246
-
247
- endforeach;
248
-
249
- $data[ $field ] = WPGlobus_Utils::build_multilingual_string( $tr );
250
-
251
- }
252
-
253
- return $data;
254
-
255
- }
256
-
257
- }
258
-
259
- endif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/builders/yoast_seo/class-wpglobus-yoast_seo.php DELETED
@@ -1,145 +0,0 @@
1
- <?php
2
- /**
3
- * File: class-wpglobus-yoast_seo.php
4
- *
5
- * @package WPGlobus\Builders\Yoast_SEO
6
- * @author Alex Gor(alexgff)
7
- */
8
-
9
-
10
- if ( ! class_exists( 'WPGlobus_Yoast_SEO' ) ) :
11
-
12
- /**
13
- * Class WPGlobus_Yoast_SEO.
14
- */
15
- class WPGlobus_Yoast_SEO extends WPGlobus_Builder {
16
-
17
- /**
18
- * Current taxonomy.
19
- */
20
- protected $taxonomy = '';
21
-
22
- protected $wpseo_taxonomy_option_name = '';
23
-
24
- /**
25
- * Constructor.
26
- */
27
- public function __construct() {
28
-
29
- /**
30
- * @see 'WPSEO_PREMIUM_FILE' for premium add-on.
31
- */
32
-
33
- parent::__construct( 'yoast_seo' );
34
-
35
- $this->taxonomy = WPGlobus::Config()->builder->get('taxonomy');
36
-
37
- if ( $this->taxonomy ) {
38
-
39
- add_action( "{$this->taxonomy}_pre_edit_form", array( $this, 'on__pre_edit_form' ), 10, 2 );
40
-
41
- add_action( "{$this->taxonomy}_term_edit_form_top", array( $this, 'on__edit_form' ), 10, 2 );
42
-
43
- if ( class_exists('WPSEO_Taxonomy_Meta') ) {
44
- $wpseo_taxonomy_meta = WPSEO_Taxonomy_Meta::get_instance();
45
- $this->wpseo_taxonomy_option_name = $wpseo_taxonomy_meta::$name;
46
- } else {
47
- $this->wpseo_taxonomy_option_name = 'wpseo_taxonomy_meta';
48
- }
49
-
50
- add_filter( "option_{$this->wpseo_taxonomy_option_name}", array( $this, 'filter__wpseo_taxonomy_meta' ), 5, 2 );
51
-
52
- /**
53
- * @see wordpress-seo\inc\class-wpseo-replace-vars.php
54
- */
55
- add_filter( 'wpseo_replacements', array( $this, 'filter__wpseo_replacements' ), 5, 2 );
56
-
57
- }
58
-
59
- }
60
-
61
- /**
62
- * Customization of the replacements before they are applied.
63
- *
64
- * @api array $replacements The replacements.
65
- *
66
- * @param array $args The object some of the replacement values might come from,
67
- * could be a post, taxonomy or term.
68
- */
69
- public function filter__wpseo_replacements( $replacements, $args ) {
70
-
71
- if ( ! is_array($replacements) || empty($replacements) ) {
72
- return $replacements;
73
- }
74
-
75
- $key = key($replacements);
76
-
77
- if ( WPGlobus_Core::has_translations( $replacements[$key] ) ) {
78
- $replacements[$key] = WPGlobus_Core::text_filter( $replacements[$key], WPGlobus::Config()->builder->get_language(), WPGlobus::RETURN_EMPTY );
79
- }
80
-
81
- return $replacements;
82
- }
83
-
84
- /**
85
- * Filters the value of a 'wpseo_taxonomy_meta' option.
86
- *
87
- * @param mixed $option_value Value of the option. If stored serialized, it will be
88
- * unserialized prior to being returned.
89
- * @param string $option_name Option name.
90
- */
91
- public function filter__wpseo_taxonomy_meta( $option_value, $option_name ) {
92
-
93
- if ( empty( $option_value[$this->taxonomy] ) ) {
94
- return $option_value;
95
- }
96
-
97
- $_enabled_keys = array('wpseo_title', 'wpseo_desc', 'wpseo_focuskw');
98
-
99
- $language = WPGlobus::Config()->builder->get_language();
100
-
101
- foreach( $option_value[$this->taxonomy] as $tag_ID=>$values ) {
102
- foreach($values as $_key=>$_value) {
103
- if ( in_array($_key, $_enabled_keys) ) {
104
- if ( WPGlobus_Core::has_translations($_value) ) {
105
- $option_value[$this->taxonomy][$tag_ID][$_key] = WPGlobus_Core::text_filter($_value, $language, WPGlobus::RETURN_EMPTY);
106
- } else {
107
- if ( $language != WPGlobus::Config()->default_language ) {
108
- $option_value[$this->taxonomy][$tag_ID][$_key] = '';
109
- }
110
- }
111
- }
112
- }
113
- }
114
-
115
- return $option_value;
116
- }
117
-
118
- /**
119
- * Fires before the Edit Term form for all taxonomies.
120
- *
121
- * @param object $tag Current taxonomy term object.
122
- * @param string $taxonomy Current $taxonomy slug.
123
- */
124
- public function on__pre_edit_form( $tag, $taxonomy ) {
125
-
126
- $language = WPGlobus::Config()->builder->get_language();
127
- $tag->description = WPGlobus_Core::text_filter( $tag->description, $language, WPGlobus::RETURN_EMPTY );
128
- $tag->name = WPGlobus_Core::text_filter( $tag->name, $language, WPGlobus::RETURN_EMPTY );
129
-
130
- }
131
-
132
- /**
133
- * Fires at the beginning of the Edit Term form. Add language field to taxonomy edit form.
134
- *
135
- * @param object $tag Current taxonomy term object.
136
- * @param string $taxonomy Current $taxonomy slug.
137
- */
138
- public function on__edit_form( $tag, $taxonomy ) {
139
- echo '<input type="hidden" name="'.WPGlobus::get_language_meta_key().'" value="'.WPGlobus::Config()->builder->get_language().'">';
140
-
141
- }
142
-
143
- }
144
-
145
- endif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/includes/class-wpglobus-config-vendor.php DELETED
@@ -1,437 +0,0 @@
1
- <?php
2
- /**
3
- * Class WPGlobus_Config_Vendor
4
- *
5
- * @package WPGlobus
6
- * @author Alex Gor(alexgff)
7
- */
8
-
9
- if ( ! class_exists( 'WPGlobus_Config_Vendor' ) ) :
10
-
11
- /**
12
- * Vendor configuration.
13
- */
14
- class WPGlobus_Config_Vendor {
15
-
16
- const PLUGIN_CONFIG_FILES = 'configs/*.json';
17
-
18
- const PLUGIN_CONFIG_DIR = 'configs/';
19
-
20
- /**
21
- * Instance of this class.
22
- *
23
- * @var WPGlobus_Config_Vendor
24
- */
25
- protected static $instance;
26
-
27
- /**
28
- * @var array
29
- */
30
- protected static $config = array();
31
-
32
- /**
33
- * @var array|null
34
- */
35
- protected static $post_meta_fields = null;
36
-
37
- /**
38
- * @var array|null
39
- */
40
- protected static $post_ml_fields = null;
41
-
42
- /**
43
- * @var array|null
44
- */
45
- protected static $wp_options = null;
46
-
47
- /**
48
- * Builder.
49
- *
50
- * @var WPGlobus_Config_Builder
51
- */
52
- protected static $builder = null;
53
-
54
- /**
55
- * Array of registered vendors.
56
- *
57
- * @var string[]
58
- */
59
- protected static $vendors = array();
60
-
61
- /**
62
- * Constructor.
63
- *
64
- * @param WPGlobus_Config_Builder $builder
65
- */
66
- protected function __construct( $builder ) {
67
-
68
- self::$builder = $builder;
69
-
70
- self::get_config_files();
71
- self::parse_config();
72
-
73
- }
74
-
75
- /**
76
- * Get instance of this class.
77
- *
78
- * @param WPGlobus_Config_Builder $builder
79
- *
80
- * @return WPGlobus_Config_Vendor
81
- */
82
- public static function get_instance( $builder ) {
83
- if ( ! ( self::$instance instanceof WPGlobus_Config_Vendor ) ) {
84
- self::$instance = new self( $builder );
85
- }
86
-
87
- return self::$instance;
88
- }
89
-
90
- /**
91
- * Get meta fields.
92
- *
93
- * @return array|false
94
- */
95
- public static function get_meta_fields() {
96
- if ( is_null( self::$post_meta_fields ) ) {
97
- return false;
98
- }
99
-
100
- return self::$post_meta_fields;
101
- }
102
-
103
- /**
104
- * Get multilingual fields.
105
- *
106
- * @return array|false
107
- */
108
- public static function get_ml_fields() {
109
- if ( is_null( self::$post_ml_fields ) ) {
110
- return false;
111
- }
112
-
113
- return self::$post_ml_fields;
114
- }
115
-
116
- /**
117
- * Get wp_options.
118
- *
119
- * @return array|false
120
- */
121
- public static function get_wp_options() {
122
- if ( is_null( self::$wp_options ) ) {
123
- return false;
124
- }
125
-
126
- return self::$wp_options;
127
- }
128
-
129
- /**
130
- * Get config files.
131
- */
132
- public static function get_config_files() {
133
-
134
- $config_plugin_dir = WPGlobus::$PLUGIN_DIR_PATH . self::PLUGIN_CONFIG_DIR;
135
-
136
- /**
137
- * WPGlobus SEO.
138
- */
139
- if ( function_exists( 'wpglobus_seo__init' ) ) {
140
- self::$vendors[] = 'wpglobus-seo.json';
141
- }
142
-
143
- /**
144
- * Yoast SEO.
145
- * https://wordpress.org/plugins/wordpress-seo/
146
- */
147
- if ( defined( 'WPSEO_VERSION' ) ) {
148
- /**
149
- * check 'WPSEO_PREMIUM_PLUGIN_FILE' for premium add-on.
150
- */
151
- self::$vendors[] = 'yoast-seo.json';
152
- }
153
-
154
- /**
155
- * All in One SEO Pack.
156
- * https://wordpress.org/plugins/all-in-one-seo-pack/
157
- */
158
- if ( defined( 'AIOSEOP_VERSION' ) ) {
159
- /**
160
- * Load config file for builder page only.
161
- */
162
- if ( self::$builder->is_builder_page() ) {
163
- self::$vendors[] = 'all-in-one-seo-pack.json';
164
- }
165
- }
166
-
167
- /**
168
- * Elementor.
169
- * https://wordpress.org/plugins/elementor/
170
- */
171
- if ( defined( 'ELEMENTOR_VERSION' ) ) {
172
- self::$vendors[] = 'elementor.json';
173
- }
174
-
175
- /**
176
- * Advanced Custom Fields.
177
- * https://wordpress.org/plugins/advanced-custom-fields/
178
- */
179
- if ( function_exists( 'acf' ) ) {
180
- /**
181
- * Check the existence of function to prevent getting fatal error in older version (checked with 4.4.12).
182
- */
183
- if ( function_exists( 'acf_maybe_get_field' ) ) {
184
- self::$vendors[] = 'acf.json';
185
- }
186
- }
187
-
188
- /**
189
- * Pods – Custom Content Types and Fields.
190
- * https://wordpress.org/plugins/pods/
191
- * @since 2.3.0
192
- */
193
- if ( defined( 'PODS_VERSION' ) ) {
194
- self::$vendors[] = 'pods.json';
195
- }
196
-
197
- /**
198
- * Rank Math SEO.
199
- * https://wordpress.org/plugins/seo-by-rank-math/
200
- * @since 2.4.3
201
- */
202
- if ( defined( 'RANK_MATH_VERSION' ) ) {
203
- self::$vendors[] = 'rank-math-seo.json';
204
- }
205
-
206
- /**
207
- * Page Builder by SiteOrigin.
208
- * https://wordpress.org/plugins/siteorigin-panels/
209
- * // if ( defined('SITEORIGIN_PANELS_VERSION') ) {
210
- * // self::$vendors[] = 'siteorigin-panels.json';
211
- * // }
212
- */
213
-
214
- // TODO: builder ID can be a string or `false`. Need to refactor this condition or the `get_id` method.
215
- // phpcs:ignore WordPress.PHP.StrictComparisons
216
- if ( self::$builder->get_id() != '' && self::$builder->is_builder_page() ) {
217
-
218
- $addons = WPGlobus_Builders::get_addons();
219
-
220
- if ( ! empty( $addons ) ) {
221
- foreach ( $addons as $id => $addon ) {
222
- if ( 'add-on' === $addon['role'] ) {
223
- if ( ! empty( $addon['const'] ) && defined( $addon['const'] ) ) {
224
- self::$vendors[] = $addon['config_file'];
225
- }
226
- }
227
- }
228
- }
229
- }
230
-
231
- /**
232
- * Now handle with config files.
233
- */
234
- foreach ( self::$vendors as $file ) {
235
-
236
- if ( is_readable( $config_plugin_dir . $file ) ) {
237
- $file_name = pathinfo( $file, PATHINFO_FILENAME );
238
-
239
- self::$config[ $file_name ] = json_decode( file_get_contents( $config_plugin_dir . $file ), true );
240
- }
241
- }
242
-
243
- /**
244
- * Filter vendor's config.
245
- *
246
- * @since 2.1.10
247
- *
248
- * @param array $config Config.
249
- * @param object $builder An object WPGlobus_Config_Builder.
250
- *
251
- * @return array
252
- */
253
- self::$config = apply_filters( 'wpglobus_config_vendors', self::$config, self::$builder );
254
-
255
- }
256
-
257
- /**
258
- * Get multilingual fields for post.
259
- *
260
- * @param mixed $_meta Unused.
261
- * @param array $_init
262
- *
263
- * @return array|false
264
- */
265
- public static function get_post_ml_fields(
266
- /** @noinspection PhpUnusedParameterInspection */
267
- $_meta, $_init
268
- ) {
269
-
270
- if ( ! self::$builder->is_builder_page() ) {
271
- /**
272
- * Prevent getting multilingual fields for no builder page.
273
- *
274
- * @since 2.1.11
275
- */
276
- return false;
277
- }
278
-
279
- $_post_ml_fields = array();
280
-
281
- if ( empty( $_init ) ) {
282
- return $_post_ml_fields;
283
- }
284
-
285
- // phpcs:ignore
286
- // $file = empty( $_init['file'] ) ? '' : WPGlobus::$PLUGIN_DIR_PATH . 'includes/' . $_init['file']; // TODO remove
287
-
288
- /** @var WPGlobus_Acf_2 $class */
289
- $class = empty( $_init['class'] ) ? '' : $_init['class'];
290
-
291
- if ( ! empty( $class ) && class_exists( $class ) ) {
292
- $_post_ml_fields = $class::get_post_multilingual_fields();
293
- }
294
-
295
- return $_post_ml_fields;
296
- }
297
-
298
- /**
299
- * Get meta fields for post.
300
- *
301
- * @param mixed $_meta Unused.
302
- * @param array $_init
303
- *
304
- * @return array|false
305
- */
306
- public static function get_post_meta_fields(
307
- /** @noinspection PhpUnusedParameterInspection */
308
- $_meta, $_init
309
- ) {
310
-
311
- if ( ! self::$builder->is_builder_page() ) {
312
- /**
313
- * Prevent getting meta fields for no builder page.
314
- *
315
- * @since 2.1.11
316
- */
317
- return false;
318
- }
319
-
320
- $_post_meta_fields = array();
321
-
322
- if ( empty( $_init ) ) {
323
- return $_post_meta_fields;
324
- }
325
-
326
- $file = empty( $_init['file'] ) ? '' : WPGlobus::$PLUGIN_DIR_PATH . 'includes/' . $_init['file'];
327
-
328
- /** @var WPGlobus_Acf_2 $class */
329
- $class = empty( $_init['class'] ) ? '' : $_init['class'];
330
-
331
- if ( ! empty( $file ) && file_exists( $file ) ) {
332
- /** @noinspection PhpIncludeInspection */
333
- include_once $file;
334
- if ( ! empty( $class ) && class_exists( $class ) ) {
335
- /**
336
- * @since 2.1.3 Added post type parameter.
337
- */
338
- $_post_meta_fields = $class::get_post_meta_fields( self::$builder->get( 'post_id' ), self::$builder->get( 'post_type' ) );
339
- } else {
340
- /**
341
- * Mark as being incorrectly called.
342
- */
343
- _doing_it_wrong( 'Class `' . $class . '` (in ' . __FILE__ . ')', 'Check out `configs\*.json` files.', '2.3.0' );
344
- }
345
- } else {
346
- /**
347
- * Mark as being incorrectly called.
348
- */
349
- _doing_it_wrong( 'File `' . $file . '` (in ' . __FILE__ . ')', 'Check out `configs\*.json` files.', '2.3.0' );
350
- }
351
-
352
- return $_post_meta_fields;
353
- }
354
-
355
- /**
356
- * Parse config files.
357
- */
358
- public static function parse_config() {
359
-
360
- /**
361
- * Parse post meta fields.
362
- */
363
- if ( is_null( self::$post_meta_fields ) ) {
364
-
365
- self::$post_meta_fields = array();
366
- self::$post_ml_fields = array();
367
-
368
- foreach ( self::$config as $vendor => $data ) {
369
-
370
- if ( isset( $data['post_meta_fields'] ) && is_array( $data['post_meta_fields'] ) ) :
371
-
372
- foreach ( $data['post_meta_fields'] as $_meta => $_init ) {
373
-
374
- if ( isset( $data['post_meta_fields'][ $_meta ] ) ) {
375
-
376
- if ( '*' === $_meta ) {
377
- $_arr = self::get_post_meta_fields( $_meta, $_init );
378
- if ( ! empty( $_arr ) ) {
379
- self::$post_meta_fields = array_merge( self::$post_meta_fields, $_arr );
380
- }
381
- } else {
382
- self::$post_meta_fields[] = $_meta;
383
- }
384
- }
385
- }
386
-
387
- endif;
388
-
389
- if ( isset( $data['post_ml_fields'] ) && is_array( $data['post_ml_fields'] ) ) :
390
- foreach ( $data['post_ml_fields'] as $_meta => $_init ) {
391
- if ( isset( $data['post_ml_fields'][ $_meta ] ) ) {
392
-
393
- if ( '*' === $_meta ) {
394
- $_arr = self::get_post_ml_fields( $_meta, $_init );
395
- if ( ! empty( $_arr ) ) {
396
- self::$post_ml_fields = array_merge( self::$post_ml_fields, $_arr );
397
- }
398
- } else {
399
- self::$post_ml_fields[] = $_meta;
400
- }
401
- }
402
- }
403
- endif;
404
-
405
-