Contact Form by WPForms – Drag & Drop Form Builder for WordPress - Version 1.6.7.1

Version Description

  • Changed: Improved logic of pasting a text in the fields with word and character limits.
  • Changed: Updated DOMPurify lib to 2.2.9.
  • Changed: Some admin notices can be dismissed on a per-user basis.
  • Fixed: Smart Tags don't parse dot and comma symbols well.
  • Fixed: In rare cases, WPForms functions calls are not handled correctly inside the third-party frontend AJAX calls.
  • Fixed: Incorrect wpforms_smart_tag_process filter deprecation notice.
  • Fixed: Compatibility with the Elementor 3.1.x, 3.2.x and 3.3.x.
Download this release

Release Info

Developer slaFFik
Plugin Icon 128x128 Contact Form by WPForms – Drag & Drop Form Builder for WordPress
Version 1.6.7.1
Comparing to
See all releases

Code changes from version 1.6.7 to 1.6.7.1

Files changed (40) hide show
  1. assets/css/admin-integrations.css +3 -1
  2. assets/css/admin-integrations.min.css +1 -1
  3. assets/js/admin-builder.js +2 -2
  4. assets/js/admin-utils.js +4 -0
  5. assets/js/components/admin/notices.js +78 -0
  6. assets/js/components/admin/notices.min.js +1 -0
  7. assets/js/integrations/divi/formselector.min.js +1 -1
  8. assets/js/purify.min.js +1 -1
  9. assets/js/text-limit.js +35 -3
  10. assets/js/text-limit.min.js +1 -1
  11. assets/js/wpforms.js +46 -27
  12. assets/languages/wpforms-lite.pot +155 -155
  13. changelog.txt +9 -0
  14. includes/admin/admin.php +1 -1
  15. includes/admin/ajax-actions.php +21 -16
  16. includes/admin/builder/class-builder.php +1 -1
  17. includes/admin/class-notices.php +1 -4
  18. includes/admin/class-review.php +84 -74
  19. includes/admin/class-settings.php +1 -1
  20. includes/admin/class-tools.php +0 -0
  21. includes/admin/overview/class-overview-table.php +4 -4
  22. includes/admin/overview/class-overview.php +1 -1
  23. includes/class-form.php +112 -66
  24. includes/class-frontend.php +29 -21
  25. includes/class-smart-tags.php +0 -0
  26. includes/functions.php +11 -21
  27. includes/providers/class-constant-contact.php +72 -54
  28. lite/templates/admin/addons.php +0 -9
  29. lite/wpforms-lite.php +7 -2
  30. readme.txt +10 -1
  31. src/Admin/Notice.php +365 -0
  32. src/Admin/Settings/Captcha.php +1 -1
  33. src/Integrations/UsageTracking/UsageTracking.php +10 -1
  34. src/Lite/Admin/Pages/Addons.php +28 -0
  35. src/Loader.php +4 -0
  36. src/SmartTags/SmartTag/Generic.php +27 -0
  37. src/SmartTags/SmartTag/SmartTag.php +11 -4
  38. src/SmartTags/SmartTags.php +76 -36
  39. src/WPForms.php +20 -16
  40. wpforms.php +2 -2
assets/css/admin-integrations.css CHANGED
@@ -148,6 +148,8 @@
148
  padding: 30px;
149
  z-index: 10000;
150
  background: rgba(0, 0, 0, 0.75);
 
 
151
  }
152
 
153
  #wpforms-builder-elementor-popup iframe {
@@ -390,4 +392,4 @@ div.components-panel__body .wpforms-gutenberg-panel-notice {
390
  padding: 10px;
391
  }
392
 
393
- /*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzL2Nzcy9hZG1pbi1pbnRlZ3JhdGlvbnMuY3NzIiwic291cmNlcyI6WyJhc3NldHMvc2Nzcy9hZG1pbi1pbnRlZ3JhdGlvbnMuc2NzcyIsImFzc2V0cy9zY3NzL192YXJpYWJsZXMuc2NzcyIsImFzc2V0cy9zY3NzL2FkbWluL19lbXB0eS1zdGF0ZXMuc2NzcyIsImFzc2V0cy9zY3NzL2ludGVncmF0aW9ucy9fZWxlbWVudG9yLnNjc3MiLCJhc3NldHMvc2Nzcy9pbnRlZ3JhdGlvbnMvZGl2aS9fcHJldmlldy5zY3NzIiwiYXNzZXRzL3Njc3MvaW50ZWdyYXRpb25zL19ndXRlbmJlcmcuc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBTdHlsZXMgbmVlZGVkIGZvciBpbnRlZ3JhdGlvbnMgd2l0aCB0aGlyZC1wYXJ0eSBwbHVnaW5zLiAqL1xuXG5AaW1wb3J0ICd2YXJpYWJsZXMnO1xuQGltcG9ydCAnYWRtaW4vZW1wdHktc3RhdGVzJztcbkBpbXBvcnQgJ2ludGVncmF0aW9ucy9lbGVtZW50b3InO1xuQGltcG9ydCAnaW50ZWdyYXRpb25zL2RpdmkvcHJldmlldyc7XG5AaW1wb3J0ICdpbnRlZ3JhdGlvbnMvZ3V0ZW5iZXJnJztcbiIsIiRvcmFuZ2U6ICNlMjc3MzA7XG4kYWx0b3JhbmdlOiAjZGY3NzM5O1xuJGRhcmtvcmFuZ2U6ICNiODVhMWI7XG4kZ3JlZW46ICMyYTliMzk7XG4kYmx1ZTogIzBlNmNhZDtcbiRsaWdodEJsdWU6ICNlYmYzZmI7XG5cbiR0cmFuc2l0aW9uX2R1cmF0aW9uOiAwLjNzO1xuJGhvdmVyX3RyYW5zaXRpb25fZHVyYXRpb246IDAuMDVzO1xuIiwiLy8gRW1wdHkgc3RhdGVzIHN0eWxlcy5cblxuLy8gQ29tbW9uIHN0eWxlcyBmb3IgZW1wdHkgc3RhdGUgcGFnZXMuXG4ud3Bmb3Jtcy1hZG1pbi1lbXB0eS1zdGF0ZS1jb250YWluZXIge1xuXG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblx0Zm9udC1mYW1pbHk6IFwiSGVsdmV0aWNhIE5ldWVcIiwgc2Fucy1zZXJpZjtcblx0Zm9udC1zdHlsZTogbm9ybWFsO1xuXHRwYWRkaW5nOiAzMHB4O1xuXG5cdC53YXZpbmctaGFuZC1lbW9qaSB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWFnZXMvZW1wdHktc3RhdGVzL3dhdmluZy1oYW5kLWVtb2ppLnBuZyk7XG5cdFx0YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcblx0XHRiYWNrZ3JvdW5kLXNpemU6IDI0cHggMjRweDtcblx0XHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDA7XG5cdFx0cGFkZGluZy1sZWZ0OiAzNHB4O1xuXHR9XG5cblx0aDIge1xuXHRcdGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuXHRcdGZvbnQtd2VpZ2h0OiBib2xkO1xuXHRcdGZvbnQtc2l6ZTogMjRweDtcblx0XHRjb2xvcjogIzQ0NDQ0NDtcblx0XHRsaW5lLWhlaWdodDogMjlweDtcblx0XHRtYXJnaW46IDAgMCAxMHB4O1xuXHR9XG5cblx0aW1nIHtcblx0XHRtYXgtd2lkdGg6IDQyOHB4O1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdG1hcmdpbjogMzBweCBhdXRvO1xuXHR9XG5cblx0cCB7XG5cdFx0Zm9udC1mYW1pbHk6IGluaGVyaXQ7XG5cdFx0Zm9udC13ZWlnaHQ6IG5vcm1hbDtcblx0XHRmb250LXNpemU6IDE2cHg7XG5cdFx0bGluZS1oZWlnaHQ6IDI0cHg7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdGNvbG9yOiAjNzc3Nzc3O1xuXHRcdG1hcmdpbjogMCBhdXRvO1xuXHR9XG5cblx0Ly8gRm9ybXMgb3ZlcnZpZXcgc2NyZWVuLlxuXHQmLndwZm9ybXMtYWRtaW4tbm8tZm9ybXMge1xuXG5cdFx0cCB7XG5cdFx0XHQmOmZpcnN0LW9mLXR5cGUge1xuXHRcdFx0XHRmb250LXdlaWdodDogYm9sZDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQud3Bmb3Jtcy1idG4sIC53cGZvcm1zLWJ0bjphY3RpdmUge1xuXHRcdFx0Ym9yZGVyOiBub25lO1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogM3B4O1xuXHRcdFx0Zm9udC1mYW1pbHk6IGluaGVyaXQ7XG5cdFx0XHRmb250LXdlaWdodDogYm9sZDtcblx0XHRcdGZvbnQtc2l6ZTogMTZweDtcblx0XHRcdGxpbmUtaGVpZ2h0OiAyNHB4O1xuXHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdFx0Y29sb3I6ICNGRkZGRkY7XG5cdFx0XHRwYWRkaW5nOiAxNXB4IDMwcHg7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cblx0XHRcdCY6aG92ZXIge1xuXHRcdFx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdFx0XHR9XG5cblx0XHRcdCY6Zm9jdXMge1xuXHRcdFx0XHRvdXRsaW5lOiBub25lO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC53cGZvcm1zLWFkbWluLW5vLWZvcm1zLWZvb3RlciB7XG5cdFx0XHRtYXJnaW4tdG9wOiAzMHB4O1xuXHRcdFx0Zm9udC1zaXplOiAxNHB4O1xuXHRcdFx0bGluZS1oZWlnaHQ6IDE2cHg7XG5cdFx0fVxuXHR9XG5cblx0Ly8gTW9kaWZpY2F0aW9ucyBmb3IgdGhlIEVsZW1lbnRvciB3aWRnZXQuXG5cdCYud3Bmb3Jtcy1lbGVtZW50b3Itbm8tZm9ybXMge1xuXHRcdGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAjNzFEN0Y3O1xuXHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdFx0cGFkZGluZzogMjBweDtcblxuXHRcdGltZyB7XG5cdFx0XHRtYXgtd2lkdGg6IDI0MHB4O1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRtYXJnaW46IDAgYXV0bztcblx0XHR9XG5cblx0XHRwIHtcblx0XHRcdGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuXHRcdFx0Zm9udC13ZWlnaHQ6IG5vcm1hbDtcblx0XHRcdGZvbnQtc2l6ZTogMTRweDtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxOHB4O1xuXHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdFx0Y29sb3I6ICM0OTUxNTc7XG5cdFx0XHRtYXgtd2lkdGg6IDQ1MHB4O1xuXHRcdFx0bWFyZ2luOiAyMHB4IGF1dG8gMDtcblx0XHR9XG5cblx0XHRhIHtcblx0XHRcdGNvbG9yOiBpbmhlcml0O1xuXHRcdFx0dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG5cblx0XHRcdCY6aG92ZXIge1xuXHRcdFx0XHRjb2xvcjogI0QzMEM1Qztcblx0XHRcdFx0dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LndwZm9ybXMtYnRuIHtcblx0XHRcdGJhY2tncm91bmQ6ICNEMzBDNUM7XG5cdFx0XHRib3JkZXI6IG5vbmU7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAzcHg7XG5cdFx0XHRmb250LWZhbWlseTogaW5oZXJpdDtcblx0XHRcdGZvbnQtd2VpZ2h0OiA1MDA7XG5cdFx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0XHRsaW5lLWhlaWdodDogMThweDtcblx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0XHRjb2xvcjogI0ZGRkZGRjtcblx0XHRcdHBhZGRpbmc6IDdweCAxN3B4O1xuXHRcdFx0bWFyZ2luOiAyMHB4IDAgMDtcblx0XHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuXHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblx0XHRcdFx0YmFja2dyb3VuZDogI2ZkMWU3YTtcblx0XHRcdH1cblxuXHRcdFx0Jjpmb2N1cyB7XG5cdFx0XHRcdG91dGxpbmU6IG5vbmU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LndwZm9ybXMtYWRtaW4tbm8tZm9ybXMtZm9vdGVyIHtcblx0XHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxOHB4O1xuXHRcdFx0Y29sb3I6ICM2RDc4ODI7XG5cdFx0fVxuXHR9XG5cblx0Ly8gRm9ybSBlbnRyaWVzIHNjcmVlbi5cblx0Ji53cGZvcm1zLWFkbWluLW5vLWVudHJpZXMge1xuXG5cdFx0aW1nIHtcblx0XHRcdG1heC13aWR0aDogNDEzcHg7XG5cdFx0fVxuXHR9XG59XG4iLCIvLyBTdHlsZXMgc3BlY2lmaWMgZm9yIEVsZW1lbnRvcidzIFdQRm9ybXMgd2lkZ2V0LlxuXG4jd3Bmb3Jtcy1idWlsZGVyLWVsZW1lbnRvci1wb3B1cCB7XG5cdHBvc2l0aW9uOiBmaXhlZDtcblx0d2lkdGg6IDEwMHZ3O1xuXHRoZWlnaHQ6IDEwMHZoO1xuXHRwYWRkaW5nOiAzMHB4O1xuXHR6LWluZGV4OiAxMDAwMDtcblx0YmFja2dyb3VuZDogcmdiYSggMCwgMCwgMCwgMC43NSApO1xuXG5cdGlmcmFtZSB7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0aGVpZ2h0OiAxMDAlO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG5cdH1cbn1cblxuLndwZm9ybXMtZWxlbWVudG9yLWZvcm0tc2VsZWN0b3Ige1xuXHRiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7XG5cdGJvcmRlcjogMXB4IHNvbGlkICM3MUQ3Rjc7XG5cdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblx0Zm9udC1mYW1pbHk6IFwiSGVsdmV0aWNhIE5ldWVcIiwgc2Fucy1zZXJpZjtcblx0Zm9udC1zdHlsZTogbm9ybWFsO1xuXHRwYWRkaW5nOiA0MHB4O1xuXG5cdGltZyB7XG5cdFx0d2lkdGg6IDIyMHB4O1xuXHRcdG1hcmdpbjogMCBhdXRvIDIwcHggYXV0bztcblx0fVxuXG5cdC5zZWxlY3Qtd3JhcHBlciB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdHBhZGRpbmc6IDA7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0bWF4LXdpZHRoOiAyNjZweDtcblx0XHRtYXJnaW46IDAgYXV0bztcblx0XHRsaW5lLWhlaWdodDogMDtcblxuXHRcdCY6YWZ0ZXIge1xuXHRcdFx0Zm9udC1mYW1pbHk6IGVpY29ucztcblx0XHRcdGNvbnRlbnQ6IFwiXFxlOGFkXCI7XG5cdFx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHR0b3A6IDUwJTtcblx0XHRcdC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuXHRcdFx0LW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcblx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcblx0XHRcdHJpZ2h0OiA1cHg7XG5cdFx0XHRwb2ludGVyLWV2ZW50czogbm9uZTtcblx0XHRcdG9wYWNpdHk6IDAuNTU7XG5cdFx0fVxuXHR9XG5cblx0c2VsZWN0IHtcblx0XHRmb250LWZhbWlseTogaW5oZXJpdDtcblx0XHRmb250LXN0eWxlOiBpbmhlcml0O1xuXHRcdGZvbnQtd2VpZ2h0OiBub3JtYWw7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdGxpbmUtaGVpZ2h0OiAxMnB4O1xuXHRcdGNvbG9yOiAjNkQ3ODgyO1xuXHRcdHBhZGRpbmc6IDAgMjBweCAwIDVweDtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRoZWlnaHQ6IDI3cHg7XG5cdFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cdFx0bWFyZ2luOiAwO1xuXHRcdGJhY2tncm91bmQ6ICNGRkZGRkY7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgI0Q1REFERjtcblx0XHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXHRcdGJvcmRlci1yYWRpdXM6IDNweDtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0YXBwZWFyYW5jZTogbm9uZTtcblx0XHQtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG5cblx0XHQmOmZvY3VzIHtcblx0XHRcdG91dGxpbmU6IG5vbmU7XG5cdFx0fVxuXHR9XG59XG5cbi8vIFdlYiBmb250IGNvbnRhaW5pbmcgb25lIGVsZW1lbnQgY3JlYXRlZCB1c2luZyBodHRwczovL2ZvbnRlbGxvLmNvbS8gc2VydmljZS5cbkBmb250LWZhY2Uge1xuXHRmb250LWZhbWlseTogJ0ljb24gV1BGb3Jtcyc7XG5cdHNyYzogdXJsKCcuLi9pbWFnZXMvaW50ZWdyYXRpb25zL2VsZW1lbnRvci9mb250L2ljb24td3Bmb3Jtcy5lb3QnKTtcblx0c3JjOiB1cmwoJy4uL2ltYWdlcy9pbnRlZ3JhdGlvbnMvZWxlbWVudG9yL2ZvbnQvaWNvbi13cGZvcm1zLmVvdCNpZWZpeCcpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKSxcblx0ICAgICB1cmwoJy4uL2ltYWdlcy9pbnRlZ3JhdGlvbnMvZWxlbWVudG9yL2ZvbnQvaWNvbi13cGZvcm1zLndvZmYyJykgZm9ybWF0KCd3b2ZmMicpLFxuXHRcdCB1cmwoJy4uL2ltYWdlcy9pbnRlZ3JhdGlvbnMvZWxlbWVudG9yL2ZvbnQvaWNvbi13cGZvcm1zLndvZmYnKSBmb3JtYXQoJ3dvZmYnKSxcblx0XHQgdXJsKCcuLi9pbWFnZXMvaW50ZWdyYXRpb25zL2VsZW1lbnRvci9mb250L2ljb24td3Bmb3Jtcy50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyksXG5cdFx0IHVybCgnLi4vaW1hZ2VzL2ludGVncmF0aW9ucy9lbGVtZW50b3IvZm9udC9pY29uLXdwZm9ybXMuc3ZnJykgZm9ybWF0KCdzdmcnKTtcbn1cblxuI2VsZW1lbnRvci1lZGl0b3Itd3JhcHBlciwgLmVsZW1lbnRvci1lZGl0LWFyZWEge1xuXG5cdC5pY29uLXdwZm9ybXMge1xuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHR3aWR0aDogMjhweDtcblxuXHRcdCY6YmVmb3JlIHtcblx0XHRcdGNvbnRlbnQ6ICdcXGU4MDAnO1xuXHRcdFx0Zm9udC1mYW1pbHk6IFwiSWNvbiBXUEZvcm1zXCI7XG5cdFx0XHRmb250LXN0eWxlOiBub3JtYWw7XG5cdFx0XHRmb250LXdlaWdodDogbm9ybWFsO1xuXHRcdFx0c3BlYWs6IG5ldmVyO1xuXHRcdH1cblx0fVxuXG5cdC5lbGVtZW50b3Itd2lkZ2V0LWVtcHR5LWljb24uaWNvbi13cGZvcm1zIHtcblx0XHR3aWR0aDogMjJweDtcblx0XHRsaW5lLWhlaWdodDogMjJweDtcblx0XHRwYWRkaW5nOiAwO1xuXHRcdGZvbnQtc2l6ZTogMjJweDtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdH1cblxuXHQuZWxlbWVudG9yLW5hdmlnYXRvcl9faXRlbSB7XG5cdFx0Lmljb24td3Bmb3JtcyB7XG5cdFx0XHR3aWR0aDogMTFweDtcblx0XHRcdGhlaWdodDogMTFweDtcblx0XHR9XG5cdH1cblxuXHQuZWxlbWVudG9yLWNvbnRyb2wuZWxlbWVudG9yLWNvbnRyb2wtZWRpdF9mb3JtIHtcblx0XHRwYWRkaW5nOiAwIDIwcHggMTBweCAyMHB4O1xuXG5cdFx0Zm9udC1zdHlsZTogaXRhbGljO1xuXHRcdGZvbnQtd2VpZ2h0OiBub3JtYWw7XG5cdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdGxpbmUtaGVpZ2h0OiAxM3B4O1xuXHRcdGNvbG9yOiAjQTRBRkI3O1xuXG5cdFx0YSB7XG5cdFx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cblx0XHRcdCY6aG92ZXIge1xuXG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LmVsZW1lbnRvci1jb250cm9sLmVsZW1lbnRvci1jb250cm9sLXRlc3RfZm9ybV9ub3RpY2Uge1xuXG5cdFx0YSB7XG5cdFx0XHRjb2xvcjogIzZkNzg4Mjtcblx0XHRcdGJvcmRlci1ib3R0b20tY29sb3I6ICM2ZDc4ODI7XG5cblx0XHRcdCY6aG92ZXIge1xuXHRcdFx0XHRjb2xvcjogI2QzMGM1Yztcblx0XHRcdFx0Ym9yZGVyLWJvdHRvbS1jb2xvcjogI2QzMGM1Yztcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQuZWxlbWVudG9yLWNvbnRyb2wuZWxlbWVudG9yLWNvbnRyb2wtYWRkX2Zvcm1fYnRuIHtcblxuXHRcdC5lbGVtZW50b3ItYnV0dG9uIHtcblx0XHRcdHBhZGRpbmc6IDdweCAxNnB4O1xuXG5cdFx0XHRiIHtcblx0XHRcdFx0bWFyZ2luOiAwIDEwcHggMCAwO1xuXHRcdFx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0XHRcdGZvbnQtd2VpZ2h0OiA0MDA7XG5cdFx0XHRcdGxpbmUtaGVpZ2h0OiAxMnB4O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCYuZWxlbWVudG9yLWxhYmVsLWlubGluZT4uZWxlbWVudG9yLWNvbnRyb2wtY29udGVudD4uZWxlbWVudG9yLWNvbnRyb2wtZmllbGQ+LmVsZW1lbnRvci1jb250cm9sLWlucHV0LXdyYXBwZXIge1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiBhdXRvO1xuXHRcdH1cblx0fVxufVxuIiwiLndwZm9ybXMtZGl2aS1mb3JtLXBsYWNlaG9sZGVyLFxuLmV0LWRiICNldC1ib2MgLmV0LWwgLndwZm9ybXMtZGl2aS1mb3JtLXBsYWNlaG9sZGVyIHtcblx0cGFkZGluZzogMjVweCAxNXB4O1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtd3JhcDogd3JhcDtcblx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cblx0aW1nIHtcblx0XHRoZWlnaHQ6IDEwMHB4O1xuXHRcdHdpZHRoOiBhdXRvO1xuXHRcdG1hcmdpbi1yaWdodDogMTVweDtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0fVxuXG5cdGgzIHtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRtYXJnaW46IDEwcHggMCAwO1xuXHRcdGZvbnQtd2VpZ2h0OiA3MDA7XG5cdFx0Zm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgU2Vnb2UgVUksIFJvYm90bywgT3h5Z2VuLVNhbnMsIFVidW50dSwgQ2FudGFyZWxsLCBIZWx2ZXRpY2EgTmV1ZSwgc2Fucy1zZXJpZjtcblx0XHRmb250LXNpemU6IDIwcHg7XG5cdFx0bGluZS1oZWlnaHQ6IDI4cHg7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdHBhZGRpbmc6IDA7XG5cdFx0bGV0dGVyLXNwYWNpbmc6IDA7XG5cdFx0dGV4dC10cmFuc2Zvcm06IG5vbmU7XG5cdH1cbn1cblxuLndwZm9ybXMtZGl2aS1mb3JtLXByZXZpZXcsXG4uZXQtZGIgI2V0LWJvYyAuZXQtbCAud3Bmb3Jtcy1kaXZpLWZvcm0tcHJldmlldyB7XG5cdCYubG9hZGluZyB7XG5cdFx0b3BhY2l0eTogLjc7XG5cdH1cbn1cblxuLmV0LWRiICNldC1ib2MgLmV0LWwgLmV0LWZiLW1vZHVsZXMtbGlzdCB1bCA+IGxpLndwZm9ybXNfc2VsZWN0b3I6OmJlZm9yZSB7XG5cdGNvbnRlbnQ6ICcnO1xuXHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy4uL2ltYWdlcy9pbnRlZ3JhdGlvbnMvZGl2aS93cGZvcm1zLWljb24uc3ZnJyk7XG5cdGhlaWdodDogMTZweDtcblx0Zm9udC12YXJpYW50OiBub3JtYWw7XG5cdGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBjZW50ZXI7XG5cdGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG59XG4iLCIvKiBHdXRlbmJlcmcgQmxvY2tcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi5lZGl0LXBvc3QtdmlzdWFsLWVkaXRvciAud3Bmb3Jtcy1ndXRlbmJlcmctZm9ybS1zZWxlY3Rvci13cmFwIHtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblxuXHRoMyB7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0bWFyZ2luOiAxMHB4IDAgNXB4O1xuXHRcdGZvbnQtd2VpZ2h0OiA3MDA7XG5cdFx0Zm9udC1zaXplOiAyMHB4O1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0fVxuXG5cdGltZyB7XG5cdFx0bWFyZ2luLXJpZ2h0OiAxNXB4O1xuXHRcdGhlaWdodDogMTAwcHg7XG5cdFx0d2lkdGg6IGF1dG87XG5cdH1cblxuXHQuY29tcG9uZW50cy1iYXNlLWNvbnRyb2wge1xuXHRcdHdpZHRoOiAxMDAlO1xuXHR9XG5cblx0LmNvbXBvbmVudHMtcGxhY2Vob2xkZXJfX2ZpZWxkc2V0IHtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRhbGlnbi1zZWxmOiBjZW50ZXI7XG5cdFx0bWF4LXdpZHRoOiA0MDBweDtcblx0XHRmbGV4LWRpcmVjdGlvbjogcm93ICFpbXBvcnRhbnQ7XG5cdH1cblxuXHQuY29tcG9uZW50cy1zZWxlY3QtY29udHJvbF9faW5wdXQge1xuXHRcdHBhZGRpbmc6IDAgMTBweDtcblx0XHRoZWlnaHQ6IGF1dG87XG5cdH1cbn1cblxuZGl2LndwZm9ybXMtZ3V0ZW5iZXJnLWZvcm0tc2VsZWN0b3IgLndwZm9ybXMtZm9ybSB7XG5cblx0aW5wdXQ6ZGlzYWJsZWQsXG5cdHRleHRhcmVhOmRpc2FibGVkLFxuXHRzZWxlY3Q6ZGlzYWJsZWQge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG5cdFx0Ym9yZGVyLWNvbG9yOiAjY2NjO1xuXHRcdGNvbG9yOiAjMzMzO1xuXHRcdGN1cnNvcjogbm90LWFsbG93ZWQ7XG5cdH1cblxuXHRidXR0b25bdHlwZT1zdWJtaXRdOmRpc2FibGVkIHtcblx0XHRjdXJzb3I6IG5vdC1hbGxvd2VkO1xuXHR9XG59XG5cbmRpdi5jb21wb25lbnRzLXBhbmVsX19ib2R5IC53cGZvcm1zLWd1dGVuYmVyZy1wYW5lbC1ub3RpY2Uge1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjZDllZGY3O1xuXHRib3JkZXI6IDFweCBzb2xpZCAjYmNlOGYxO1xuXHRjb2xvcjogIzMxNzA4Zjtcblx0cGFkZGluZzogMTBweDtcbn0iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsOERBQThEO0FFRzlELEFBQUEsb0NBQW9DLENBQUM7RUFFcEMsVUFBVSxFQUFFLE1BQU07RUFDbEIsV0FBVyxFQUFFLDRCQUE0QjtFQUN6QyxVQUFVLEVBQUUsTUFBTTtFQUNsQixPQUFPLEVBQUUsSUFBSTtDQW1KYjs7QUF4SkQsQUFPQyxvQ0FQbUMsQ0FPbkMsa0JBQWtCLENBQUM7RUFDbEIsT0FBTyxFQUFFLFlBQVk7RUFDckIsZ0JBQWdCLEVBQUUsaURBQWlEO0VBQ25FLGlCQUFpQixFQUFFLFNBQVM7RUFDNUIsZUFBZSxFQUFFLFNBQVM7RUFDMUIsbUJBQW1CLEVBQUUsR0FBRztFQUN4QixZQUFZLEVBQUUsSUFBSTtDQUNsQjs7QUFkRixBQWdCQyxvQ0FoQm1DLENBZ0JuQyxFQUFFLENBQUM7RUFDRixXQUFXLEVBQUUsT0FBTztFQUNwQixXQUFXLEVBQUUsSUFBSTtFQUNqQixTQUFTLEVBQUUsSUFBSTtFQUNmLEtBQUssRUFBRSxPQUFPO0VBQ2QsV0FBVyxFQUFFLElBQUk7RUFDakIsTUFBTSxFQUFFLFFBQVE7Q0FDaEI7O0FBdkJGLEFBeUJDLG9DQXpCbUMsQ0F5Qm5DLEdBQUcsQ0FBQztFQUNILFNBQVMsRUFBRSxLQUFLO0VBQ2hCLEtBQUssRUFBRSxJQUFJO0VBQ1gsTUFBTSxFQUFFLFNBQVM7Q0FDakI7O0FBN0JGLEFBK0JDLG9DQS9CbUMsQ0ErQm5DLENBQUMsQ0FBQztFQUNELFdBQVcsRUFBRSxPQUFPO0VBQ3BCLFdBQVcsRUFBRSxNQUFNO0VBQ25CLFNBQVMsRUFBRSxJQUFJO0VBQ2YsV0FBVyxFQUFFLElBQUk7RUFDakIsVUFBVSxFQUFFLE1BQU07RUFDbEIsS0FBSyxFQUFFLE9BQU87RUFDZCxNQUFNLEVBQUUsTUFBTTtDQUNkOztBQXZDRixBQTZDRyxvQ0E3Q2lDLEFBMENsQyx1QkFBdUIsQ0FFdkIsQ0FBQyxBQUNDLGNBQWMsQ0FBQztFQUNmLFdBQVcsRUFBRSxJQUFJO0NBQ2pCOztBQS9DSixBQWtERSxvQ0FsRGtDLEFBMENsQyx1QkFBdUIsQ0FRdkIsWUFBWSxFQWxEZCxvQ0FBb0MsQUEwQ2xDLHVCQUF1QixDQVFULFlBQVksQUFBQSxPQUFPLENBQUM7RUFDakMsTUFBTSxFQUFFLElBQUk7RUFDWixhQUFhLEVBQUUsR0FBRztFQUNsQixXQUFXLEVBQUUsT0FBTztFQUNwQixXQUFXLEVBQUUsSUFBSTtFQUNqQixTQUFTLEVBQUUsSUFBSTtFQUNmLFdBQVcsRUFBRSxJQUFJO0VBQ2pCLFVBQVUsRUFBRSxNQUFNO0VBQ2xCLEtBQUssRUFBRSxPQUFPO0VBQ2QsT0FBTyxFQUFFLFNBQVM7RUFDbEIsTUFBTSxFQUFFLENBQUM7RUFDVCxlQUFlLEVBQUUsSUFBSTtDQVNyQjs7QUF0RUgsQUErREcsb0NBL0RpQyxBQTBDbEMsdUJBQXVCLENBUXZCLFlBQVksQUFhVixNQUFNLEVBL0RWLG9DQUFvQyxBQTBDbEMsdUJBQXVCLENBUVQsWUFBWSxBQUFBLE9BQU8sQUFhL0IsTUFBTSxDQUFDO0VBQ1AsZUFBZSxFQUFFLElBQUk7Q0FDckI7O0FBakVKLEFBbUVHLG9DQW5FaUMsQUEwQ2xDLHVCQUF1QixDQVF2QixZQUFZLEFBaUJWLE1BQU0sRUFuRVYsb0NBQW9DLEFBMENsQyx1QkFBdUIsQ0FRVCxZQUFZLEFBQUEsT0FBTyxBQWlCL0IsTUFBTSxDQUFDO0VBQ1AsT0FBTyxFQUFFLElBQUk7Q0FDYjs7QUFyRUosQUF3RUUsb0NBeEVrQyxBQTBDbEMsdUJBQXVCLENBOEJ2Qiw4QkFBOEIsQ0FBQztFQUM5QixVQUFVLEVBQUUsSUFBSTtFQUNoQixTQUFTLEVBQUUsSUFBSTtFQUNmLFdBQVcsRUFBRSxJQUFJO0NBQ2pCOztBQTVFSCxBQWdGQyxvQ0FoRm1DLEFBZ0ZsQywyQkFBMkIsQ0FBQztFQUM1QixVQUFVLEVBQUUsd0JBQXdCO0VBQ3BDLE1BQU0sRUFBRSxpQkFBaUI7RUFDekIsVUFBVSxFQUFFLFVBQVU7RUFDdEIsT0FBTyxFQUFFLElBQUk7Q0EyRGI7O0FBL0lGLEFBc0ZFLG9DQXRGa0MsQUFnRmxDLDJCQUEyQixDQU0zQixHQUFHLENBQUM7RUFDSCxTQUFTLEVBQUUsS0FBSztFQUNoQixLQUFLLEVBQUUsSUFBSTtFQUNYLE1BQU0sRUFBRSxNQUFNO0NBQ2Q7O0FBMUZILEFBNEZFLG9DQTVGa0MsQUFnRmxDLDJCQUEyQixDQVkzQixDQUFDLENBQUM7RUFDRCxXQUFXLEVBQUUsT0FBTztFQUNwQixXQUFXLEVBQUUsTUFBTTtFQUNuQixTQUFTLEVBQUUsSUFBSTtFQUNmLFdBQVcsRUFBRSxJQUFJO0VBQ2pCLFVBQVUsRUFBRSxNQUFNO0VBQ2xCLEtBQUssRUFBRSxPQUFPO0VBQ2QsU0FBUyxFQUFFLEtBQUs7RUFDaEIsTUFBTSxFQUFFLFdBQVc7Q0FDbkI7O0FBckdILEFBdUdFLG9DQXZHa0MsQUFnRmxDLDJCQUEyQixDQXVCM0IsQ0FBQyxDQUFDO0VBQ0QsS0FBSyxFQUFFLE9BQU87RUFDZCxlQUFlLEVBQUUsU0FBUztDQU0xQjs7QUEvR0gsQUEyR0csb0NBM0dpQyxBQWdGbEMsMkJBQTJCLENBdUIzQixDQUFDLEFBSUMsTUFBTSxDQUFDO0VBQ1AsS0FBSyxFQUFFLE9BQU87RUFDZCxlQUFlLEVBQUUsU0FBUztDQUMxQjs7QUE5R0osQUFpSEUsb0NBakhrQyxBQWdGbEMsMkJBQTJCLENBaUMzQixZQUFZLENBQUM7RUFDWixVQUFVLEVBQUUsT0FBTztFQUNuQixNQUFNLEVBQUUsSUFBSTtFQUNaLGFBQWEsRUFBRSxHQUFHO0VBQ2xCLFdBQVcsRUFBRSxPQUFPO0VBQ3BCLFdBQVcsRUFBRSxHQUFHO0VBQ2hCLFNBQVMsRUFBRSxJQUFJO0VBQ2YsV0FBVyxFQUFFLElBQUk7RUFDakIsVUFBVSxFQUFFLE1BQU07RUFDbEIsY0FBYyxFQUFFLFNBQVM7RUFDekIsS0FBSyxFQUFFLE9BQU87RUFDZCxPQUFPLEVBQUUsUUFBUTtFQUNqQixNQUFNLEVBQUUsUUFBUTtFQUNoQixlQUFlLEVBQUUsSUFBSTtDQVVyQjs7QUF4SUgsQUFnSUcsb0NBaElpQyxBQWdGbEMsMkJBQTJCLENBaUMzQixZQUFZLEFBZVYsTUFBTSxDQUFDO0VBQ1AsZUFBZSxFQUFFLElBQUk7RUFDckIsVUFBVSxFQUFFLE9BQU87Q0FDbkI7O0FBbklKLEFBcUlHLG9DQXJJaUMsQUFnRmxDLDJCQUEyQixDQWlDM0IsWUFBWSxBQW9CVixNQUFNLENBQUM7RUFDUCxPQUFPLEVBQUUsSUFBSTtDQUNiOztBQXZJSixBQTBJRSxvQ0ExSWtDLEFBZ0ZsQywyQkFBMkIsQ0EwRDNCLDhCQUE4QixDQUFDO0VBQzlCLFNBQVMsRUFBRSxJQUFJO0VBQ2YsV0FBVyxFQUFFLElBQUk7RUFDakIsS0FBSyxFQUFFLE9BQU87Q0FDZDs7QUE5SUgsQUFvSkUsb0NBcEprQyxBQWtKbEMseUJBQXlCLENBRXpCLEdBQUcsQ0FBQztFQUNILFNBQVMsRUFBRSxLQUFLO0NBQ2hCOztBQ3ZKSCxBQUFBLGdDQUFnQyxDQUFDO0VBQ2hDLFFBQVEsRUFBRSxLQUFLO0VBQ2YsS0FBSyxFQUFFLEtBQUs7RUFDWixNQUFNLEVBQUUsS0FBSztFQUNiLE9BQU8sRUFBRSxJQUFJO0VBQ2IsT0FBTyxFQUFFLEtBQUs7RUFDZCxVQUFVLEVBQUUsbUJBQXFCO0NBT2pDOztBQWJELEFBUUMsZ0NBUitCLENBUS9CLE1BQU0sQ0FBQztFQUNOLEtBQUssRUFBRSxJQUFJO0VBQ1gsTUFBTSxFQUFFLElBQUk7RUFDWixnQkFBZ0IsRUFBRSxPQUFPO0NBQ3pCOztBQUdGLEFBQUEsZ0NBQWdDLENBQUM7RUFDaEMsVUFBVSxFQUFFLHdCQUF3QjtFQUNwQyxNQUFNLEVBQUUsaUJBQWlCO0VBQ3pCLFVBQVUsRUFBRSxVQUFVO0VBQ3RCLFVBQVUsRUFBRSxNQUFNO0VBQ2xCLFdBQVcsRUFBRSw0QkFBNEI7RUFDekMsVUFBVSxFQUFFLE1BQU07RUFDbEIsT0FBTyxFQUFFLElBQUk7Q0FzRGI7O0FBN0RELEFBU0MsZ0NBVCtCLENBUy9CLEdBQUcsQ0FBQztFQUNILEtBQUssRUFBRSxLQUFLO0VBQ1osTUFBTSxFQUFFLGdCQUFnQjtDQUN4Qjs7QUFaRixBQWNDLGdDQWQrQixDQWMvQixlQUFlLENBQUM7RUFDZixRQUFRLEVBQUUsUUFBUTtFQUNsQixPQUFPLEVBQUUsQ0FBQztFQUNWLEtBQUssRUFBRSxJQUFJO0VBQ1gsU0FBUyxFQUFFLEtBQUs7RUFDaEIsTUFBTSxFQUFFLE1BQU07RUFDZCxXQUFXLEVBQUUsQ0FBQztDQWVkOztBQW5DRixBQXNCRSxnQ0F0QjhCLENBYy9CLGVBQWUsQUFRYixNQUFNLENBQUM7RUFDUCxXQUFXLEVBQUUsTUFBTTtFQUNuQixPQUFPLEVBQUUsT0FBTztFQUNoQixTQUFTLEVBQUUsSUFBSTtFQUNmLFFBQVEsRUFBRSxRQUFRO0VBQ2xCLEdBQUcsRUFBRSxHQUFHO0VBQ1IsaUJBQWlCLEVBQUUsZ0JBQWdCO0VBQ25DLGFBQWEsRUFBRSxnQkFBZ0I7RUFDL0IsU0FBUyxFQUFFLGdCQUFnQjtFQUMzQixLQUFLLEVBQUUsR0FBRztFQUNWLGNBQWMsRUFBRSxJQUFJO0VBQ3BCLE9BQU8sRUFBRSxJQUFJO0NBQ2I7O0FBbENILEFBcUNDLGdDQXJDK0IsQ0FxQy9CLE1BQU0sQ0FBQztFQUNOLFdBQVcsRUFBRSxPQUFPO0VBQ3BCLFVBQVUsRUFBRSxPQUFPO0VBQ25CLFdBQVcsRUFBRSxNQUFNO0VBQ25CLFNBQVMsRUFBRSxJQUFJO0VBQ2YsV0FBVyxFQUFFLElBQUk7RUFDakIsS0FBSyxFQUFFLE9BQU87RUFDZCxPQUFPLEVBQUUsWUFBWTtFQUNyQixLQUFLLEVBQUUsSUFBSTtFQUNYLE1BQU0sRUFBRSxJQUFJO0VBQ1osYUFBYSxFQUFFLFFBQVE7RUFDdkIsTUFBTSxFQUFFLENBQUM7RUFDVCxVQUFVLEVBQUUsT0FBTztFQUNuQixNQUFNLEVBQUUsaUJBQWlCO0VBQ3pCLFVBQVUsRUFBRSxVQUFVO0VBQ3RCLGFBQWEsRUFBRSxHQUFHO0VBQ2xCLE1BQU0sRUFBRSxPQUFPO0VBQ2YsVUFBVSxFQUFFLElBQUk7RUFDaEIsa0JBQWtCLEVBQUUsSUFBSTtDQUt4Qjs7QUE1REYsQUF5REUsZ0NBekQ4QixDQXFDL0IsTUFBTSxBQW9CSixNQUFNLENBQUM7RUFDUCxPQUFPLEVBQUUsSUFBSTtDQUNiOztBQUtILFVBQVU7RUFDVCxXQUFXLEVBQUUsY0FBYztFQUMzQixHQUFHLEVBQUUsNkRBQTZEO0VBQ2xFLEdBQUcsRUFBRSxtRUFBbUUsQ0FBQywyQkFBMkIsRUFDL0YsK0RBQStELENBQUMsZUFBZSxFQUNsRiw4REFBOEQsQ0FBQyxjQUFjLEVBQzdFLDZEQUE2RCxDQUFDLGtCQUFrQixFQUNoRiw2REFBNkQsQ0FBQyxhQUFhOzs7QUFHOUUsQUFFQyx5QkFGd0IsQ0FFeEIsYUFBYSxFQUZhLG9CQUFvQixDQUU5QyxhQUFhLENBQUM7RUFDYixPQUFPLEVBQUUsWUFBWTtFQUNyQixLQUFLLEVBQUUsSUFBSTtDQVNYOztBQWJGLEFBTUUseUJBTnVCLENBRXhCLGFBQWEsQUFJWCxPQUFPLEVBTmlCLG9CQUFvQixDQUU5QyxhQUFhLEFBSVgsT0FBTyxDQUFDO0VBQ1IsT0FBTyxFQUFFLE9BQU87RUFDaEIsV0FBVyxFQUFFLGNBQWM7RUFDM0IsVUFBVSxFQUFFLE1BQU07RUFDbEIsV0FBVyxFQUFFLE1BQU07RUFDbkIsS0FBSyxFQUFFLEtBQUs7Q0FDWjs7QUFaSCxBQWVDLHlCQWZ3QixDQWV4Qiw0QkFBNEIsQUFBQSxhQUFhLEVBZmYsb0JBQW9CLENBZTlDLDRCQUE0QixBQUFBLGFBQWEsQ0FBQztFQUN6QyxLQUFLLEVBQUUsSUFBSTtFQUNYLFdBQVcsRUFBRSxJQUFJO0VBQ2pCLE9BQU8sRUFBRSxDQUFDO0VBQ1YsU0FBUyxFQUFFLElBQUk7RUFDZixVQUFVLEVBQUUsTUFBTTtDQUNsQjs7QUFyQkYsQUF3QkUseUJBeEJ1QixDQXVCeEIsMEJBQTBCLENBQ3pCLGFBQWEsRUF4Qlksb0JBQW9CLENBdUI5QywwQkFBMEIsQ0FDekIsYUFBYSxDQUFDO0VBQ2IsS0FBSyxFQUFFLElBQUk7RUFDWCxNQUFNLEVBQUUsSUFBSTtDQUNaOztBQTNCSCxBQThCQyx5QkE5QndCLENBOEJ4QixrQkFBa0IsQUFBQSw0QkFBNEIsRUE5QnBCLG9CQUFvQixDQThCOUMsa0JBQWtCLEFBQUEsNEJBQTRCLENBQUM7RUFDOUMsT0FBTyxFQUFFLGdCQUFnQjtFQUV6QixVQUFVLEVBQUUsTUFBTTtFQUNsQixXQUFXLEVBQUUsTUFBTTtFQUNuQixTQUFTLEVBQUUsSUFBSTtFQUNmLFdBQVcsRUFBRSxJQUFJO0VBQ2pCLEtBQUssRUFBRSxPQUFPO0NBU2Q7O0FBOUNGLEFBdUNFLHlCQXZDdUIsQ0E4QnhCLGtCQUFrQixBQUFBLDRCQUE0QixDQVM3QyxDQUFDLEVBdkN3QixvQkFBb0IsQ0E4QjlDLGtCQUFrQixBQUFBLDRCQUE0QixDQVM3QyxDQUFDLENBQUM7RUFDRCxNQUFNLEVBQUUsT0FBTztDQUtmOztBQTdDSCxBQWtERSx5QkFsRHVCLENBZ0R4QixrQkFBa0IsQUFBQSxtQ0FBbUMsQ0FFcEQsQ0FBQyxFQWxEd0Isb0JBQW9CLENBZ0Q5QyxrQkFBa0IsQUFBQSxtQ0FBbUMsQ0FFcEQsQ0FBQyxDQUFDO0VBQ0QsS0FBSyxFQUFFLE9BQU87RUFDZCxtQkFBbUIsRUFBRSxPQUFPO0NBTTVCOztBQTFESCxBQXNERyx5QkF0RHNCLENBZ0R4QixrQkFBa0IsQUFBQSxtQ0FBbUMsQ0FFcEQsQ0FBQyxBQUlDLE1BQU0sRUF0RGlCLG9CQUFvQixDQWdEOUMsa0JBQWtCLEFBQUEsbUNBQW1DLENBRXBELENBQUMsQUFJQyxNQUFNLENBQUM7RUFDUCxLQUFLLEVBQUUsT0FBTztFQUNkLG1CQUFtQixFQUFFLE9BQU87Q0FDNUI7O0FBekRKLEFBK0RFLHlCQS9EdUIsQ0E2RHhCLGtCQUFrQixBQUFBLCtCQUErQixDQUVoRCxpQkFBaUIsRUEvRFEsb0JBQW9CLENBNkQ5QyxrQkFBa0IsQUFBQSwrQkFBK0IsQ0FFaEQsaUJBQWlCLENBQUM7RUFDakIsT0FBTyxFQUFFLFFBQVE7Q0FRakI7O0FBeEVILEFBa0VHLHlCQWxFc0IsQ0E2RHhCLGtCQUFrQixBQUFBLCtCQUErQixDQUVoRCxpQkFBaUIsQ0FHaEIsQ0FBQyxFQWxFdUIsb0JBQW9CLENBNkQ5QyxrQkFBa0IsQUFBQSwrQkFBK0IsQ0FFaEQsaUJBQWlCLENBR2hCLENBQUMsQ0FBQztFQUNELE1BQU0sRUFBRSxVQUFVO0VBQ2xCLFNBQVMsRUFBRSxJQUFJO0VBQ2YsV0FBVyxFQUFFLEdBQUc7RUFDaEIsV0FBVyxFQUFFLElBQUk7Q0FDakI7O0FBdkVKLEFBMEVFLHlCQTFFdUIsQ0E2RHhCLGtCQUFrQixBQUFBLCtCQUErQixBQWEvQyx1QkFBdUIsR0FBQywwQkFBMEIsR0FBQyx3QkFBd0IsR0FBQyxnQ0FBZ0MsRUExRXBGLG9CQUFvQixDQTZEOUMsa0JBQWtCLEFBQUEsK0JBQStCLEFBYS9DLHVCQUF1QixHQUFDLDBCQUEwQixHQUFDLHdCQUF3QixHQUFDLGdDQUFnQyxDQUFDO0VBQzdHLFlBQVksRUFBRSxJQUFJO0NBQ2xCOztBQ3ZLSCxBQUFBLDhCQUE4QjtBQUM5QixNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQztFQUNuRCxPQUFPLEVBQUUsU0FBUztFQUNsQixVQUFVLEVBQUUsTUFBTTtFQUNsQixPQUFPLEVBQUUsSUFBSTtFQUNiLFNBQVMsRUFBRSxJQUFJO0VBQ2YsZUFBZSxFQUFFLE1BQU07Q0FxQnZCOztBQTNCRCxBQVFDLDhCQVI2QixDQVE3QixHQUFHO0FBUEosTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsOEJBQThCLENBT2xELEdBQUcsQ0FBQztFQUNILE1BQU0sRUFBRSxLQUFLO0VBQ2IsS0FBSyxFQUFFLElBQUk7RUFDWCxZQUFZLEVBQUUsSUFBSTtFQUNsQixPQUFPLEVBQUUsS0FBSztDQUNkOztBQWJGLEFBZUMsOEJBZjZCLENBZTdCLEVBQUU7QUFkSCxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyw4QkFBOEIsQ0FjbEQsRUFBRSxDQUFDO0VBQ0YsS0FBSyxFQUFFLElBQUk7RUFDWCxNQUFNLEVBQUUsUUFBUTtFQUNoQixXQUFXLEVBQUUsR0FBRztFQUNoQixXQUFXLEVBQUUsK0dBQStHO0VBQzVILFNBQVMsRUFBRSxJQUFJO0VBQ2YsV0FBVyxFQUFFLElBQUk7RUFDakIsVUFBVSxFQUFFLE1BQU07RUFDbEIsT0FBTyxFQUFFLENBQUM7RUFDVixjQUFjLEVBQUUsQ0FBQztFQUNqQixjQUFjLEVBQUUsSUFBSTtDQUNwQjs7QUFHRixBQUVDLDBCQUZ5QixBQUV4QixRQUFRO0FBRFYsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLEFBQzdDLFFBQVEsQ0FBQztFQUNULE9BQU8sRUFBRSxFQUFFO0NBQ1g7O0FBR0YsQUFBQSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEdBQUcsRUFBRSxBQUFBLGlCQUFpQixBQUFBLFFBQVEsQ0FBQztFQUN6RSxPQUFPLEVBQUUsRUFBRTtFQUNYLGdCQUFnQixFQUFFLG1EQUFtRDtFQUNyRSxNQUFNLEVBQUUsSUFBSTtFQUNaLFlBQVksRUFBRSxNQUFNO0VBQ3BCLG1CQUFtQixFQUFFLGFBQWE7RUFDbEMsaUJBQWlCLEVBQUUsU0FBUztDQUM1Qjs7QUMzQ0Q7Z0ZBQ2dGO0FBRWhGLEFBQUEsd0JBQXdCLENBQUMscUNBQXFDLENBQUM7RUFDOUQsV0FBVyxFQUFFLE1BQU07Q0ErQm5COztBQWhDRCxBQUdDLHdCQUh1QixDQUFDLHFDQUFxQyxDQUc3RCxFQUFFLENBQUM7RUFDRixLQUFLLEVBQUUsSUFBSTtFQUNYLE1BQU0sRUFBRSxVQUFVO0VBQ2xCLFdBQVcsRUFBRSxHQUFHO0VBQ2hCLFNBQVMsRUFBRSxJQUFJO0VBQ2YsVUFBVSxFQUFFLE1BQU07Q0FDbEI7O0FBVEYsQUFXQyx3QkFYdUIsQ0FBQyxxQ0FBcUMsQ0FXN0QsR0FBRyxDQUFDO0VBQ0gsWUFBWSxFQUFFLElBQUk7RUFDbEIsTUFBTSxFQUFFLEtBQUs7RUFDYixLQUFLLEVBQUUsSUFBSTtDQUNYOztBQWZGLEFBaUJDLHdCQWpCdUIsQ0FBQyxxQ0FBcUMsQ0FpQjdELHdCQUF3QixDQUFDO0VBQ3hCLEtBQUssRUFBRSxJQUFJO0NBQ1g7O0FBbkJGLEFBcUJDLHdCQXJCdUIsQ0FBQyxxQ0FBcUMsQ0FxQjdELGlDQUFpQyxDQUFDO0VBQ2pDLGVBQWUsRUFBRSxNQUFNO0VBQ3ZCLFVBQVUsRUFBRSxNQUFNO0VBQ2xCLFNBQVMsRUFBRSxLQUFLO0VBQ2hCLGNBQWMsRUFBRSxjQUFjO0NBQzlCOztBQTFCRixBQTRCQyx3QkE1QnVCLENBQUMscUNBQXFDLENBNEI3RCxpQ0FBaUMsQ0FBQztFQUNqQyxPQUFPLEVBQUUsTUFBTTtFQUNmLE1BQU0sRUFBRSxJQUFJO0NBQ1o7O0FBR0YsQUFFQyxHQUZFLEFBQUEsZ0NBQWdDLENBQUMsYUFBYSxDQUVoRCxLQUFLLEFBQUEsU0FBUztBQUZmLEdBQUcsQUFBQSxnQ0FBZ0MsQ0FBQyxhQUFhLENBR2hELFFBQVEsQUFBQSxTQUFTO0FBSGxCLEdBQUcsQUFBQSxnQ0FBZ0MsQ0FBQyxhQUFhLENBSWhELE1BQU0sQUFBQSxTQUFTLENBQUM7RUFDZixnQkFBZ0IsRUFBRSxJQUFJO0VBQ3RCLFlBQVksRUFBRSxJQUFJO0VBQ2xCLEtBQUssRUFBRSxJQUFJO0VBQ1gsTUFBTSxFQUFFLFdBQVc7Q0FDbkI7O0FBVEYsQUFXQyxHQVhFLEFBQUEsZ0NBQWdDLENBQUMsYUFBYSxDQVdoRCxNQUFNLENBQUEsQUFBQSxJQUFDLENBQUQsTUFBQyxBQUFBLENBQVksU0FBUyxDQUFDO0VBQzVCLE1BQU0sRUFBRSxXQUFXO0NBQ25COztBQUdGLEFBQUEsR0FBRyxBQUFBLHVCQUF1QixDQUFDLCtCQUErQixDQUFDO0VBQzFELGdCQUFnQixFQUFFLE9BQU87RUFDekIsTUFBTSxFQUFFLGlCQUFpQjtFQUN6QixLQUFLLEVBQUUsT0FBTztFQUNkLE9BQU8sRUFBRSxJQUFJO0NBQ2IifQ== */
148
  padding: 30px;
149
  z-index: 10000;
150
  background: rgba(0, 0, 0, 0.75);
151
+ left: 0;
152
+ top: 0;
153
  }
154
 
155
  #wpforms-builder-elementor-popup iframe {
392
  padding: 10px;
393
  }
394
 
395
+ /*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzL2Nzcy9hZG1pbi1pbnRlZ3JhdGlvbnMuY3NzIiwic291cmNlcyI6WyJhc3NldHMvc2Nzcy9hZG1pbi1pbnRlZ3JhdGlvbnMuc2NzcyIsImFzc2V0cy9zY3NzL192YXJpYWJsZXMuc2NzcyIsImFzc2V0cy9zY3NzL2FkbWluL19lbXB0eS1zdGF0ZXMuc2NzcyIsImFzc2V0cy9zY3NzL2ludGVncmF0aW9ucy9fZWxlbWVudG9yLnNjc3MiLCJhc3NldHMvc2Nzcy9pbnRlZ3JhdGlvbnMvZGl2aS9fcHJldmlldy5zY3NzIiwiYXNzZXRzL3Njc3MvaW50ZWdyYXRpb25zL19ndXRlbmJlcmcuc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBTdHlsZXMgbmVlZGVkIGZvciBpbnRlZ3JhdGlvbnMgd2l0aCB0aGlyZC1wYXJ0eSBwbHVnaW5zLiAqL1xuXG5AaW1wb3J0ICd2YXJpYWJsZXMnO1xuQGltcG9ydCAnYWRtaW4vZW1wdHktc3RhdGVzJztcbkBpbXBvcnQgJ2ludGVncmF0aW9ucy9lbGVtZW50b3InO1xuQGltcG9ydCAnaW50ZWdyYXRpb25zL2RpdmkvcHJldmlldyc7XG5AaW1wb3J0ICdpbnRlZ3JhdGlvbnMvZ3V0ZW5iZXJnJztcbiIsIiRvcmFuZ2U6ICNlMjc3MzA7XG4kYWx0b3JhbmdlOiAjZGY3NzM5O1xuJGRhcmtvcmFuZ2U6ICNiODVhMWI7XG4kZ3JlZW46ICMyYTliMzk7XG4kYmx1ZTogIzBlNmNhZDtcbiRsaWdodEJsdWU6ICNlYmYzZmI7XG5cbiR0cmFuc2l0aW9uX2R1cmF0aW9uOiAwLjNzO1xuJGhvdmVyX3RyYW5zaXRpb25fZHVyYXRpb246IDAuMDVzO1xuIiwiLy8gRW1wdHkgc3RhdGVzIHN0eWxlcy5cblxuLy8gQ29tbW9uIHN0eWxlcyBmb3IgZW1wdHkgc3RhdGUgcGFnZXMuXG4ud3Bmb3Jtcy1hZG1pbi1lbXB0eS1zdGF0ZS1jb250YWluZXIge1xuXG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblx0Zm9udC1mYW1pbHk6IFwiSGVsdmV0aWNhIE5ldWVcIiwgc2Fucy1zZXJpZjtcblx0Zm9udC1zdHlsZTogbm9ybWFsO1xuXHRwYWRkaW5nOiAzMHB4O1xuXG5cdC53YXZpbmctaGFuZC1lbW9qaSB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWFnZXMvZW1wdHktc3RhdGVzL3dhdmluZy1oYW5kLWVtb2ppLnBuZyk7XG5cdFx0YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcblx0XHRiYWNrZ3JvdW5kLXNpemU6IDI0cHggMjRweDtcblx0XHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDA7XG5cdFx0cGFkZGluZy1sZWZ0OiAzNHB4O1xuXHR9XG5cblx0aDIge1xuXHRcdGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuXHRcdGZvbnQtd2VpZ2h0OiBib2xkO1xuXHRcdGZvbnQtc2l6ZTogMjRweDtcblx0XHRjb2xvcjogIzQ0NDQ0NDtcblx0XHRsaW5lLWhlaWdodDogMjlweDtcblx0XHRtYXJnaW46IDAgMCAxMHB4O1xuXHR9XG5cblx0aW1nIHtcblx0XHRtYXgtd2lkdGg6IDQyOHB4O1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdG1hcmdpbjogMzBweCBhdXRvO1xuXHR9XG5cblx0cCB7XG5cdFx0Zm9udC1mYW1pbHk6IGluaGVyaXQ7XG5cdFx0Zm9udC13ZWlnaHQ6IG5vcm1hbDtcblx0XHRmb250LXNpemU6IDE2cHg7XG5cdFx0bGluZS1oZWlnaHQ6IDI0cHg7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdGNvbG9yOiAjNzc3Nzc3O1xuXHRcdG1hcmdpbjogMCBhdXRvO1xuXHR9XG5cblx0Ly8gRm9ybXMgb3ZlcnZpZXcgc2NyZWVuLlxuXHQmLndwZm9ybXMtYWRtaW4tbm8tZm9ybXMge1xuXG5cdFx0cCB7XG5cdFx0XHQmOmZpcnN0LW9mLXR5cGUge1xuXHRcdFx0XHRmb250LXdlaWdodDogYm9sZDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQud3Bmb3Jtcy1idG4sIC53cGZvcm1zLWJ0bjphY3RpdmUge1xuXHRcdFx0Ym9yZGVyOiBub25lO1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogM3B4O1xuXHRcdFx0Zm9udC1mYW1pbHk6IGluaGVyaXQ7XG5cdFx0XHRmb250LXdlaWdodDogYm9sZDtcblx0XHRcdGZvbnQtc2l6ZTogMTZweDtcblx0XHRcdGxpbmUtaGVpZ2h0OiAyNHB4O1xuXHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdFx0Y29sb3I6ICNGRkZGRkY7XG5cdFx0XHRwYWRkaW5nOiAxNXB4IDMwcHg7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cblx0XHRcdCY6aG92ZXIge1xuXHRcdFx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdFx0XHR9XG5cblx0XHRcdCY6Zm9jdXMge1xuXHRcdFx0XHRvdXRsaW5lOiBub25lO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC53cGZvcm1zLWFkbWluLW5vLWZvcm1zLWZvb3RlciB7XG5cdFx0XHRtYXJnaW4tdG9wOiAzMHB4O1xuXHRcdFx0Zm9udC1zaXplOiAxNHB4O1xuXHRcdFx0bGluZS1oZWlnaHQ6IDE2cHg7XG5cdFx0fVxuXHR9XG5cblx0Ly8gTW9kaWZpY2F0aW9ucyBmb3IgdGhlIEVsZW1lbnRvciB3aWRnZXQuXG5cdCYud3Bmb3Jtcy1lbGVtZW50b3Itbm8tZm9ybXMge1xuXHRcdGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAjNzFEN0Y3O1xuXHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdFx0cGFkZGluZzogMjBweDtcblxuXHRcdGltZyB7XG5cdFx0XHRtYXgtd2lkdGg6IDI0MHB4O1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRtYXJnaW46IDAgYXV0bztcblx0XHR9XG5cblx0XHRwIHtcblx0XHRcdGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuXHRcdFx0Zm9udC13ZWlnaHQ6IG5vcm1hbDtcblx0XHRcdGZvbnQtc2l6ZTogMTRweDtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxOHB4O1xuXHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdFx0Y29sb3I6ICM0OTUxNTc7XG5cdFx0XHRtYXgtd2lkdGg6IDQ1MHB4O1xuXHRcdFx0bWFyZ2luOiAyMHB4IGF1dG8gMDtcblx0XHR9XG5cblx0XHRhIHtcblx0XHRcdGNvbG9yOiBpbmhlcml0O1xuXHRcdFx0dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG5cblx0XHRcdCY6aG92ZXIge1xuXHRcdFx0XHRjb2xvcjogI0QzMEM1Qztcblx0XHRcdFx0dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LndwZm9ybXMtYnRuIHtcblx0XHRcdGJhY2tncm91bmQ6ICNEMzBDNUM7XG5cdFx0XHRib3JkZXI6IG5vbmU7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAzcHg7XG5cdFx0XHRmb250LWZhbWlseTogaW5oZXJpdDtcblx0XHRcdGZvbnQtd2VpZ2h0OiA1MDA7XG5cdFx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0XHRsaW5lLWhlaWdodDogMThweDtcblx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0XHRjb2xvcjogI0ZGRkZGRjtcblx0XHRcdHBhZGRpbmc6IDdweCAxN3B4O1xuXHRcdFx0bWFyZ2luOiAyMHB4IDAgMDtcblx0XHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuXHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblx0XHRcdFx0YmFja2dyb3VuZDogI2ZkMWU3YTtcblx0XHRcdH1cblxuXHRcdFx0Jjpmb2N1cyB7XG5cdFx0XHRcdG91dGxpbmU6IG5vbmU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LndwZm9ybXMtYWRtaW4tbm8tZm9ybXMtZm9vdGVyIHtcblx0XHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxOHB4O1xuXHRcdFx0Y29sb3I6ICM2RDc4ODI7XG5cdFx0fVxuXHR9XG5cblx0Ly8gRm9ybSBlbnRyaWVzIHNjcmVlbi5cblx0Ji53cGZvcm1zLWFkbWluLW5vLWVudHJpZXMge1xuXG5cdFx0aW1nIHtcblx0XHRcdG1heC13aWR0aDogNDEzcHg7XG5cdFx0fVxuXHR9XG59XG4iLCIvLyBTdHlsZXMgc3BlY2lmaWMgZm9yIEVsZW1lbnRvcidzIFdQRm9ybXMgd2lkZ2V0LlxuXG4jd3Bmb3Jtcy1idWlsZGVyLWVsZW1lbnRvci1wb3B1cCB7XG5cdHBvc2l0aW9uOiBmaXhlZDtcblx0d2lkdGg6IDEwMHZ3O1xuXHRoZWlnaHQ6IDEwMHZoO1xuXHRwYWRkaW5nOiAzMHB4O1xuXHR6LWluZGV4OiAxMDAwMDtcblx0YmFja2dyb3VuZDogcmdiYSggMCwgMCwgMCwgMC43NSApO1xuXHRsZWZ0OiAwO1xuXHR0b3A6IDA7XG5cblx0aWZyYW1lIHtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRoZWlnaHQ6IDEwMCU7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcblx0fVxufVxuXG4ud3Bmb3Jtcy1lbGVtZW50b3ItZm9ybS1zZWxlY3RvciB7XG5cdGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTtcblx0Ym9yZGVyOiAxcHggc29saWQgIzcxRDdGNztcblx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRmb250LWZhbWlseTogXCJIZWx2ZXRpY2EgTmV1ZVwiLCBzYW5zLXNlcmlmO1xuXHRmb250LXN0eWxlOiBub3JtYWw7XG5cdHBhZGRpbmc6IDQwcHg7XG5cblx0aW1nIHtcblx0XHR3aWR0aDogMjIwcHg7XG5cdFx0bWFyZ2luOiAwIGF1dG8gMjBweCBhdXRvO1xuXHR9XG5cblx0LnNlbGVjdC13cmFwcGVyIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0cGFkZGluZzogMDtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRtYXgtd2lkdGg6IDI2NnB4O1xuXHRcdG1hcmdpbjogMCBhdXRvO1xuXHRcdGxpbmUtaGVpZ2h0OiAwO1xuXG5cdFx0JjphZnRlciB7XG5cdFx0XHRmb250LWZhbWlseTogZWljb25zO1xuXHRcdFx0Y29udGVudDogXCJcXGU4YWRcIjtcblx0XHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdHRvcDogNTAlO1xuXHRcdFx0LXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG5cdFx0XHQtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuXHRcdFx0cmlnaHQ6IDVweDtcblx0XHRcdHBvaW50ZXItZXZlbnRzOiBub25lO1xuXHRcdFx0b3BhY2l0eTogMC41NTtcblx0XHR9XG5cdH1cblxuXHRzZWxlY3Qge1xuXHRcdGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuXHRcdGZvbnQtc3R5bGU6IGluaGVyaXQ7XG5cdFx0Zm9udC13ZWlnaHQ6IG5vcm1hbDtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0bGluZS1oZWlnaHQ6IDEycHg7XG5cdFx0Y29sb3I6ICM2RDc4ODI7XG5cdFx0cGFkZGluZzogMCAyMHB4IDAgNXB4O1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdGhlaWdodDogMjdweDtcblx0XHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblx0XHRtYXJnaW46IDA7XG5cdFx0YmFja2dyb3VuZDogI0ZGRkZGRjtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAjRDVEQURGO1xuXHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdFx0Ym9yZGVyLXJhZGl1czogM3B4O1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblx0XHRhcHBlYXJhbmNlOiBub25lO1xuXHRcdC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcblxuXHRcdCY6Zm9jdXMge1xuXHRcdFx0b3V0bGluZTogbm9uZTtcblx0XHR9XG5cdH1cbn1cblxuLy8gV2ViIGZvbnQgY29udGFpbmluZyBvbmUgZWxlbWVudCBjcmVhdGVkIHVzaW5nIGh0dHBzOi8vZm9udGVsbG8uY29tLyBzZXJ2aWNlLlxuQGZvbnQtZmFjZSB7XG5cdGZvbnQtZmFtaWx5OiAnSWNvbiBXUEZvcm1zJztcblx0c3JjOiB1cmwoJy4uL2ltYWdlcy9pbnRlZ3JhdGlvbnMvZWxlbWVudG9yL2ZvbnQvaWNvbi13cGZvcm1zLmVvdCcpO1xuXHRzcmM6IHVybCgnLi4vaW1hZ2VzL2ludGVncmF0aW9ucy9lbGVtZW50b3IvZm9udC9pY29uLXdwZm9ybXMuZW90I2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLFxuXHQgICAgIHVybCgnLi4vaW1hZ2VzL2ludGVncmF0aW9ucy9lbGVtZW50b3IvZm9udC9pY29uLXdwZm9ybXMud29mZjInKSBmb3JtYXQoJ3dvZmYyJyksXG5cdFx0IHVybCgnLi4vaW1hZ2VzL2ludGVncmF0aW9ucy9lbGVtZW50b3IvZm9udC9pY29uLXdwZm9ybXMud29mZicpIGZvcm1hdCgnd29mZicpLFxuXHRcdCB1cmwoJy4uL2ltYWdlcy9pbnRlZ3JhdGlvbnMvZWxlbWVudG9yL2ZvbnQvaWNvbi13cGZvcm1zLnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKSxcblx0XHQgdXJsKCcuLi9pbWFnZXMvaW50ZWdyYXRpb25zL2VsZW1lbnRvci9mb250L2ljb24td3Bmb3Jtcy5zdmcnKSBmb3JtYXQoJ3N2ZycpO1xufVxuXG4jZWxlbWVudG9yLWVkaXRvci13cmFwcGVyLCAuZWxlbWVudG9yLWVkaXQtYXJlYSB7XG5cblx0Lmljb24td3Bmb3JtcyB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdHdpZHRoOiAyOHB4O1xuXG5cdFx0JjpiZWZvcmUge1xuXHRcdFx0Y29udGVudDogJ1xcZTgwMCc7XG5cdFx0XHRmb250LWZhbWlseTogXCJJY29uIFdQRm9ybXNcIjtcblx0XHRcdGZvbnQtc3R5bGU6IG5vcm1hbDtcblx0XHRcdGZvbnQtd2VpZ2h0OiBub3JtYWw7XG5cdFx0XHRzcGVhazogbmV2ZXI7XG5cdFx0fVxuXHR9XG5cblx0LmVsZW1lbnRvci13aWRnZXQtZW1wdHktaWNvbi5pY29uLXdwZm9ybXMge1xuXHRcdHdpZHRoOiAyMnB4O1xuXHRcdGxpbmUtaGVpZ2h0OiAyMnB4O1xuXHRcdHBhZGRpbmc6IDA7XG5cdFx0Zm9udC1zaXplOiAyMnB4O1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0fVxuXG5cdC5lbGVtZW50b3ItbmF2aWdhdG9yX19pdGVtIHtcblx0XHQuaWNvbi13cGZvcm1zIHtcblx0XHRcdHdpZHRoOiAxMXB4O1xuXHRcdFx0aGVpZ2h0OiAxMXB4O1xuXHRcdH1cblx0fVxuXG5cdC5lbGVtZW50b3ItY29udHJvbC5lbGVtZW50b3ItY29udHJvbC1lZGl0X2Zvcm0ge1xuXHRcdHBhZGRpbmc6IDAgMjBweCAxMHB4IDIwcHg7XG5cblx0XHRmb250LXN0eWxlOiBpdGFsaWM7XG5cdFx0Zm9udC13ZWlnaHQ6IG5vcm1hbDtcblx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0bGluZS1oZWlnaHQ6IDEzcHg7XG5cdFx0Y29sb3I6ICNBNEFGQjc7XG5cblx0XHRhIHtcblx0XHRcdGN1cnNvcjogcG9pbnRlcjtcblxuXHRcdFx0Jjpob3ZlciB7XG5cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQuZWxlbWVudG9yLWNvbnRyb2wuZWxlbWVudG9yLWNvbnRyb2wtdGVzdF9mb3JtX25vdGljZSB7XG5cblx0XHRhIHtcblx0XHRcdGNvbG9yOiAjNmQ3ODgyO1xuXHRcdFx0Ym9yZGVyLWJvdHRvbS1jb2xvcjogIzZkNzg4MjtcblxuXHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdGNvbG9yOiAjZDMwYzVjO1xuXHRcdFx0XHRib3JkZXItYm90dG9tLWNvbG9yOiAjZDMwYzVjO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC5lbGVtZW50b3ItY29udHJvbC5lbGVtZW50b3ItY29udHJvbC1hZGRfZm9ybV9idG4ge1xuXG5cdFx0LmVsZW1lbnRvci1idXR0b24ge1xuXHRcdFx0cGFkZGluZzogN3B4IDE2cHg7XG5cblx0XHRcdGIge1xuXHRcdFx0XHRtYXJnaW46IDAgMTBweCAwIDA7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRcdFx0Zm9udC13ZWlnaHQ6IDQwMDtcblx0XHRcdFx0bGluZS1oZWlnaHQ6IDEycHg7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ji5lbGVtZW50b3ItbGFiZWwtaW5saW5lPi5lbGVtZW50b3ItY29udHJvbC1jb250ZW50Pi5lbGVtZW50b3ItY29udHJvbC1maWVsZD4uZWxlbWVudG9yLWNvbnRyb2wtaW5wdXQtd3JhcHBlciB7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IGF1dG87XG5cdFx0fVxuXHR9XG59XG4iLCIud3Bmb3Jtcy1kaXZpLWZvcm0tcGxhY2Vob2xkZXIsXG4uZXQtZGIgI2V0LWJvYyAuZXQtbCAud3Bmb3Jtcy1kaXZpLWZvcm0tcGxhY2Vob2xkZXIge1xuXHRwYWRkaW5nOiAyNXB4IDE1cHg7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblx0ZGlzcGxheTogZmxleDtcblx0ZmxleC13cmFwOiB3cmFwO1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuXHRpbWcge1xuXHRcdGhlaWdodDogMTAwcHg7XG5cdFx0d2lkdGg6IGF1dG87XG5cdFx0bWFyZ2luLXJpZ2h0OiAxNXB4O1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHR9XG5cblx0aDMge1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdG1hcmdpbjogMTBweCAwIDA7XG5cdFx0Zm9udC13ZWlnaHQ6IDcwMDtcblx0XHRmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCBTZWdvZSBVSSwgUm9ib3RvLCBPeHlnZW4tU2FucywgVWJ1bnR1LCBDYW50YXJlbGwsIEhlbHZldGljYSBOZXVlLCBzYW5zLXNlcmlmO1xuXHRcdGZvbnQtc2l6ZTogMjBweDtcblx0XHRsaW5lLWhlaWdodDogMjhweDtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0cGFkZGluZzogMDtcblx0XHRsZXR0ZXItc3BhY2luZzogMDtcblx0XHR0ZXh0LXRyYW5zZm9ybTogbm9uZTtcblx0fVxufVxuXG4ud3Bmb3Jtcy1kaXZpLWZvcm0tcHJldmlldyxcbi5ldC1kYiAjZXQtYm9jIC5ldC1sIC53cGZvcm1zLWRpdmktZm9ybS1wcmV2aWV3IHtcblx0Ji5sb2FkaW5nIHtcblx0XHRvcGFjaXR5OiAuNztcblx0fVxufVxuXG4uZXQtZGIgI2V0LWJvYyAuZXQtbCAuZXQtZmItbW9kdWxlcy1saXN0IHVsID4gbGkud3Bmb3Jtc19zZWxlY3Rvcjo6YmVmb3JlIHtcblx0Y29udGVudDogJyc7XG5cdGJhY2tncm91bmQtaW1hZ2U6IHVybCgnLi4vaW1hZ2VzL2ludGVncmF0aW9ucy9kaXZpL3dwZm9ybXMtaWNvbi5zdmcnKTtcblx0aGVpZ2h0OiAxNnB4O1xuXHRmb250LXZhcmlhbnQ6IG5vcm1hbDtcblx0YmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjtcblx0YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbn1cbiIsIi8qIEd1dGVuYmVyZyBCbG9ja1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLmVkaXQtcG9zdC12aXN1YWwtZWRpdG9yIC53cGZvcm1zLWd1dGVuYmVyZy1mb3JtLXNlbGVjdG9yLXdyYXAge1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xuXG5cdGgzIHtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRtYXJnaW46IDEwcHggMCA1cHg7XG5cdFx0Zm9udC13ZWlnaHQ6IDcwMDtcblx0XHRmb250LXNpemU6IDIwcHg7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHR9XG5cblx0aW1nIHtcblx0XHRtYXJnaW4tcmlnaHQ6IDE1cHg7XG5cdFx0aGVpZ2h0OiAxMDBweDtcblx0XHR3aWR0aDogYXV0bztcblx0fVxuXG5cdC5jb21wb25lbnRzLWJhc2UtY29udHJvbCB7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdH1cblxuXHQuY29tcG9uZW50cy1wbGFjZWhvbGRlcl9fZmllbGRzZXQge1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdGFsaWduLXNlbGY6IGNlbnRlcjtcblx0XHRtYXgtd2lkdGg6IDQwMHB4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDtcblx0fVxuXG5cdC5jb21wb25lbnRzLXNlbGVjdC1jb250cm9sX19pbnB1dCB7XG5cdFx0cGFkZGluZzogMCAxMHB4O1xuXHRcdGhlaWdodDogYXV0bztcblx0fVxufVxuXG5kaXYud3Bmb3Jtcy1ndXRlbmJlcmctZm9ybS1zZWxlY3RvciAud3Bmb3Jtcy1mb3JtIHtcblxuXHRpbnB1dDpkaXNhYmxlZCxcblx0dGV4dGFyZWE6ZGlzYWJsZWQsXG5cdHNlbGVjdDpkaXNhYmxlZCB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcblx0XHRib3JkZXItY29sb3I6ICNjY2M7XG5cdFx0Y29sb3I6ICMzMzM7XG5cdFx0Y3Vyc29yOiBub3QtYWxsb3dlZDtcblx0fVxuXG5cdGJ1dHRvblt0eXBlPXN1Ym1pdF06ZGlzYWJsZWQge1xuXHRcdGN1cnNvcjogbm90LWFsbG93ZWQ7XG5cdH1cbn1cblxuZGl2LmNvbXBvbmVudHMtcGFuZWxfX2JvZHkgLndwZm9ybXMtZ3V0ZW5iZXJnLXBhbmVsLW5vdGljZSB7XG5cdGJhY2tncm91bmQtY29sb3I6ICNkOWVkZjc7XG5cdGJvcmRlcjogMXB4IHNvbGlkICNiY2U4ZjE7XG5cdGNvbG9yOiAjMzE3MDhmO1xuXHRwYWRkaW5nOiAxMHB4O1xufSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw4REFBOEQ7QUVHOUQsQUFBQSxvQ0FBb0MsQ0FBQztFQUVwQyxVQUFVLEVBQUUsTUFBTTtF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 */
assets/css/admin-integrations.min.css CHANGED
@@ -1 +1 @@
1
- .wpforms-admin-empty-state-container{text-align:center;font-family:"Helvetica Neue", sans-serif;font-style:normal;padding:30px}.wpforms-admin-empty-state-container .waving-hand-emoji{display:inline-block;background-image:url(../images/empty-states/waving-hand-emoji.png);background-repeat:no-repeat;background-size:24px 24px;background-position:0 0;padding-left:34px}.wpforms-admin-empty-state-container h2{font-family:inherit;font-weight:bold;font-size:24px;color:#444444;line-height:29px;margin:0 0 10px}.wpforms-admin-empty-state-container img{max-width:428px;width:100%;margin:30px auto}.wpforms-admin-empty-state-container p{font-family:inherit;font-weight:normal;font-size:16px;line-height:24px;text-align:center;color:#777777;margin:0 auto}.wpforms-admin-empty-state-container.wpforms-admin-no-forms p:first-of-type{font-weight:bold}.wpforms-admin-empty-state-container.wpforms-admin-no-forms .wpforms-btn,.wpforms-admin-empty-state-container.wpforms-admin-no-forms .wpforms-btn:active{border:none;border-radius:3px;font-family:inherit;font-weight:bold;font-size:16px;line-height:24px;text-align:center;color:#FFFFFF;padding:15px 30px;margin:0;text-decoration:none}.wpforms-admin-empty-state-container.wpforms-admin-no-forms .wpforms-btn:hover,.wpforms-admin-empty-state-container.wpforms-admin-no-forms .wpforms-btn:active:hover{text-decoration:none}.wpforms-admin-empty-state-container.wpforms-admin-no-forms .wpforms-btn:focus,.wpforms-admin-empty-state-container.wpforms-admin-no-forms .wpforms-btn:active:focus{outline:none}.wpforms-admin-empty-state-container.wpforms-admin-no-forms .wpforms-admin-no-forms-footer{margin-top:30px;font-size:14px;line-height:16px}.wpforms-admin-empty-state-container.wpforms-elementor-no-forms{background:rgba(255,255,255,0.5);border:1px solid #71D7F7;box-sizing:border-box;padding:20px}.wpforms-admin-empty-state-container.wpforms-elementor-no-forms img{max-width:240px;width:100%;margin:0 auto}.wpforms-admin-empty-state-container.wpforms-elementor-no-forms p{font-family:inherit;font-weight:normal;font-size:14px;line-height:18px;text-align:center;color:#495157;max-width:450px;margin:20px auto 0}.wpforms-admin-empty-state-container.wpforms-elementor-no-forms a{color:inherit;text-decoration:underline}.wpforms-admin-empty-state-container.wpforms-elementor-no-forms a:hover{color:#D30C5C;text-decoration:underline}.wpforms-admin-empty-state-container.wpforms-elementor-no-forms .wpforms-btn{background:#D30C5C;border:none;border-radius:3px;font-family:inherit;font-weight:500;font-size:12px;line-height:18px;text-align:center;text-transform:uppercase;color:#FFFFFF;padding:7px 17px;margin:20px 0 0;text-decoration:none}.wpforms-admin-empty-state-container.wpforms-elementor-no-forms .wpforms-btn:hover{text-decoration:none;background:#fd1e7a}.wpforms-admin-empty-state-container.wpforms-elementor-no-forms .wpforms-btn:focus{outline:none}.wpforms-admin-empty-state-container.wpforms-elementor-no-forms .wpforms-admin-no-forms-footer{font-size:12px;line-height:18px;color:#6D7882}.wpforms-admin-empty-state-container.wpforms-admin-no-entries img{max-width:413px}#wpforms-builder-elementor-popup{position:fixed;width:100vw;height:100vh;padding:30px;z-index:10000;background:rgba(0,0,0,0.75)}#wpforms-builder-elementor-popup iframe{width:100%;height:100%;background-color:#ffffff}.wpforms-elementor-form-selector{background:rgba(255,255,255,0.5);border:1px solid #71D7F7;box-sizing:border-box;text-align:center;font-family:"Helvetica Neue", sans-serif;font-style:normal;padding:40px}.wpforms-elementor-form-selector img{width:220px;margin:0 auto 20px auto}.wpforms-elementor-form-selector .select-wrapper{position:relative;padding:0;width:100%;max-width:266px;margin:0 auto;line-height:0}.wpforms-elementor-form-selector .select-wrapper:after{font-family:eicons;content:"\e8ad";font-size:12px;position:absolute;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);right:5px;pointer-events:none;opacity:0.55}.wpforms-elementor-form-selector select{font-family:inherit;font-style:inherit;font-weight:normal;font-size:12px;line-height:12px;color:#6D7882;padding:0 20px 0 5px;width:100%;height:27px;text-overflow:ellipsis;margin:0;background:#FFFFFF;border:1px solid #D5DADF;box-sizing:border-box;border-radius:3px;cursor:pointer;appearance:none;-webkit-appearance:none}.wpforms-elementor-form-selector select:focus{outline:none}@font-face{font-family:'Icon WPForms';src:url("../images/integrations/elementor/font/icon-wpforms.eot");src:url("../images/integrations/elementor/font/icon-wpforms.eot#iefix") format("embedded-opentype"),url("../images/integrations/elementor/font/icon-wpforms.woff2") format("woff2"),url("../images/integrations/elementor/font/icon-wpforms.woff") format("woff"),url("../images/integrations/elementor/font/icon-wpforms.ttf") format("truetype"),url("../images/integrations/elementor/font/icon-wpforms.svg") format("svg")}#elementor-editor-wrapper .icon-wpforms,.elementor-edit-area .icon-wpforms{display:inline-block;width:28px}#elementor-editor-wrapper .icon-wpforms:before,.elementor-edit-area .icon-wpforms:before{content:'\e800';font-family:"Icon WPForms";font-style:normal;font-weight:normal;speak:never}#elementor-editor-wrapper .elementor-widget-empty-icon.icon-wpforms,.elementor-edit-area .elementor-widget-empty-icon.icon-wpforms{width:22px;line-height:22px;padding:0;font-size:22px;text-align:center}#elementor-editor-wrapper .elementor-navigator__item .icon-wpforms,.elementor-edit-area .elementor-navigator__item .icon-wpforms{width:11px;height:11px}#elementor-editor-wrapper .elementor-control.elementor-control-edit_form,.elementor-edit-area .elementor-control.elementor-control-edit_form{padding:0 20px 10px 20px;font-style:italic;font-weight:normal;font-size:11px;line-height:13px;color:#A4AFB7}#elementor-editor-wrapper .elementor-control.elementor-control-edit_form a,.elementor-edit-area .elementor-control.elementor-control-edit_form a{cursor:pointer}#elementor-editor-wrapper .elementor-control.elementor-control-test_form_notice a,.elementor-edit-area .elementor-control.elementor-control-test_form_notice a{color:#6d7882;border-bottom-color:#6d7882}#elementor-editor-wrapper .elementor-control.elementor-control-test_form_notice a:hover,.elementor-edit-area .elementor-control.elementor-control-test_form_notice a:hover{color:#d30c5c;border-bottom-color:#d30c5c}#elementor-editor-wrapper .elementor-control.elementor-control-add_form_btn .elementor-button,.elementor-edit-area .elementor-control.elementor-control-add_form_btn .elementor-button{padding:7px 16px}#elementor-editor-wrapper .elementor-control.elementor-control-add_form_btn .elementor-button b,.elementor-edit-area .elementor-control.elementor-control-add_form_btn .elementor-button b{margin:0 10px 0 0;font-size:13px;font-weight:400;line-height:12px}#elementor-editor-wrapper .elementor-control.elementor-control-add_form_btn.elementor-label-inline>.elementor-control-content>.elementor-control-field>.elementor-control-input-wrapper,.elementor-edit-area .elementor-control.elementor-control-add_form_btn.elementor-label-inline>.elementor-control-content>.elementor-control-field>.elementor-control-input-wrapper{margin-right:auto}.wpforms-divi-form-placeholder,.et-db #et-boc .et-l .wpforms-divi-form-placeholder{padding:25px 15px;text-align:center;display:flex;flex-wrap:wrap;justify-content:center}.wpforms-divi-form-placeholder img,.et-db #et-boc .et-l .wpforms-divi-form-placeholder img{height:100px;width:auto;margin-right:15px;display:block}.wpforms-divi-form-placeholder h3,.et-db #et-boc .et-l .wpforms-divi-form-placeholder h3{width:100%;margin:10px 0 0;font-weight:700;font-family:-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen-Sans, Ubuntu, Cantarell, Helvetica Neue, sans-serif;font-size:20px;line-height:28px;text-align:center;padding:0;letter-spacing:0;text-transform:none}.wpforms-divi-form-preview.loading,.et-db #et-boc .et-l .wpforms-divi-form-preview.loading{opacity:.7}.et-db #et-boc .et-l .et-fb-modules-list ul>li.wpforms_selector::before{content:'';background-image:url("../images/integrations/divi/wpforms-icon.svg");height:16px;font-variant:normal;background-position:center center;background-repeat:no-repeat}.edit-post-visual-editor .wpforms-gutenberg-form-selector-wrap{align-items:center}.edit-post-visual-editor .wpforms-gutenberg-form-selector-wrap h3{width:100%;margin:10px 0 5px;font-weight:700;font-size:20px;text-align:center}.edit-post-visual-editor .wpforms-gutenberg-form-selector-wrap img{margin-right:15px;height:100px;width:auto}.edit-post-visual-editor .wpforms-gutenberg-form-selector-wrap .components-base-control{width:100%}.edit-post-visual-editor .wpforms-gutenberg-form-selector-wrap .components-placeholder__fieldset{justify-content:center;align-self:center;max-width:400px;flex-direction:row !important}.edit-post-visual-editor .wpforms-gutenberg-form-selector-wrap .components-select-control__input{padding:0 10px;height:auto}div.wpforms-gutenberg-form-selector .wpforms-form input:disabled,div.wpforms-gutenberg-form-selector .wpforms-form textarea:disabled,div.wpforms-gutenberg-form-selector .wpforms-form select:disabled{background-color:#fff;border-color:#ccc;color:#333;cursor:not-allowed}div.wpforms-gutenberg-form-selector .wpforms-form button[type=submit]:disabled{cursor:not-allowed}div.components-panel__body .wpforms-gutenberg-panel-notice{background-color:#d9edf7;border:1px solid #bce8f1;color:#31708f;padding:10px}
1
+ .wpforms-admin-empty-state-container{text-align:center;font-family:"Helvetica Neue", sans-serif;font-style:normal;padding:30px}.wpforms-admin-empty-state-container .waving-hand-emoji{display:inline-block;background-image:url(../images/empty-states/waving-hand-emoji.png);background-repeat:no-repeat;background-size:24px 24px;background-position:0 0;padding-left:34px}.wpforms-admin-empty-state-container h2{font-family:inherit;font-weight:bold;font-size:24px;color:#444444;line-height:29px;margin:0 0 10px}.wpforms-admin-empty-state-container img{max-width:428px;width:100%;margin:30px auto}.wpforms-admin-empty-state-container p{font-family:inherit;font-weight:normal;font-size:16px;line-height:24px;text-align:center;color:#777777;margin:0 auto}.wpforms-admin-empty-state-container.wpforms-admin-no-forms p:first-of-type{font-weight:bold}.wpforms-admin-empty-state-container.wpforms-admin-no-forms .wpforms-btn,.wpforms-admin-empty-state-container.wpforms-admin-no-forms .wpforms-btn:active{border:none;border-radius:3px;font-family:inherit;font-weight:bold;font-size:16px;line-height:24px;text-align:center;color:#FFFFFF;padding:15px 30px;margin:0;text-decoration:none}.wpforms-admin-empty-state-container.wpforms-admin-no-forms .wpforms-btn:hover,.wpforms-admin-empty-state-container.wpforms-admin-no-forms .wpforms-btn:active:hover{text-decoration:none}.wpforms-admin-empty-state-container.wpforms-admin-no-forms .wpforms-btn:focus,.wpforms-admin-empty-state-container.wpforms-admin-no-forms .wpforms-btn:active:focus{outline:none}.wpforms-admin-empty-state-container.wpforms-admin-no-forms .wpforms-admin-no-forms-footer{margin-top:30px;font-size:14px;line-height:16px}.wpforms-admin-empty-state-container.wpforms-elementor-no-forms{background:rgba(255,255,255,0.5);border:1px solid #71D7F7;box-sizing:border-box;padding:20px}.wpforms-admin-empty-state-container.wpforms-elementor-no-forms img{max-width:240px;width:100%;margin:0 auto}.wpforms-admin-empty-state-container.wpforms-elementor-no-forms p{font-family:inherit;font-weight:normal;font-size:14px;line-height:18px;text-align:center;color:#495157;max-width:450px;margin:20px auto 0}.wpforms-admin-empty-state-container.wpforms-elementor-no-forms a{color:inherit;text-decoration:underline}.wpforms-admin-empty-state-container.wpforms-elementor-no-forms a:hover{color:#D30C5C;text-decoration:underline}.wpforms-admin-empty-state-container.wpforms-elementor-no-forms .wpforms-btn{background:#D30C5C;border:none;border-radius:3px;font-family:inherit;font-weight:500;font-size:12px;line-height:18px;text-align:center;text-transform:uppercase;color:#FFFFFF;padding:7px 17px;margin:20px 0 0;text-decoration:none}.wpforms-admin-empty-state-container.wpforms-elementor-no-forms .wpforms-btn:hover{text-decoration:none;background:#fd1e7a}.wpforms-admin-empty-state-container.wpforms-elementor-no-forms .wpforms-btn:focus{outline:none}.wpforms-admin-empty-state-container.wpforms-elementor-no-forms .wpforms-admin-no-forms-footer{font-size:12px;line-height:18px;color:#6D7882}.wpforms-admin-empty-state-container.wpforms-admin-no-entries img{max-width:413px}#wpforms-builder-elementor-popup{position:fixed;width:100vw;height:100vh;padding:30px;z-index:10000;background:rgba(0,0,0,0.75);left:0;top:0}#wpforms-builder-elementor-popup iframe{width:100%;height:100%;background-color:#ffffff}.wpforms-elementor-form-selector{background:rgba(255,255,255,0.5);border:1px solid #71D7F7;box-sizing:border-box;text-align:center;font-family:"Helvetica Neue", sans-serif;font-style:normal;padding:40px}.wpforms-elementor-form-selector img{width:220px;margin:0 auto 20px auto}.wpforms-elementor-form-selector .select-wrapper{position:relative;padding:0;width:100%;max-width:266px;margin:0 auto;line-height:0}.wpforms-elementor-form-selector .select-wrapper:after{font-family:eicons;content:"\e8ad";font-size:12px;position:absolute;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);right:5px;pointer-events:none;opacity:0.55}.wpforms-elementor-form-selector select{font-family:inherit;font-style:inherit;font-weight:normal;font-size:12px;line-height:12px;color:#6D7882;padding:0 20px 0 5px;width:100%;height:27px;text-overflow:ellipsis;margin:0;background:#FFFFFF;border:1px solid #D5DADF;box-sizing:border-box;border-radius:3px;cursor:pointer;appearance:none;-webkit-appearance:none}.wpforms-elementor-form-selector select:focus{outline:none}@font-face{font-family:'Icon WPForms';src:url("../images/integrations/elementor/font/icon-wpforms.eot");src:url("../images/integrations/elementor/font/icon-wpforms.eot#iefix") format("embedded-opentype"),url("../images/integrations/elementor/font/icon-wpforms.woff2") format("woff2"),url("../images/integrations/elementor/font/icon-wpforms.woff") format("woff"),url("../images/integrations/elementor/font/icon-wpforms.ttf") format("truetype"),url("../images/integrations/elementor/font/icon-wpforms.svg") format("svg")}#elementor-editor-wrapper .icon-wpforms,.elementor-edit-area .icon-wpforms{display:inline-block;width:28px}#elementor-editor-wrapper .icon-wpforms:before,.elementor-edit-area .icon-wpforms:before{content:'\e800';font-family:"Icon WPForms";font-style:normal;font-weight:normal;speak:never}#elementor-editor-wrapper .elementor-widget-empty-icon.icon-wpforms,.elementor-edit-area .elementor-widget-empty-icon.icon-wpforms{width:22px;line-height:22px;padding:0;font-size:22px;text-align:center}#elementor-editor-wrapper .elementor-navigator__item .icon-wpforms,.elementor-edit-area .elementor-navigator__item .icon-wpforms{width:11px;height:11px}#elementor-editor-wrapper .elementor-control.elementor-control-edit_form,.elementor-edit-area .elementor-control.elementor-control-edit_form{padding:0 20px 10px 20px;font-style:italic;font-weight:normal;font-size:11px;line-height:13px;color:#A4AFB7}#elementor-editor-wrapper .elementor-control.elementor-control-edit_form a,.elementor-edit-area .elementor-control.elementor-control-edit_form a{cursor:pointer}#elementor-editor-wrapper .elementor-control.elementor-control-test_form_notice a,.elementor-edit-area .elementor-control.elementor-control-test_form_notice a{color:#6d7882;border-bottom-color:#6d7882}#elementor-editor-wrapper .elementor-control.elementor-control-test_form_notice a:hover,.elementor-edit-area .elementor-control.elementor-control-test_form_notice a:hover{color:#d30c5c;border-bottom-color:#d30c5c}#elementor-editor-wrapper .elementor-control.elementor-control-add_form_btn .elementor-button,.elementor-edit-area .elementor-control.elementor-control-add_form_btn .elementor-button{padding:7px 16px}#elementor-editor-wrapper .elementor-control.elementor-control-add_form_btn .elementor-button b,.elementor-edit-area .elementor-control.elementor-control-add_form_btn .elementor-button b{margin:0 10px 0 0;font-size:13px;font-weight:400;line-height:12px}#elementor-editor-wrapper .elementor-control.elementor-control-add_form_btn.elementor-label-inline>.elementor-control-content>.elementor-control-field>.elementor-control-input-wrapper,.elementor-edit-area .elementor-control.elementor-control-add_form_btn.elementor-label-inline>.elementor-control-content>.elementor-control-field>.elementor-control-input-wrapper{margin-right:auto}.wpforms-divi-form-placeholder,.et-db #et-boc .et-l .wpforms-divi-form-placeholder{padding:25px 15px;text-align:center;display:flex;flex-wrap:wrap;justify-content:center}.wpforms-divi-form-placeholder img,.et-db #et-boc .et-l .wpforms-divi-form-placeholder img{height:100px;width:auto;margin-right:15px;display:block}.wpforms-divi-form-placeholder h3,.et-db #et-boc .et-l .wpforms-divi-form-placeholder h3{width:100%;margin:10px 0 0;font-weight:700;font-family:-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen-Sans, Ubuntu, Cantarell, Helvetica Neue, sans-serif;font-size:20px;line-height:28px;text-align:center;padding:0;letter-spacing:0;text-transform:none}.wpforms-divi-form-preview.loading,.et-db #et-boc .et-l .wpforms-divi-form-preview.loading{opacity:.7}.et-db #et-boc .et-l .et-fb-modules-list ul>li.wpforms_selector::before{content:'';background-image:url("../images/integrations/divi/wpforms-icon.svg");height:16px;font-variant:normal;background-position:center center;background-repeat:no-repeat}.edit-post-visual-editor .wpforms-gutenberg-form-selector-wrap{align-items:center}.edit-post-visual-editor .wpforms-gutenberg-form-selector-wrap h3{width:100%;margin:10px 0 5px;font-weight:700;font-size:20px;text-align:center}.edit-post-visual-editor .wpforms-gutenberg-form-selector-wrap img{margin-right:15px;height:100px;width:auto}.edit-post-visual-editor .wpforms-gutenberg-form-selector-wrap .components-base-control{width:100%}.edit-post-visual-editor .wpforms-gutenberg-form-selector-wrap .components-placeholder__fieldset{justify-content:center;align-self:center;max-width:400px;flex-direction:row !important}.edit-post-visual-editor .wpforms-gutenberg-form-selector-wrap .components-select-control__input{padding:0 10px;height:auto}div.wpforms-gutenberg-form-selector .wpforms-form input:disabled,div.wpforms-gutenberg-form-selector .wpforms-form textarea:disabled,div.wpforms-gutenberg-form-selector .wpforms-form select:disabled{background-color:#fff;border-color:#ccc;color:#333;cursor:not-allowed}div.wpforms-gutenberg-form-selector .wpforms-form button[type=submit]:disabled{cursor:not-allowed}div.components-panel__body .wpforms-gutenberg-panel-notice{background-color:#d9edf7;border:1px solid #bce8f1;color:#31708f;padding:10px}
assets/js/admin-builder.js CHANGED
@@ -5004,7 +5004,7 @@ var WPFormsBuilder = window.WPFormsBuilder || ( function( document, window, $ )
5004
 
5005
  // Don't allow users to enable payments if storing entries has
5006
  // been disabled in the General settings.
5007
- $builder.on( 'change', '#wpforms-panel-field-stripe-enable, #wpforms-panel-field-paypal_standard-enable, #wpforms-panel-field-authorize_net-enable', function( event ) {
5008
 
5009
  var $this = $( this ),
5010
  gateway = $this.attr( 'id' ).replace( 'wpforms-panel-field-', '' ).replace( '-enable', '' ),
@@ -5045,7 +5045,7 @@ var WPFormsBuilder = window.WPFormsBuilder || ( function( document, window, $ )
5045
  var $this = $( this );
5046
  if ( $this.prop( 'checked' ) ) {
5047
 
5048
- var paymentsEnabled = $( '#wpforms-panel-field-stripe-enable' ).prop( 'checked' ) || $( '#wpforms-panel-field-paypal_standard-enable' ).prop( 'checked' ) || $( '#wpforms-panel-field-authorize_net-enable' ).prop( 'checked' );
5049
  if ( paymentsEnabled ) {
5050
  $.confirm( {
5051
  title: wpforms_builder.heads_up,
5004
 
5005
  // Don't allow users to enable payments if storing entries has
5006
  // been disabled in the General settings.
5007
+ $builder.on( 'change', '#wpforms-panel-field-stripe-enable, #wpforms-panel-field-paypal_standard-enable, #wpforms-panel-field-authorize_net-enable, #wpforms-panel-field-square-enable', function( event ) {
5008
 
5009
  var $this = $( this ),
5010
  gateway = $this.attr( 'id' ).replace( 'wpforms-panel-field-', '' ).replace( '-enable', '' ),
5045
  var $this = $( this );
5046
  if ( $this.prop( 'checked' ) ) {
5047
 
5048
+ var paymentsEnabled = $( '#wpforms-panel-field-stripe-enable' ).prop( 'checked' ) || $( '#wpforms-panel-field-paypal_standard-enable' ).prop( 'checked' ) || $( '#wpforms-panel-field-authorize_net-enable' ).prop( 'checked' ) || $( '#wpforms-panel-field-square-enable' ).prop( 'checked' );
5049
  if ( paymentsEnabled ) {
5050
  $.confirm( {
5051
  title: wpforms_builder.heads_up,
assets/js/admin-utils.js CHANGED
@@ -633,6 +633,10 @@ var wpf = {
633
  */
634
  initTooltips: function() {
635
 
 
 
 
 
636
  jQuery( '.wpforms-help-tooltip' ).tooltipster( {
637
  contentAsHTML: true,
638
  position: 'right',
633
  */
634
  initTooltips: function() {
635
 
636
+ if ( typeof jQuery.fn.tooltipster === 'undefined' ) {
637
+ return;
638
+ }
639
+
640
  jQuery( '.wpforms-help-tooltip' ).tooltipster( {
641
  contentAsHTML: true,
642
  position: 'right',
assets/js/components/admin/notices.js ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* global wpforms_admin_notices */
2
+
3
+ /**
4
+ * WPForms Dismissible Notices.
5
+ *
6
+ * @since 1.6.7.1
7
+ */
8
+
9
+ 'use strict';
10
+
11
+ var WPFormsAdminNotices = window.WPFormsAdminNotices || ( function( document, window, $ ) {
12
+
13
+ /**
14
+ * Public functions and properties.
15
+ *
16
+ * @since 1.6.7.1
17
+ *
18
+ * @type {object}
19
+ */
20
+ var app = {
21
+
22
+ /**
23
+ * Start the engine.
24
+ *
25
+ * @since 1.6.7.1
26
+ */
27
+ init: function() {
28
+
29
+ $( app.ready );
30
+ },
31
+
32
+ /**
33
+ * Document ready.
34
+ *
35
+ * @since 1.6.7.1
36
+ */
37
+ ready: function() {
38
+
39
+ app.events();
40
+ },
41
+
42
+ /**
43
+ * Dismissible notices events.
44
+ *
45
+ * @since 1.6.7.1
46
+ */
47
+ events: function() {
48
+
49
+ $( document ).on(
50
+ 'click',
51
+ '.wpforms-notice .notice-dismiss, .wpforms-notice .wpforms-notice-dismiss',
52
+ app.dismissNotice
53
+ );
54
+ },
55
+
56
+ /**
57
+ * Dismiss notice event handler.
58
+ *
59
+ * @since 1.6.7.1
60
+ *
61
+ * @param {object} e Event object.
62
+ * */
63
+ dismissNotice: function( e ) {
64
+
65
+ $.post( wpforms_admin_notices.ajax_url, {
66
+ action: 'wpforms_notice_dismiss',
67
+ nonce: wpforms_admin_notices.nonce,
68
+ id: ( $( this ).closest( '.wpforms-notice' ).attr( 'id' ) || '' ).replace( 'wpforms-notice-', '' ),
69
+ } );
70
+ },
71
+ };
72
+
73
+ return app;
74
+
75
+ }( document, window, jQuery ) );
76
+
77
+ // Initialize.
78
+ WPFormsAdminNotices.init();
assets/js/components/admin/notices.min.js ADDED
@@ -0,0 +1 @@
 
1
+ "use strict";var WPFormsAdminNotices=window.WPFormsAdminNotices||function(i,o){var s={init:function(){o(s.ready)},ready:function(){s.events()},events:function(){o(i).on("click",".wpforms-notice .notice-dismiss, .wpforms-notice .wpforms-notice-dismiss",s.dismissNotice)},dismissNotice:function(i){o.post(wpforms_admin_notices.ajax_url,{action:"wpforms_notice_dismiss",nonce:wpforms_admin_notices.nonce,id:(o(this).closest(".wpforms-notice").attr("id")||"").replace("wpforms-notice-","")})}};return s}(document,(window,jQuery));WPFormsAdminNotices.init();
assets/js/integrations/divi/formselector.min.js CHANGED
@@ -1 +1 @@
1
- !function n(o,i,a){function u(r,e){if(!i[r]){if(!o[r]){var t="function"==typeof require&&require;if(!e&&t)return t(r,!0);if(c)return c(r,!0);throw new Error("Cannot find module '"+r+"'")}t=i[r]={exports:{}};o[r][0].call(t.exports,function(e){var t=o[r][1][e];return u(t||e)},t,t.exports,n,o,i,a)}return i[r].exports}for(var c="function"==typeof require&&require,e=0;e<a.length;e++)u(a[e]);return u}({1:[function(e,t,r){"use strict";var c=Object.getOwnPropertySymbols,s=Object.prototype.hasOwnProperty,f=Object.prototype.propertyIsEnumerable;t.exports=function(){try{if(!Object.assign)return;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return;for(var t={},r=0;r<10;r++)t["_"+String.fromCharCode(r)]=r;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return;var n={};return"abcdefghijklmnopqrst".split("").forEach(function(e){n[e]=e}),"abcdefghijklmnopqrst"!==Object.keys(Object.assign({},n)).join("")?void 0:1}catch(e){return}}()?Object.assign:function(e,t){for(var r,n=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),o=1;o<arguments.length;o++){for(var i in r=Object(arguments[o]))s.call(r,i)&&(n[i]=r[i]);if(c)for(var a=c(r),u=0;u<a.length;u++)f.call(r,a[u])&&(n[a[u]]=r[a[u]])}return n}},{}],2:[function(e,t,r){t=t.exports={};function n(){}t.nextTick=function(){var e="undefined"!=typeof window&&window.setImmediate,t="undefined"!=typeof window&&window.postMessage&&window.addEventListener;if(e)return function(e){return window.setImmediate(e)};if(t){var r=[];return window.addEventListener("message",function(e){var t=e.source;t!==window&&null!==t||"process-tick"!==e.data||(e.stopPropagation(),0<r.length&&r.shift()())},!0),function(e){r.push(e),window.postMessage("process-tick","*")}}return function(e){setTimeout(e,0)}}(),t.title="browser",t.browser=!0,t.env={},t.argv=[],t.on=n,t.addListener=n,t.once=n,t.off=n,t.removeListener=n,t.removeAllListeners=n,t.emit=n,t.binding=function(e){throw new Error("process.binding is not supported")},t.cwd=function(){return"/"},t.chdir=function(e){throw new Error("process.chdir is not supported")}},{}],3:[function(t,r,e){!function(c){"use strict";var s,f,l,p=function(){};function e(e,t,r,n,o){if("production"!==c.env.NODE_ENV)for(var i in e)if(l(e,i)){var a;try{if("function"!=typeof e[i]){var u=Error((n||"React class")+": "+r+" type `"+i+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof e[i]+"`.");throw u.name="Invariant Violation",u}a=e[i](t,i,n,r,null,s)}catch(e){a=e}!a||a instanceof Error||p((n||"React class")+": type specification of "+r+" `"+i+"` is invalid; the type checker function must return `null` or an `Error` but returned a "+typeof a+". You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument)."),a instanceof Error&&!(a.message in f)&&(f[a.message]=!0,i=o?o():"",p("Failed "+r+" type: "+a.message+(null!=i?i:"")))}}"production"!==c.env.NODE_ENV&&(s=t("./lib/ReactPropTypesSecret"),f={},l=Function.call.bind(Object.prototype.hasOwnProperty),p=function(e){e="Warning: "+e;"undefined"!=typeof console&&console.error(e);try{throw new Error(e)}catch(e){}}),e.resetWarningCache=function(){"production"!==c.env.NODE_ENV&&(f={})},r.exports=e}.call(this,t("Xp6JUx"))},{"./lib/ReactPropTypesSecret":7,Xp6JUx:2}],4:[function(e,t,r){"use strict";var a=e("./lib/ReactPropTypesSecret");function n(){}function o(){}o.resetWarningCache=n,t.exports=function(){function e(e,t,r,n,o,i){if(i!==a){i=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw i.name="Invariant Violation",i}}function t(){return e}var r={array:e.isRequired=e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:n};return r.PropTypes=r}},{"./lib/ReactPropTypesSecret":7}],5:[function(e,t,r){!function(d){"use strict";var m=e("react-is"),h=e("object-assign"),b=e("./lib/ReactPropTypesSecret"),n=e("./checkPropTypes"),v=Function.call.bind(Object.prototype.hasOwnProperty),g=function(){};function o(){return null}"production"!==d.env.NODE_ENV&&(g=function(e){e="Warning: "+e;"undefined"!=typeof console&&console.error(e);try{throw new Error(e)}catch(e){}}),t.exports=function(i,l){var a="function"==typeof Symbol&&Symbol.iterator,u="@@iterator";var p="<<anonymous>>",e={array:t("array"),bool:t("boolean"),func:t("function"),number:t("number"),object:t("object"),string:t("string"),symbol:t("symbol"),any:r(o),arrayOf:function(c){return r(function(e,t,r,n,o){if("function"!=typeof c)return new y("Property `"+o+"` of component `"+r+"` has invalid PropType notation inside arrayOf.");var i=e[t];if(!Array.isArray(i))return new y("Invalid "+n+" `"+o+"` of type `"+f(i)+"` supplied to `"+r+"`, expected an array.");for(var a=0;a<i.length;a++){var u=c(i,a,r,n,o+"["+a+"]",b);if(u instanceof Error)return u}return null})},element:r(function(e,t,r,n,o){return t=e[t],i(t)?null:new y("Invalid "+n+" `"+o+"` of type `"+f(t)+"` supplied to `"+r+"`, expected a single ReactElement.")}),elementType:r(function(e,t,r,n,o){return t=e[t],m.isValidElementType(t)?null:new y("Invalid "+n+" `"+o+"` of type `"+f(t)+"` supplied to `"+r+"`, expected a single ReactElement type.")}),instanceOf:function(a){return r(function(e,t,r,n,o){if(e[t]instanceof a)return null;var i=a.name||p;return new y("Invalid "+n+" `"+o+"` of type `"+((t=e[t]).constructor&&t.constructor.name?t.constructor.name:p)+"` supplied to `"+r+"`, expected instance of `"+i+"`.")})},node:r(function(e,t,r,n,o){return c(e[t])?null:new y("Invalid "+n+" `"+o+"` supplied to `"+r+"`, expected a ReactNode.")}),objectOf:function(c){return r(function(e,t,r,n,o){if("function"!=typeof c)return new y("Property `"+o+"` of component `"+r+"` has invalid PropType notation inside objectOf.");var i,a=e[t];if("object"!==(t=f(a)))return new y("Invalid "+n+" `"+o+"` of type `"+t+"` supplied to `"+r+"`, expected an object.");for(i in a)if(v(a,i)){var u=c(a,i,r,n,o+"."+i,b);if(u instanceof Error)return u}return null})},oneOf:function(u){if(Array.isArray(u))return r(function(e,t,r,n,o){for(var i=e[t],a=0;a<u.length;a++)if(function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}(i,u[a]))return null;t=JSON.stringify(u,function(e,t){return"symbol"===s(t)?String(t):t});return new y("Invalid "+n+" `"+o+"` of value `"+String(i)+"` supplied to `"+r+"`, expected one of "+t+".")});"production"!==d.env.NODE_ENV&&g(1<arguments.length?"Invalid arguments supplied to oneOf, expected an array, got "+arguments.length+" arguments. A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).":"Invalid argument supplied to oneOf, expected an array.");return o},oneOfType:function(a){if(!Array.isArray(a))return"production"!==d.env.NODE_ENV&&g("Invalid argument supplied to oneOfType, expected an instance of array."),o;for(var e=0;e<a.length;e++){var t=a[e];if("function"!=typeof t)return g("Invalid argument supplied to oneOfType. Expected an array of check functions, but received "+function(e){var t=s(e);switch(t){case"array":case"object":return"an "+t;case"boolean":case"date":case"regexp":return"a "+t;default:return t}}(t)+" at index "+e+"."),o}return r(function(e,t,r,n,o){for(var i=0;i<a.length;i++)if(null==(0,a[i])(e,t,r,n,o,b))return null;return new y("Invalid "+n+" `"+o+"` supplied to `"+r+"`.")})},shape:function(c){return r(function(e,t,r,n,o){var i,a=e[t];if("object"!==(t=f(a)))return new y("Invalid "+n+" `"+o+"` of type `"+t+"` supplied to `"+r+"`, expected `object`.");for(i in c){var u=c[i];if(u){u=u(a,i,r,n,o+"."+i,b);if(u)return u}}return null})},exact:function(s){return r(function(e,t,r,n,o){var i,a=e[t],u=f(a);if("object"!==u)return new y("Invalid "+n+" `"+o+"` of type `"+u+"` supplied to `"+r+"`, expected `object`.");for(i in h({},e[t],s)){var c=s[i];if(!c)return new y("Invalid "+n+" `"+o+"` key `"+i+"` supplied to `"+r+"`.\nBad object: "+JSON.stringify(e[t],null," ")+"\nValid keys: "+JSON.stringify(Object.keys(s),null," "));c=c(a,i,r,n,o+"."+i,b);if(c)return c}return null})}};function y(e){this.message=e,this.stack=""}function r(c){var s,f;function e(e,t,r,n,o,i,a){if(n=n||p,i=i||r,a!==b){if(l){var u=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types");throw u.name="Invariant Violation",u}"production"===d.env.NODE_ENV||"undefined"==typeof console||!s[u=n+":"+r]&&f<3&&(g("You are manually calling a React.PropTypes validation function for the `"+i+"` prop on `"+n+"`. This is deprecated and will throw in the standalone `prop-types` package. You may be seeing this warning due to a third-party PropTypes library. See https://fb.me/react-warning-dont-call-proptypes for details."),s[u]=!0,f++)}return null==t[r]?e?null===t[r]?new y("The "+o+" `"+i+"` is marked as required in `"+n+"`, but its value is `null`."):new y("The "+o+" `"+i+"` is marked as required in `"+n+"`, but its value is `undefined`."):null:c(t,r,n,o,i)}"production"!==d.env.NODE_ENV&&(s={},f=0);var t=e.bind(null,!1);return t.isRequired=e.bind(null,!0),t}function t(a){return r(function(e,t,r,n,o,i){return f(t=e[t])===a?null:new y("Invalid "+n+" `"+o+"` of type `"+s(t)+"` supplied to `"+r+"`, expected `"+a+"`.")})}function c(e){switch(typeof e){case"number":case"string":case"undefined":return!0;case"boolean":return!e;case"object":if(Array.isArray(e))return e.every(c);if(null===e||i(e))return!0;var t=function(e){if("function"==typeof(e=e&&(a&&e[a]||e[u])))return e}(e);if(!t)return!1;var r,n=t.call(e);if(t!==e.entries){for(;!(r=n.next()).done;)if(!c(r.value))return!1}else for(;!(r=n.next()).done;){var o=r.value;if(o&&!c(o[1]))return!1}return!0;default:return!1}}function f(e){var t=typeof e;return Array.isArray(e)?"array":e instanceof RegExp?"object":(e=e,"symbol"===t||e&&("Symbol"===e["@@toStringTag"]||"function"==typeof Symbol&&e instanceof Symbol)?"symbol":t)}function s(e){if(null==e)return""+e;var t=f(e);if("object"===t){if(e instanceof Date)return"date";if(e instanceof RegExp)return"regexp"}return t}return y.prototype=Error.prototype,e.checkPropTypes=n,e.resetWarningCache=n.resetWarningCache,e.PropTypes=e}}.call(this,e("Xp6JUx"))},{"./checkPropTypes":3,"./lib/ReactPropTypesSecret":7,Xp6JUx:2,"object-assign":1,"react-is":10}],6:[function(t,r,e){!function(e){"production"!==e.env.NODE_ENV?(e=t("react-is"),r.exports=t("./factoryWithTypeCheckers")(e.isElement,!0)):r.exports=t("./factoryWithThrowingShims")()}.call(this,t("Xp6JUx"))},{"./factoryWithThrowingShims":4,"./factoryWithTypeCheckers":5,Xp6JUx:2,"react-is":10}],7:[function(e,t,r){"use strict";t.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},{}],8:[function(e,t,I){!function(e){"use strict";function t(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case o:var r=e.type;switch(r){case l:case p:case a:case c:case u:case d:return r;default:var n=r&&r.$$typeof;switch(n){case f:case y:case b:case h:case s:return n;default:return t}}case i:return t}}}function r(e){return t(e)===p}var n,o,i,a,u,c,s,f,l,p,y,d,m,h,b,v,g,w,_,S,j,O,x,P,k,C,$,R,E,T;"production"!==e.env.NODE_ENV&&(n="function"==typeof Symbol&&Symbol.for,o=n?Symbol.for("react.element"):60103,i=n?Symbol.for("react.portal"):60106,a=n?Symbol.for("react.fragment"):60107,u=n?Symbol.for("react.strict_mode"):60108,c=n?Symbol.for("react.profiler"):60114,s=n?Symbol.for("react.provider"):60109,f=n?Symbol.for("react.context"):60110,l=n?Symbol.for("react.async_mode"):60111,p=n?Symbol.for("react.concurrent_mode"):60111,y=n?Symbol.for("react.forward_ref"):60112,d=n?Symbol.for("react.suspense"):60113,m=n?Symbol.for("react.suspense_list"):60120,h=n?Symbol.for("react.memo"):60115,b=n?Symbol.for("react.lazy"):60116,v=n?Symbol.for("react.block"):60121,g=n?Symbol.for("react.fundamental"):60117,w=n?Symbol.for("react.responder"):60118,_=n?Symbol.for("react.scope"):60119,S=p,j=f,O=s,x=o,P=y,k=a,C=b,$=h,R=i,E=c,e=u,n=d,T=!1,I.AsyncMode=l,I.ConcurrentMode=S,I.ContextConsumer=j,I.ContextProvider=O,I.Element=x,I.ForwardRef=P,I.Fragment=k,I.Lazy=C,I.Memo=$,I.Portal=R,I.Profiler=E,I.StrictMode=e,I.Suspense=n,I.isAsyncMode=function(e){return T||(T=!0,console.warn("The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 17+. Update your code to use ReactIs.isConcurrentMode() instead. It has the exact same API.")),r(e)||t(e)===l},I.isConcurrentMode=r,I.isContextConsumer=function(e){return t(e)===f},I.isContextProvider=function(e){return t(e)===s},I.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===o},I.isForwardRef=function(e){return t(e)===y},I.isFragment=function(e){return t(e)===a},I.isLazy=function(e){return t(e)===b},I.isMemo=function(e){return t(e)===h},I.isPortal=function(e){return t(e)===i},I.isProfiler=function(e){return t(e)===c},I.isStrictMode=function(e){return t(e)===u},I.isSuspense=function(e){return t(e)===d},I.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===a||e===p||e===c||e===u||e===d||e===m||"object"==typeof e&&null!==e&&(e.$$typeof===b||e.$$typeof===h||e.$$typeof===s||e.$$typeof===f||e.$$typeof===y||e.$$typeof===g||e.$$typeof===w||e.$$typeof===_||e.$$typeof===v)},I.typeOf=t)}.call(this,e("Xp6JUx"))},{Xp6JUx:2}],9:[function(e,t,r){"use strict";var n="function"==typeof Symbol&&Symbol.for,o=n?Symbol.for("react.element"):60103,i=n?Symbol.for("react.portal"):60106,a=n?Symbol.for("react.fragment"):60107,u=n?Symbol.for("react.strict_mode"):60108,c=n?Symbol.for("react.profiler"):60114,s=n?Symbol.for("react.provider"):60109,f=n?Symbol.for("react.context"):60110,l=n?Symbol.for("react.async_mode"):60111,p=n?Symbol.for("react.concurrent_mode"):60111,y=n?Symbol.for("react.forward_ref"):60112,d=n?Symbol.for("react.suspense"):60113,m=n?Symbol.for("react.suspense_list"):60120,h=n?Symbol.for("react.memo"):60115,b=n?Symbol.for("react.lazy"):60116,v=n?Symbol.for("react.block"):60121,g=n?Symbol.for("react.fundamental"):60117,w=n?Symbol.for("react.responder"):60118,_=n?Symbol.for("react.scope"):60119;function S(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case o:switch(e=e.type){case l:case p:case a:case c:case u:case d:return e;default:switch(e=e&&e.$$typeof){case f:case y:case b:case h:case s:return e;default:return t}}case i:return t}}}function j(e){return S(e)===p}r.AsyncMode=l,r.ConcurrentMode=p,r.ContextConsumer=f,r.ContextProvider=s,r.Element=o,r.ForwardRef=y,r.Fragment=a,r.Lazy=b,r.Memo=h,r.Portal=i,r.Profiler=c,r.StrictMode=u,r.Suspense=d,r.isAsyncMode=function(e){return j(e)||S(e)===l},r.isConcurrentMode=j,r.isContextConsumer=function(e){return S(e)===f},r.isContextProvider=function(e){return S(e)===s},r.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===o},r.isForwardRef=function(e){return S(e)===y},r.isFragment=function(e){return S(e)===a},r.isLazy=function(e){return S(e)===b},r.isMemo=function(e){return S(e)===h},r.isPortal=function(e){return S(e)===i},r.isProfiler=function(e){return S(e)===c},r.isStrictMode=function(e){return S(e)===u},r.isSuspense=function(e){return S(e)===d},r.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===a||e===p||e===c||e===u||e===d||e===m||"object"==typeof e&&null!==e&&(e.$$typeof===b||e.$$typeof===h||e.$$typeof===s||e.$$typeof===f||e.$$typeof===y||e.$$typeof===g||e.$$typeof===w||e.$$typeof===_||e.$$typeof===v)},r.typeOf=S},{}],10:[function(t,r,e){!function(e){"use strict";"production"===e.env.NODE_ENV?r.exports=t("./cjs/react-is.production.min.js"):r.exports=t("./cjs/react-is.development.js")}.call(this,t("Xp6JUx"))},{"./cjs/react-is.development.js":8,"./cjs/react-is.production.min.js":9,Xp6JUx:2}],11:[function(ke,e,Ce){!function(e){"use strict";"production"!==e.env.NODE_ENV&&function(){var d=ke("object-assign"),o=ke("prop-types/checkPropTypes"),e="function"==typeof Symbol&&Symbol.for,m=e?Symbol.for("react.element"):60103,h=e?Symbol.for("react.portal"):60106,u=e?Symbol.for("react.fragment"):60107,i=e?Symbol.for("react.strict_mode"):60108,a=e?Symbol.for("react.profiler"):60114,c=e?Symbol.for("react.provider"):60109,s=e?Symbol.for("react.context"):60110,t=e?Symbol.for("react.concurrent_mode"):60111,f=e?Symbol.for("react.forward_ref"):60112,l=e?Symbol.for("react.suspense"):60113,p=e?Symbol.for("react.suspense_list"):60120,y=e?Symbol.for("react.memo"):60115,b=e?Symbol.for("react.lazy"):60116,v=e?Symbol.for("react.block"):60121,r=e?Symbol.for("react.fundamental"):60117,n=e?Symbol.for("react.responder"):60118,g=e?Symbol.for("react.scope"):60119,w="function"==typeof Symbol&&Symbol.iterator,_="@@iterator";function S(e){if(null===e||"object"!=typeof e)return null;e=w&&e[w]||e[_];return"function"==typeof e?e:null}var j={current:null},O={current:null},x=/^(.*)[\\\/]/;var P=1;function k(e){if(null==e)return null;if("number"==typeof e.tag&&I("Received an unexpected object in getComponentName(). This is likely a bug in React. Please file an issue."),"function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case u:return"Fragment";case h:return"Portal";case a:return"Profiler";case i:return"StrictMode";case l:return"Suspense";case p:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case s:return"Context.Consumer";case c:return"Context.Provider";case f:return r=(t=e).render,n="ForwardRef",r=r.displayName||r.name||"",t.displayName||(""!==r?n+"("+r+")":n);case y:return k(e.type);case v:return k(e.render);case b:n=(n=e)._status===P?n._result:null;if(n)return k(n)}var t,r,n;return null}var C={},$=null;function R(e){$=e}C.getCurrentStack=null,C.getStackAddendum=function(){var e,t,r,n,o,i="";$&&(n=k($.type),o=$._owner,i+=(e=n,t=$._source,r=o&&k(o.type),a="",t?(o=(n=t.fileName).replace(x,""),/^index\./.test(o)&&(!(n=n.match(x))||(n=n[1])&&(o=n.replace(x,"")+"/"+o)),a=" (at "+o+":"+t.lineNumber+")"):r&&(a=" (created by "+r+")"),"\n in "+(e||"Unknown")+a));var a=C.getCurrentStack;return a&&(i+=a()||""),i};var E={ReactCurrentDispatcher:j,ReactCurrentBatchConfig:{suspense:null},ReactCurrentOwner:O,IsSomeRendererActing:{current:!1},assign:d};function T(e){for(var t=arguments.length,r=new Array(1<t?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];N("warn",e,r)}function I(e){for(var t=arguments.length,r=new Array(1<t?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];N("error",e,r)}function N(e,t,r){0<r.length&&"string"==typeof r[r.length-1]&&0===r[r.length-1].indexOf("\n in")||""!==(n=E.ReactDebugCurrentFrame.getStackAddendum())&&(t+="%s",r=r.concat([n]));var n=r.map(function(e){return""+e});n.unshift("Warning: "+t),Function.prototype.apply.call(console[e],console,n);try{var o=0,i="Warning: "+t.replace(/%s/g,function(){return r[o++]});throw new Error(i)}catch(e){}}d(E,{ReactDebugCurrentFrame:C,ReactComponentTreeHook:{}});var A={};function D(e,t){var r=e.constructor,e=r&&(r.displayName||r.name)||"ReactClass",r=e+"."+t;A[r]||(I("Can't call %s on a component that is not yet mounted. This is a no-op, but it might indicate a bug in your application. Instead, assign to `this.state` directly or define a `state = {};` class property with the desired state in the %s component.",t,e),A[r]=!0)}var M={isMounted:function(e){return!1},enqueueForceUpdate:function(e,t,r){D(e,"forceUpdate")},enqueueReplaceState:function(e,t,r,n){D(e,"replaceState")},enqueueSetState:function(e,t,r,n){D(e,"setState")}},U={};function V(e,t,r){this.props=e,this.context=t,this.refs=U,this.updater=r||M}Object.freeze(U),V.prototype.isReactComponent={},V.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},V.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};var F,L={isMounted:["isMounted","Instead, make sure to clean up subscriptions and pending requests in componentWillUnmount to prevent memory leaks."],replaceState:["replaceState","Refactor your code to use setState instead (see https://github.com/facebook/react/issues/3236)."]};for(F in L)L.hasOwnProperty(F)&&function(e,t){Object.defineProperty(V.prototype,e,{get:function(){T("%s(...) is deprecated in plain JavaScript React classes. %s",t[0],t[1])}})}(F,L[F]);function q(){}function W(e,t,r){this.props=e,this.context=t,this.refs=U,this.updater=r||M}q.prototype=V.prototype;e=W.prototype=new q;e.constructor=W,d(e,V.prototype),e.isPureReactComponent=!0;var z,J,X=Object.prototype.hasOwnProperty,B={key:!0,ref:!0,__self:!0,__source:!0};function Y(e){if(X.call(e,"ref")){var t=Object.getOwnPropertyDescriptor(e,"ref").get;if(t&&t.isReactWarning)return}return void 0!==e.ref}function H(e){if(X.call(e,"key")){var t=Object.getOwnPropertyDescriptor(e,"key").get;if(t&&t.isReactWarning)return}return void 0!==e.key}var Q={},G=function(e,t,r,n,o,i,a){i={$$typeof:m,type:e,key:t,ref:r,props:a,_owner:i,_store:{}};return Object.defineProperty(i._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(i,"_self",{configurable:!1,enumerable:!1,writable:!1,value:n}),Object.defineProperty(i,"_source",{configurable:!1,enumerable:!1,writable:!1,value:o}),Object.freeze&&(Object.freeze(i.props),Object.freeze(i)),i};function K(e,t,r){var n,o,i,a={},u=null,c=null,s=null,f=null;if(null!=t)for(n in Y(t)&&(c=t.ref,"string"==typeof(o=t).ref&&O.current&&o.__self&&O.current.stateNode!==o.__self&&(i=k(O.current.type),Q[i]||(I('Component "%s" contains the string ref "%s". Support for string refs will be removed in a future major release. This case cannot be automatically converted to an arrow function. We ask you to manually fix this case by using useRef() or createRef() instead. Learn more about using refs safely here: https://fb.me/react-strict-mode-string-ref',k(O.current.type),o.ref),Q[i]=!0))),H(t)&&(u=""+t.key),s=void 0===t.__self?null:t.__self,f=void 0===t.__source?null:t.__source,t)X.call(t,n)&&!B.hasOwnProperty(n)&&(a[n]=t[n]);var l,p,y,d=arguments.length-2;if(1==d)a.children=r;else if(1<d){for(var m=Array(d),h=0;h<d;h++)m[h]=arguments[h+2];Object.freeze&&Object.freeze(m),a.children=m}if(e&&e.defaultProps){var b=e.defaultProps;for(n in b)void 0===a[n]&&(a[n]=b[n])}function v(){J||(J=!0,I("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://fb.me/react-special-props)",l))}function g(){z||(z=!0,I("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://fb.me/react-special-props)",y))}return(u||c)&&(r="function"==typeof e?e.displayName||e.name||"Unknown":e,u&&(p=a,y=r,g.isReactWarning=!0,Object.defineProperty(p,"key",{get:g,configurable:!0})),c&&(p=a,l=r,v.isReactWarning=!0,Object.defineProperty(p,"ref",{get:v,configurable:!0}))),G(e,u,c,s,f,O.current,a)}function Z(e){return"object"==typeof e&&null!==e&&e.$$typeof===m}var ee=".",te=":";var re=!1,ne=/\/+/g;function oe(e){return(""+e).replace(ne,"$&/")}var ie=10,ae=[];function ue(e,t,r,n){if(ae.length){var o=ae.pop();return o.result=e,o.keyPrefix=t,o.func=r,o.context=n,o.count=0,o}return{result:e,keyPrefix:t,func:r,context:n,count:0}}function ce(e){e.result=null,e.keyPrefix=null,e.func=null,e.context=null,e.count=0,ae.length<ie&&ae.push(e)}function se(e,t,r){return null==e?0:function e(t,r,n,o){var i,a=typeof t,u=!1;if(null===(t="undefined"==a||"boolean"==a?null:t))u=!0;else switch(a){case"string":case"number":u=!0;break;case"object":switch(t.$$typeof){case m:case h:u=!0}}if(u)return n(o,t,""===r?ee+fe(t,0):r),1;var c=0,s=""===r?ee:r+te;if(Array.isArray(t))for(var f=0;f<t.length;f++)c+=e(i=t[f],s+fe(i,f),n,o);else if("function"==typeof(r=S(t))){r===t.entries&&(re||T("Using Maps as children is deprecated and will be removed in a future major release. Consider converting children to an array of keyed ReactElements instead."),re=!0);for(var l,p=r.call(t),y=0;!(l=p.next()).done;)c+=e(i=l.value,s+fe(i,y++),n,o)}else if("object"==a)throw r="",r=" If you meant to render a collection of children, use an array instead."+C.getStackAddendum(),a=""+t,Error("Objects are not valid as a React child (found: "+("[object Object]"==a?"object with keys {"+Object.keys(t).join(", ")+"}":a)+")."+r);return c}(e,"",t,r)}function fe(e,t){return"object"==typeof e&&null!==e&&null!=e.key?(e=e.key,r={"=":"=0",":":"=2"},"$"+(""+e).replace(/[=:]/g,function(e){return r[e]})):t.toString(36);var r}function le(e,t,r){var n=e.func,o=e.context;n.call(o,t,e.count++)}function pe(e,t,r){var n=e.result,o=e.keyPrefix,i=e.func,a=e.context,e=i.call(a,t,e.count++);Array.isArray(e)?ye(e,n,r,function(e){return e}):null!=e&&(Z(e)&&(r=o+(!(o=e).key||t&&t.key===e.key?"":oe(e.key)+"/")+r,e=G(o.type,r,o.ref,o._self,o._source,o._owner,o.props)),n.push(e))}function ye(e,t,r,n,o){var i="",o=ue(t,i=null!=r?oe(r)+"/":i,n,o);se(e,pe,o),ce(o)}function de(e){return"string"==typeof e||"function"==typeof e||e===u||e===t||e===a||e===i||e===l||e===p||"object"==typeof e&&null!==e&&(e.$$typeof===b||e.$$typeof===y||e.$$typeof===c||e.$$typeof===s||e.$$typeof===f||e.$$typeof===r||e.$$typeof===n||e.$$typeof===g||e.$$typeof===v)}function me(){var e=j.current;if(null===e)throw Error("Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://fb.me/react-invalid-hook-call for tips about how to debug and fix this problem.");return e}function he(){if(O.current){var e=k(O.current.type);if(e)return"\n\nCheck the render method of `"+e+"`."}return""}var be=!1,ve={};function ge(e,t){var r;e._store&&!e._store.validated&&null==e.key&&(e._store.validated=!0,r=t,(t=he())||(r="string"==typeof r?r:r.displayName||r.name)&&(t="\n\nCheck the top-level render call using <"+r+">."),ve[r=t]||(ve[r]=!0,t="",e&&e._owner&&e._owner!==O.current&&(t=" It was passed a child from "+k(e._owner.type)+"."),R(e),I('Each child in a list should have a unique "key" prop.%s%s See https://fb.me/react-warning-keys for more information.',r,t),R(null)))}function we(e,t){if("object"==typeof e)if(Array.isArray(e))for(var r=0;r<e.length;r++){var n=e[r];Z(n)&&ge(n,t)}else if(Z(e))e._store&&(e._store.validated=!0);else if(e){var o=S(e);if("function"==typeof o&&o!==e.entries)for(var i,a=o.call(e);!(i=a.next()).done;)Z(i.value)&&ge(i.value,t)}}function _e(e){var t=e.type;if(null!=t&&"string"!=typeof t){var r,n=k(t);if("function"==typeof t)r=t.propTypes;else{if("object"!=typeof t||t.$$typeof!==f&&t.$$typeof!==y)return;r=t.propTypes}r?(R(e),o(r,e.props,"prop",n,C.getStackAddendum),R(null)):void 0===t.PropTypes||be||(be=!0,I("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?",n||"Unknown")),"function"!=typeof t.getDefaultProps||t.getDefaultProps.isReactClassApproved||I("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.")}}function Se(e,t,r){var n,o=de(e);o||(i="",(void 0===e||"object"==typeof e&&null!==e&&0===Object.keys(e).length)&&(i+=" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports."),i+=(null==(t=t)||void 0===(t=t.__source)?"":"\n\nCheck your code at "+t.fileName.replace(/^.*[\\\/]/,"")+":"+t.lineNumber+".")||he(),null===e?n="null":Array.isArray(e)?n="array":void 0!==e&&e.$$typeof===m?(n="<"+(k(e.type)||"Unknown")+" />",i=" Did you accidentally export a JSX literal instead of a component?"):n=typeof e,I("React.createElement: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",n,i));var i=K.apply(this,arguments);if(null==i)return i;if(o)for(var a=2;a<arguments.length;a++)we(arguments[a],e);return(e===u?function(e){R(e);for(var t=Object.keys(e.props),r=0;r<t.length;r++){var n=t[r];if("children"!==n&&"key"!==n){I("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.",n);break}}null!==e.ref&&I("Invalid attribute `ref` supplied to `React.Fragment`."),R(null)}:_e)(i),i}var je=!1;try{var Oe=Object.freeze({}),xe=new Map([[Oe,null]]),Pe=new Set([Oe]);xe.set(0,0),Pe.add(0)}catch(e){}Oe=Se,xe=function(e,t,r){for(var n=function(e,t,r){if(null==e)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+e+".");var n,o,i=d({},e.props),a=e.key,u=e.ref,c=e._self,s=e._source,f=e._owner;if(null!=t)for(n in Y(t)&&(u=t.ref,f=O.current),H(t)&&(a=""+t.key),e.type&&e.type.defaultProps&&(o=e.type.defaultProps),t)X.call(t,n)&&!B.hasOwnProperty(n)&&(void 0===t[n]&&void 0!==o?i[n]=o[n]:i[n]=t[n]);var l=arguments.length-2;if(1==l)i.children=r;else if(1<l){for(var p=Array(l),y=0;y<l;y++)p[y]=arguments[y+2];i.children=p}return G(e.type,a,u,c,s,f,i)}.apply(this,arguments),o=2;o<arguments.length;o++)we(arguments[o],n.type);return _e(n),n},Pe=function(e){var t=Se.bind(null,e);return t.type=e,je||(je=!0,T("React.createFactory() is deprecated and will be removed in a future major release. Consider using JSX or use React.createElement() directly instead.")),Object.defineProperty(t,"type",{enumerable:!1,get:function(){return T("Factory.type is deprecated. Access the class directly before passing it to createFactory."),Object.defineProperty(this,"type",{value:e}),e}}),t};Ce.Children={map:function(e,t,r){if(null==e)return e;var n=[];return ye(e,n,null,t,r),n},forEach:function(e,t,r){if(null==e)return e;r=ue(null,null,t,r),se(e,le,r),ce(r)},count:function(e){return se(e,function(){return null},null)},toArray:function(e){var t=[];return ye(e,t,null,function(e){return e}),t},only:function(e){if(!Z(e))throw Error("React.Children.only expected to receive a single React element child.");return e}},Ce.Component=V,Ce.Fragment=u,Ce.Profiler=a,Ce.PureComponent=W,Ce.StrictMode=i,Ce.Suspense=l,Ce.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=E,Ce.cloneElement=xe,Ce.createContext=function(e,t){void 0===t?t=null:null!==t&&"function"!=typeof t&&I("createContext: Expected the optional second argument to be a function. Instead received: %s",t);var r={$$typeof:s,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null},n=!(r.Provider={$$typeof:c,_context:r}),o=!1,e={$$typeof:s,_context:r,_calculateChangedBits:r._calculateChangedBits};return Object.defineProperties(e,{Provider:{get:function(){return o||(o=!0,I("Rendering <Context.Consumer.Provider> is not supported and will be removed in a future major release. Did you mean to render <Context.Provider> instead?")),r.Provider},set:function(e){r.Provider=e}},_currentValue:{get:function(){return r._currentValue},set:function(e){r._currentValue=e}},_currentValue2:{get:function(){return r._currentValue2},set:function(e){r._currentValue2=e}},_threadCount:{get:function(){return r._threadCount},set:function(e){r._threadCount=e}},Consumer:{get:function(){return n||(n=!0,I("Rendering <Context.Consumer.Consumer> is not supported and will be removed in a future major release. Did you mean to render <Context.Consumer> instead?")),r.Consumer}}}),r.Consumer=e,r._currentRenderer=null,r._currentRenderer2=null,r},Ce.createElement=Oe,Ce.createFactory=Pe,Ce.createRef=function(){var e={current:null};return Object.seal(e),e},Ce.forwardRef=function(e){return null!=e&&e.$$typeof===y?I("forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...))."):"function"!=typeof e?I("forwardRef requires a render function but was given %s.",null===e?"null":typeof e):0!==e.length&&2!==e.length&&I("forwardRef render functions accept exactly two parameters: props and ref. %s",1===e.length?"Did you forget to use the ref parameter?":"Any additional parameter will be undefined."),null!=e&&(null==e.defaultProps&&null==e.propTypes||I("forwardRef render functions do not support propTypes or defaultProps. Did you accidentally pass a React component?")),{$$typeof:f,render:e}},Ce.isValidElement=Z,Ce.lazy=function(e){var t,r,n={$$typeof:b,_ctor:e,_status:-1,_result:null};return Object.defineProperties(n,{defaultProps:{configurable:!0,get:function(){return t},set:function(e){I("React.lazy(...): It is not supported to assign `defaultProps` to a lazy component import. Either specify them where the component is defined, or create a wrapping component around it."),t=e,Object.defineProperty(n,"defaultProps",{enumerable:!0})}},propTypes:{configurable:!0,get:function(){return r},set:function(e){I("React.lazy(...): It is not supported to assign `propTypes` to a lazy component import. Either specify them where the component is defined, or create a wrapping component around it."),r=e,Object.defineProperty(n,"propTypes",{enumerable:!0})}}}),n},Ce.memo=function(e,t){return de(e)||I("memo: The first argument must be a component. Instead received: %s",null===e?"null":typeof e),{$$typeof:y,type:e,compare:void 0===t?null:t}},Ce.useCallback=function(e,t){return me().useCallback(e,t)},Ce.useContext=function(e,t){var r,n=me();return void 0!==t&&I("useContext() second argument is reserved for future use in React. Passing it is not supported. You passed: %s.%s",t,"number"==typeof t&&Array.isArray(arguments[2])?"\n\nDid you call array.map(useContext)? Calling Hooks inside a loop is not supported. Learn more at https://fb.me/rules-of-hooks":""),void 0!==e._context&&((r=e._context).Consumer===e?I("Calling useContext(Context.Consumer) is not supported, may cause bugs, and will be removed in a future major release. Did you mean to call useContext(Context) instead?"):r.Provider===e&&I("Calling useContext(Context.Provider) is not supported. Did you mean to call useContext(Context) instead?")),n.useContext(e,t)},Ce.useDebugValue=function(e,t){return me().useDebugValue(e,t)},Ce.useEffect=function(e,t){return me().useEffect(e,t)},Ce.useImperativeHandle=function(e,t,r){return me().useImperativeHandle(e,t,r)},Ce.useLayoutEffect=function(e,t){return me().useLayoutEffect(e,t)},Ce.useMemo=function(e,t){return me().useMemo(e,t)},Ce.useReducer=function(e,t,r){return me().useReducer(e,t,r)},Ce.useRef=function(e){return me().useRef(e)},Ce.useState=function(e){return me().useState(e)},Ce.version="16.14.0"}()}.call(this,ke("Xp6JUx"))},{Xp6JUx:2,"object-assign":1,"prop-types/checkPropTypes":3}],12:[function(e,t,r){"use strict";var f=e("object-assign"),n="function"==typeof Symbol&&Symbol.for,l=n?Symbol.for("react.element"):60103,s=n?Symbol.for("react.portal"):60106,o=n?Symbol.for("react.fragment"):60107,i=n?Symbol.for("react.strict_mode"):60108,a=n?Symbol.for("react.profiler"):60114,u=n?Symbol.for("react.provider"):60109,c=n?Symbol.for("react.context"):60110,p=n?Symbol.for("react.forward_ref"):60112,e=n?Symbol.for("react.suspense"):60113,y=n?Symbol.for("react.memo"):60115,d=n?Symbol.for("react.lazy"):60116,m="function"==typeof Symbol&&Symbol.iterator;function h(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,r=1;r<arguments.length;r++)t+="&args[]="+encodeURIComponent(arguments[r]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var b={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},v={};function g(e,t,r){this.props=e,this.context=t,this.refs=v,this.updater=r||b}function w(){}function _(e,t,r){this.props=e,this.context=t,this.refs=v,this.updater=r||b}g.prototype.isReactComponent={},g.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error(h(85));this.updater.enqueueSetState(this,e,t,"setState")},g.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},w.prototype=g.prototype;n=_.prototype=new w;n.constructor=_,f(n,g.prototype),n.isPureReactComponent=!0;var S={current:null},j=Object.prototype.hasOwnProperty,O={key:!0,ref:!0,__self:!0,__source:!0};function x(e,t,r){var n,o={},i=null,a=null;if(null!=t)for(n in void 0!==t.ref&&(a=t.ref),void 0!==t.key&&(i=""+t.key),t)j.call(t,n)&&!O.hasOwnProperty(n)&&(o[n]=t[n]);var u=arguments.length-2;if(1===u)o.children=r;else if(1<u){for(var c=Array(u),s=0;s<u;s++)c[s]=arguments[s+2];o.children=c}if(e&&e.defaultProps)for(n in u=e.defaultProps)void 0===o[n]&&(o[n]=u[n]);return{$$typeof:l,type:e,key:i,ref:a,props:o,_owner:S.current}}function P(e){return"object"==typeof e&&null!==e&&e.$$typeof===l}var k=/\/+/g,C=[];function $(e,t,r,n){if(C.length){var o=C.pop();return o.result=e,o.keyPrefix=t,o.func=r,o.context=n,o.count=0,o}return{result:e,keyPrefix:t,func:r,context:n,count:0}}function R(e){e.result=null,e.keyPrefix=null,e.func=null,e.context=null,e.count=0,C.length<10&&C.push(e)}function E(e,t,r){return null==e?0:function e(t,r,n,o){var i=!1;if(null===(t="undefined"==(u=typeof t)||"boolean"===u?null:t))i=!0;else switch(u){case"string":case"number":i=!0;break;case"object":switch(t.$$typeof){case l:case s:i=!0}}if(i)return n(o,t,""===r?"."+T(t,0):r),1;if(i=0,r=""===r?".":r+":",Array.isArray(t))for(var a=0;a<t.length;a++){var u,c=r+T(u=t[a],a);i+=e(u,c,n,o)}else if("function"==typeof(c=null!==t&&"object"==typeof t&&"function"==typeof(c=m&&t[m]||t["@@iterator"])?c:null))for(t=c.call(t),a=0;!(u=t.next()).done;)i+=e(u=u.value,c=r+T(u,a++),n,o);else if("object"===u)throw n=""+t,Error(h(31,"[object Object]"===n?"object with keys {"+Object.keys(t).join(", ")+"}":n,""));return i}(e,"",t,r)}function T(e,t){return"object"==typeof e&&null!==e&&null!=e.key?(e=e.key,r={"=":"=0",":":"=2"},"$"+(""+e).replace(/[=:]/g,function(e){return r[e]})):t.toString(36);var r}function I(e,t){e.func.call(e.context,t,e.count++)}function N(e,t,r){var n=e.result,o=e.keyPrefix;e=e.func.call(e.context,t,e.count++),Array.isArray(e)?A(e,n,r,function(e){return e}):null!=e&&(P(e)&&(r=o+(!(o=e).key||t&&t.key===e.key?"":(""+e.key).replace(k,"$&/")+"/")+r,e={$$typeof:l,type:o.type,key:r,ref:o.ref,props:o.props,_owner:o._owner}),n.push(e))}function A(e,t,r,n,o){var i="";E(e,N,t=$(t,i=null!=r?(""+r).replace(k,"$&/")+"/":i,n,o)),R(t)}var D={current:null};function M(){var e=D.current;if(null===e)throw Error(h(321));return e}n={ReactCurrentDispatcher:D,ReactCurrentBatchConfig:{suspense:null},ReactCurrentOwner:S,IsSomeRendererActing:{current:!1},assign:f};r.Children={map:function(e,t,r){if(null==e)return e;var n=[];return A(e,n,null,t,r),n},forEach:function(e,t,r){if(null==e)return e;E(e,I,t=$(null,null,t,r)),R(t)},count:function(e){return E(e,function(){return null},null)},toArray:function(e){var t=[];return A(e,t,null,function(e){return e}),t},only:function(e){if(!P(e))throw Error(h(143));return e}},r.Component=g,r.Fragment=o,r.Profiler=a,r.PureComponent=_,r.StrictMode=i,r.Suspense=e,r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=n,r.cloneElement=function(e,t,r){if(null==e)throw Error(h(267,e));var n=f({},e.props),o=e.key,i=e.ref,a=e._owner;if(null!=t)for(u in void 0!==t.ref&&(i=t.ref,a=S.current),void 0!==t.key&&(o=""+t.key),e.type&&e.type.defaultProps&&(c=e.type.defaultProps),t)j.call(t,u)&&!O.hasOwnProperty(u)&&(n[u]=(void 0===t[u]&&void 0!==c?c:t)[u]);var u=arguments.length-2;if(1===u)n.children=r;else if(1<u){for(var c=Array(u),s=0;s<u;s++)c[s]=arguments[s+2];n.children=c}return{$$typeof:l,type:e.type,key:o,ref:i,props:n,_owner:a}},r.createContext=function(e,t){return(e={$$typeof:c,_calculateChangedBits:t=void 0===t?null:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:u,_context:e},e.Consumer=e},r.createElement=x,r.createFactory=function(e){var t=x.bind(null,e);return t.type=e,t},r.createRef=function(){return{current:null}},r.forwardRef=function(e){return{$$typeof:p,render:e}},r.isValidElement=P,r.lazy=function(e){return{$$typeof:d,_ctor:e,_status:-1,_result:null}},r.memo=function(e,t){return{$$typeof:y,type:e,compare:void 0===t?null:t}},r.useCallback=function(e,t){return M().useCallback(e,t)},r.useContext=function(e,t){return M().useContext(e,t)},r.useDebugValue=function(){},r.useEffect=function(e,t){return M().useEffect(e,t)},r.useImperativeHandle=function(e,t,r){return M().useImperativeHandle(e,t,r)},r.useLayoutEffect=function(e,t){return M().useLayoutEffect(e,t)},r.useMemo=function(e,t){return M().useMemo(e,t)},r.useReducer=function(e,t,r){return M().useReducer(e,t,r)},r.useRef=function(e){return M().useRef(e)},r.useState=function(e){return M().useState(e)},r.version="16.14.0"},{"object-assign":1}],13:[function(t,r,e){!function(e){"use strict";"production"===e.env.NODE_ENV?r.exports=t("./cjs/react.production.min.js"):r.exports=t("./cjs/react.development.js")}.call(this,t("Xp6JUx"))},{"./cjs/react.development.js":11,"./cjs/react.production.min.js":12,Xp6JUx:2}],14:[function(e,t,r){"use strict";function a(e){return(a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var n,i=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!==a(e)&&"function"!=typeof e)return{default:e};var t=c();if(t&&t.has(e))return t.get(e);var r,n={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(r in e){var i;Object.prototype.hasOwnProperty.call(e,r)&&((i=o?Object.getOwnPropertyDescriptor(e,r):null)&&(i.get||i.set)?Object.defineProperty(n,r,i):n[r]=e[r])}n.default=e,t&&t.set(e,n);return n}(e("react")),u=(n=e("prop-types"))&&n.__esModule?n:{default:n};function c(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return c=function(){return e},e}function s(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function f(e,t){return(f=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function l(r){var n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}();return function(){var e,t=o(r);return e=n?(e=o(this).constructor,Reflect.construct(t,arguments,e)):t.apply(this,arguments),t=this,!(e=e)||"object"!==a(e)&&"function"!=typeof e?function(e){if(void 0!==e)return e;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(t):e}}function o(e){return(o=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var p,y,d,m=function(){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&f(e,t)}(o,i.Component);var e,t,r,n=l(o);function o(e){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,o),(e=n.call(this,e)).state={error:null,isLoading:!0,form:null},e}return e=o,r=[{key:"propTypes",get:function(){return{form_id:u.default.number,show_title:u.default.string,show_desc:u.default.string}}}],(t=[{key:"componentDidUpdate",value:function(e){e.form_id===this.props.form_id&&e.show_title===this.props.show_title&&e.show_desc===this.props.show_desc||this.componentDidMount()}},{key:"componentDidMount",value:function(){var t=this,e=new FormData;e.append("nonce",wpforms_divi_builder.nonce),e.append("action","wpforms_divi_preview"),e.append("form_id",this.props.form_id),e.append("show_title",this.props.show_title),e.append("show_desc",this.props.show_desc),fetch(wpforms_divi_builder.ajax_url,{method:"POST",cache:"no-cache",credentials:"same-origin",headers:{"Content-Type":"application/x-www-form-urlencoded","Cache-Control":"no-cache"},body:new URLSearchParams(e)}).then(function(e){return e.json()}).then(function(e){t.setState({isLoading:!1,form:e.data})},function(e){t.setState({isLoading:!1,error:e})})}},{key:"render",value:function(){var e=this.state,t=e.error,r=e.isLoaded,e=e.form,r=r?"wpforms-divi-form-preview loading":"wpforms-divi-form-preview";return t||!e?i.default.createElement("div",{className:"wpforms-divi-form-placeholder"},i.default.createElement("img",{src:wpforms_divi_builder.placeholder}),i.default.createElement("h3",null,wpforms_divi_builder.placeholder_title)):i.default.createElement("div",{className:r},i.default.createElement("div",{dangerouslySetInnerHTML:{__html:e}}))}}])&&s(e.prototype,t),r&&s(e,r),o}();d="wpforms_selector",(y="slug")in(p=m)?Object.defineProperty(p,y,{value:d,enumerable:!0,configurable:!0,writable:!0}):p[y]=d,jQuery(window).on("et_builder_api_ready",function(e,t){t.registerModules([m])})},{"prop-types":6,react:13}]},{},[14]);
1
+ !function n(o,i,a){function u(r,e){if(!i[r]){if(!o[r]){var t="function"==typeof require&&require;if(!e&&t)return t(r,!0);if(c)return c(r,!0);throw new Error("Cannot find module '"+r+"'")}t=i[r]={exports:{}};o[r][0].call(t.exports,function(e){var t=o[r][1][e];return u(t||e)},t,t.exports,n,o,i,a)}return i[r].exports}for(var c="function"==typeof require&&require,e=0;e<a.length;e++)u(a[e]);return u}({1:[function(e,t,r){"use strict";var c=Object.getOwnPropertySymbols,s=Object.prototype.hasOwnProperty,f=Object.prototype.propertyIsEnumerable;t.exports=function(){try{if(!Object.assign)return;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return;for(var t={},r=0;r<10;r++)t["_"+String.fromCharCode(r)]=r;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return;var n={};return"abcdefghijklmnopqrst".split("").forEach(function(e){n[e]=e}),"abcdefghijklmnopqrst"!==Object.keys(Object.assign({},n)).join("")?void 0:1}catch(e){return}}()?Object.assign:function(e,t){for(var r,n=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),o=1;o<arguments.length;o++){for(var i in r=Object(arguments[o]))s.call(r,i)&&(n[i]=r[i]);if(c)for(var a=c(r),u=0;u<a.length;u++)f.call(r,a[u])&&(n[a[u]]=r[a[u]])}return n}},{}],2:[function(e,t,r){t=t.exports={};function n(){}t.nextTick=function(){var e="undefined"!=typeof window&&window.setImmediate,t="undefined"!=typeof window&&window.postMessage&&window.addEventListener;if(e)return function(e){return window.setImmediate(e)};if(t){var r=[];return window.addEventListener("message",function(e){var t=e.source;t!==window&&null!==t||"process-tick"!==e.data||(e.stopPropagation(),0<r.length&&r.shift()())},!0),function(e){r.push(e),window.postMessage("process-tick","*")}}return function(e){setTimeout(e,0)}}(),t.title="browser",t.browser=!0,t.env={},t.argv=[],t.on=n,t.addListener=n,t.once=n,t.off=n,t.removeListener=n,t.removeAllListeners=n,t.emit=n,t.binding=function(e){throw new Error("process.binding is not supported")},t.cwd=function(){return"/"},t.chdir=function(e){throw new Error("process.chdir is not supported")}},{}],3:[function(t,r,e){!function(c){"use strict";var s,f,l,p=function(){};function e(e,t,r,n,o){if("production"!==c.env.NODE_ENV)for(var i in e)if(l(e,i)){var a;try{if("function"!=typeof e[i]){var u=Error((n||"React class")+": "+r+" type `"+i+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof e[i]+"`.");throw u.name="Invariant Violation",u}a=e[i](t,i,n,r,null,s)}catch(e){a=e}!a||a instanceof Error||p((n||"React class")+": type specification of "+r+" `"+i+"` is invalid; the type checker function must return `null` or an `Error` but returned a "+typeof a+". You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument)."),a instanceof Error&&!(a.message in f)&&(f[a.message]=!0,i=o?o():"",p("Failed "+r+" type: "+a.message+(null!=i?i:"")))}}"production"!==c.env.NODE_ENV&&(s=t("./lib/ReactPropTypesSecret"),f={},l=Function.call.bind(Object.prototype.hasOwnProperty),p=function(e){e="Warning: "+e;"undefined"!=typeof console&&console.error(e);try{throw new Error(e)}catch(e){}}),e.resetWarningCache=function(){"production"!==c.env.NODE_ENV&&(f={})},r.exports=e}.call(this,t("Xp6JUx"))},{"./lib/ReactPropTypesSecret":7,Xp6JUx:2}],4:[function(e,t,r){"use strict";var a=e("./lib/ReactPropTypesSecret");function n(){}function o(){}o.resetWarningCache=n,t.exports=function(){function e(e,t,r,n,o,i){if(i!==a){i=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw i.name="Invariant Violation",i}}function t(){return e}var r={array:e.isRequired=e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:n};return r.PropTypes=r}},{"./lib/ReactPropTypesSecret":7}],5:[function(e,t,r){!function(d){"use strict";var m=e("react-is"),h=e("object-assign"),b=e("./lib/ReactPropTypesSecret"),n=e("./checkPropTypes"),v=Function.call.bind(Object.prototype.hasOwnProperty),g=function(){};function o(){return null}"production"!==d.env.NODE_ENV&&(g=function(e){e="Warning: "+e;"undefined"!=typeof console&&console.error(e);try{throw new Error(e)}catch(e){}}),t.exports=function(i,l){var a="function"==typeof Symbol&&Symbol.iterator,u="@@iterator";var p="<<anonymous>>",e={array:t("array"),bool:t("boolean"),func:t("function"),number:t("number"),object:t("object"),string:t("string"),symbol:t("symbol"),any:r(o),arrayOf:function(c){return r(function(e,t,r,n,o){if("function"!=typeof c)return new y("Property `"+o+"` of component `"+r+"` has invalid PropType notation inside arrayOf.");var i=e[t];if(!Array.isArray(i))return new y("Invalid "+n+" `"+o+"` of type `"+f(i)+"` supplied to `"+r+"`, expected an array.");for(var a=0;a<i.length;a++){var u=c(i,a,r,n,o+"["+a+"]",b);if(u instanceof Error)return u}return null})},element:r(function(e,t,r,n,o){return t=e[t],i(t)?null:new y("Invalid "+n+" `"+o+"` of type `"+f(t)+"` supplied to `"+r+"`, expected a single ReactElement.")}),elementType:r(function(e,t,r,n,o){return t=e[t],m.isValidElementType(t)?null:new y("Invalid "+n+" `"+o+"` of type `"+f(t)+"` supplied to `"+r+"`, expected a single ReactElement type.")}),instanceOf:function(a){return r(function(e,t,r,n,o){if(e[t]instanceof a)return null;var i=a.name||p;return new y("Invalid "+n+" `"+o+"` of type `"+((t=e[t]).constructor&&t.constructor.name?t.constructor.name:p)+"` supplied to `"+r+"`, expected instance of `"+i+"`.")})},node:r(function(e,t,r,n,o){return c(e[t])?null:new y("Invalid "+n+" `"+o+"` supplied to `"+r+"`, expected a ReactNode.")}),objectOf:function(c){return r(function(e,t,r,n,o){if("function"!=typeof c)return new y("Property `"+o+"` of component `"+r+"` has invalid PropType notation inside objectOf.");var i,a=e[t];if("object"!==(t=f(a)))return new y("Invalid "+n+" `"+o+"` of type `"+t+"` supplied to `"+r+"`, expected an object.");for(i in a)if(v(a,i)){var u=c(a,i,r,n,o+"."+i,b);if(u instanceof Error)return u}return null})},oneOf:function(u){if(Array.isArray(u))return r(function(e,t,r,n,o){for(var i=e[t],a=0;a<u.length;a++)if(function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}(i,u[a]))return null;t=JSON.stringify(u,function(e,t){return"symbol"===s(t)?String(t):t});return new y("Invalid "+n+" `"+o+"` of value `"+String(i)+"` supplied to `"+r+"`, expected one of "+t+".")});"production"!==d.env.NODE_ENV&&g(1<arguments.length?"Invalid arguments supplied to oneOf, expected an array, got "+arguments.length+" arguments. A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).":"Invalid argument supplied to oneOf, expected an array.");return o},oneOfType:function(a){if(!Array.isArray(a))return"production"!==d.env.NODE_ENV&&g("Invalid argument supplied to oneOfType, expected an instance of array."),o;for(var e=0;e<a.length;e++){var t=a[e];if("function"!=typeof t)return g("Invalid argument supplied to oneOfType. Expected an array of check functions, but received "+function(e){var t=s(e);switch(t){case"array":case"object":return"an "+t;case"boolean":case"date":case"regexp":return"a "+t;default:return t}}(t)+" at index "+e+"."),o}return r(function(e,t,r,n,o){for(var i=0;i<a.length;i++)if(null==(0,a[i])(e,t,r,n,o,b))return null;return new y("Invalid "+n+" `"+o+"` supplied to `"+r+"`.")})},shape:function(c){return r(function(e,t,r,n,o){var i,a=e[t];if("object"!==(t=f(a)))return new y("Invalid "+n+" `"+o+"` of type `"+t+"` supplied to `"+r+"`, expected `object`.");for(i in c){var u=c[i];if(u){u=u(a,i,r,n,o+"."+i,b);if(u)return u}}return null})},exact:function(s){return r(function(e,t,r,n,o){var i,a=e[t],u=f(a);if("object"!==u)return new y("Invalid "+n+" `"+o+"` of type `"+u+"` supplied to `"+r+"`, expected `object`.");for(i in h({},e[t],s)){var c=s[i];if(!c)return new y("Invalid "+n+" `"+o+"` key `"+i+"` supplied to `"+r+"`.\nBad object: "+JSON.stringify(e[t],null," ")+"\nValid keys: "+JSON.stringify(Object.keys(s),null," "));c=c(a,i,r,n,o+"."+i,b);if(c)return c}return null})}};function y(e){this.message=e,this.stack=""}function r(c){var s,f;function e(e,t,r,n,o,i,a){if(n=n||p,i=i||r,a!==b){if(l){var u=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types");throw u.name="Invariant Violation",u}"production"===d.env.NODE_ENV||"undefined"==typeof console||!s[u=n+":"+r]&&f<3&&(g("You are manually calling a React.PropTypes validation function for the `"+i+"` prop on `"+n+"`. This is deprecated and will throw in the standalone `prop-types` package. You may be seeing this warning due to a third-party PropTypes library. See https://fb.me/react-warning-dont-call-proptypes for details."),s[u]=!0,f++)}return null==t[r]?e?null===t[r]?new y("The "+o+" `"+i+"` is marked as required in `"+n+"`, but its value is `null`."):new y("The "+o+" `"+i+"` is marked as required in `"+n+"`, but its value is `undefined`."):null:c(t,r,n,o,i)}"production"!==d.env.NODE_ENV&&(s={},f=0);var t=e.bind(null,!1);return t.isRequired=e.bind(null,!0),t}function t(a){return r(function(e,t,r,n,o,i){return f(t=e[t])===a?null:new y("Invalid "+n+" `"+o+"` of type `"+s(t)+"` supplied to `"+r+"`, expected `"+a+"`.")})}function c(e){switch(typeof e){case"number":case"string":case"undefined":return!0;case"boolean":return!e;case"object":if(Array.isArray(e))return e.every(c);if(null===e||i(e))return!0;var t=function(e){if("function"==typeof(e=e&&(a&&e[a]||e[u])))return e}(e);if(!t)return!1;var r,n=t.call(e);if(t!==e.entries){for(;!(r=n.next()).done;)if(!c(r.value))return!1}else for(;!(r=n.next()).done;){var o=r.value;if(o&&!c(o[1]))return!1}return!0;default:return!1}}function f(e){var t=typeof e;return Array.isArray(e)?"array":e instanceof RegExp?"object":(e=e,"symbol"===t||e&&("Symbol"===e["@@toStringTag"]||"function"==typeof Symbol&&e instanceof Symbol)?"symbol":t)}function s(e){if(null==e)return""+e;var t=f(e);if("object"===t){if(e instanceof Date)return"date";if(e instanceof RegExp)return"regexp"}return t}return y.prototype=Error.prototype,e.checkPropTypes=n,e.resetWarningCache=n.resetWarningCache,e.PropTypes=e}}.call(this,e("Xp6JUx"))},{"./checkPropTypes":3,"./lib/ReactPropTypesSecret":7,Xp6JUx:2,"object-assign":1,"react-is":10}],6:[function(t,r,e){!function(e){"production"!==e.env.NODE_ENV?(e=t("react-is"),r.exports=t("./factoryWithTypeCheckers")(e.isElement,!0)):r.exports=t("./factoryWithThrowingShims")()}.call(this,t("Xp6JUx"))},{"./factoryWithThrowingShims":4,"./factoryWithTypeCheckers":5,Xp6JUx:2,"react-is":10}],7:[function(e,t,r){"use strict";t.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},{}],8:[function(e,t,I){!function(e){"use strict";function t(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case o:var r=e.type;switch(r){case l:case p:case a:case c:case u:case d:return r;default:var n=r&&r.$$typeof;switch(n){case f:case y:case b:case h:case s:return n;default:return t}}case i:return t}}}function r(e){return t(e)===p}var n,o,i,a,u,c,s,f,l,p,y,d,m,h,b,v,g,w,_,S,j,O,x,P,k,C,$,R,E,T;"production"!==e.env.NODE_ENV&&(n="function"==typeof Symbol&&Symbol.for,o=n?Symbol.for("react.element"):60103,i=n?Symbol.for("react.portal"):60106,a=n?Symbol.for("react.fragment"):60107,u=n?Symbol.for("react.strict_mode"):60108,c=n?Symbol.for("react.profiler"):60114,s=n?Symbol.for("react.provider"):60109,f=n?Symbol.for("react.context"):60110,l=n?Symbol.for("react.async_mode"):60111,p=n?Symbol.for("react.concurrent_mode"):60111,y=n?Symbol.for("react.forward_ref"):60112,d=n?Symbol.for("react.suspense"):60113,m=n?Symbol.for("react.suspense_list"):60120,h=n?Symbol.for("react.memo"):60115,b=n?Symbol.for("react.lazy"):60116,v=n?Symbol.for("react.block"):60121,g=n?Symbol.for("react.fundamental"):60117,w=n?Symbol.for("react.responder"):60118,_=n?Symbol.for("react.scope"):60119,S=p,j=f,O=s,x=o,P=y,k=a,C=b,$=h,R=i,E=c,e=u,n=d,T=!1,I.AsyncMode=l,I.ConcurrentMode=S,I.ContextConsumer=j,I.ContextProvider=O,I.Element=x,I.ForwardRef=P,I.Fragment=k,I.Lazy=C,I.Memo=$,I.Portal=R,I.Profiler=E,I.StrictMode=e,I.Suspense=n,I.isAsyncMode=function(e){return T||(T=!0,console.warn("The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 17+. Update your code to use ReactIs.isConcurrentMode() instead. It has the exact same API.")),r(e)||t(e)===l},I.isConcurrentMode=r,I.isContextConsumer=function(e){return t(e)===f},I.isContextProvider=function(e){return t(e)===s},I.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===o},I.isForwardRef=function(e){return t(e)===y},I.isFragment=function(e){return t(e)===a},I.isLazy=function(e){return t(e)===b},I.isMemo=function(e){return t(e)===h},I.isPortal=function(e){return t(e)===i},I.isProfiler=function(e){return t(e)===c},I.isStrictMode=function(e){return t(e)===u},I.isSuspense=function(e){return t(e)===d},I.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===a||e===p||e===c||e===u||e===d||e===m||"object"==typeof e&&null!==e&&(e.$$typeof===b||e.$$typeof===h||e.$$typeof===s||e.$$typeof===f||e.$$typeof===y||e.$$typeof===g||e.$$typeof===w||e.$$typeof===_||e.$$typeof===v)},I.typeOf=t)}.call(this,e("Xp6JUx"))},{Xp6JUx:2}],9:[function(e,t,r){"use strict";var n="function"==typeof Symbol&&Symbol.for,o=n?Symbol.for("react.element"):60103,i=n?Symbol.for("react.portal"):60106,a=n?Symbol.for("react.fragment"):60107,u=n?Symbol.for("react.strict_mode"):60108,c=n?Symbol.for("react.profiler"):60114,s=n?Symbol.for("react.provider"):60109,f=n?Symbol.for("react.context"):60110,l=n?Symbol.for("react.async_mode"):60111,p=n?Symbol.for("react.concurrent_mode"):60111,y=n?Symbol.for("react.forward_ref"):60112,d=n?Symbol.for("react.suspense"):60113,m=n?Symbol.for("react.suspense_list"):60120,h=n?Symbol.for("react.memo"):60115,b=n?Symbol.for("react.lazy"):60116,v=n?Symbol.for("react.block"):60121,g=n?Symbol.for("react.fundamental"):60117,w=n?Symbol.for("react.responder"):60118,_=n?Symbol.for("react.scope"):60119;function S(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case o:switch(e=e.type){case l:case p:case a:case c:case u:case d:return e;default:switch(e=e&&e.$$typeof){case f:case y:case b:case h:case s:return e;default:return t}}case i:return t}}}function j(e){return S(e)===p}r.AsyncMode=l,r.ConcurrentMode=p,r.ContextConsumer=f,r.ContextProvider=s,r.Element=o,r.ForwardRef=y,r.Fragment=a,r.Lazy=b,r.Memo=h,r.Portal=i,r.Profiler=c,r.StrictMode=u,r.Suspense=d,r.isAsyncMode=function(e){return j(e)||S(e)===l},r.isConcurrentMode=j,r.isContextConsumer=function(e){return S(e)===f},r.isContextProvider=function(e){return S(e)===s},r.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===o},r.isForwardRef=function(e){return S(e)===y},r.isFragment=function(e){return S(e)===a},r.isLazy=function(e){return S(e)===b},r.isMemo=function(e){return S(e)===h},r.isPortal=function(e){return S(e)===i},r.isProfiler=function(e){return S(e)===c},r.isStrictMode=function(e){return S(e)===u},r.isSuspense=function(e){return S(e)===d},r.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===a||e===p||e===c||e===u||e===d||e===m||"object"==typeof e&&null!==e&&(e.$$typeof===b||e.$$typeof===h||e.$$typeof===s||e.$$typeof===f||e.$$typeof===y||e.$$typeof===g||e.$$typeof===w||e.$$typeof===_||e.$$typeof===v)},r.typeOf=S},{}],10:[function(t,r,e){!function(e){"use strict";"production"===e.env.NODE_ENV?r.exports=t("./cjs/react-is.production.min.js"):r.exports=t("./cjs/react-is.development.js")}.call(this,t("Xp6JUx"))},{"./cjs/react-is.development.js":8,"./cjs/react-is.production.min.js":9,Xp6JUx:2}],11:[function(ke,e,Ce){!function(e){"use strict";"production"!==e.env.NODE_ENV&&function(){var d=ke("object-assign"),o=ke("prop-types/checkPropTypes"),e="function"==typeof Symbol&&Symbol.for,m=e?Symbol.for("react.element"):60103,h=e?Symbol.for("react.portal"):60106,u=e?Symbol.for("react.fragment"):60107,n=e?Symbol.for("react.strict_mode"):60108,i=e?Symbol.for("react.profiler"):60114,a=e?Symbol.for("react.provider"):60109,c=e?Symbol.for("react.context"):60110,t=e?Symbol.for("react.concurrent_mode"):60111,s=e?Symbol.for("react.forward_ref"):60112,f=e?Symbol.for("react.suspense"):60113,l=e?Symbol.for("react.suspense_list"):60120,p=e?Symbol.for("react.memo"):60115,y=e?Symbol.for("react.lazy"):60116,b=e?Symbol.for("react.block"):60121,r=e?Symbol.for("react.fundamental"):60117,v=e?Symbol.for("react.responder"):60118,g=e?Symbol.for("react.scope"):60119,w="function"==typeof Symbol&&Symbol.iterator,_="@@iterator";function S(e){if(null===e||"object"!=typeof e)return null;e=w&&e[w]||e[_];return"function"==typeof e?e:null}var j={current:null},O={current:null},x=/^(.*)[\\\/]/;var P=1;function k(e){if(null==e)return null;if("number"==typeof e.tag&&I("Received an unexpected object in getComponentName(). This is likely a bug in React. Please file an issue."),"function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case u:return"Fragment";case h:return"Portal";case i:return"Profiler";case n:return"StrictMode";case f:return"Suspense";case l:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case c:return"Context.Consumer";case a:return"Context.Provider";case s:return t=e.render,r="ForwardRef",t=t.displayName||t.name||"",e.displayName||(""!==t?r+"("+t+")":r);case p:return k(e.type);case b:return k(e.render);case y:r=(r=e)._status===P?r._result:null;if(r)return k(r)}var t,r;return null}var C={},$=null;function R(e){$=e}C.getCurrentStack=null,C.getStackAddendum=function(){var e,t,r,n,o,i="";$&&(n=k($.type),o=$._owner,i+=(e=n,t=$._source,r=o&&k(o.type),a="",t?(o=(n=t.fileName).replace(x,""),/^index\./.test(o)&&(!(n=n.match(x))||(n=n[1])&&(o=n.replace(x,"")+"/"+o)),a=" (at "+o+":"+t.lineNumber+")"):r&&(a=" (created by "+r+")"),"\n in "+(e||"Unknown")+a));var a=C.getCurrentStack;return a&&(i+=a()||""),i};var E={ReactCurrentDispatcher:j,ReactCurrentBatchConfig:{suspense:null},ReactCurrentOwner:O,IsSomeRendererActing:{current:!1},assign:d};function T(e){for(var t=arguments.length,r=new Array(1<t?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];N("warn",e,r)}function I(e){for(var t=arguments.length,r=new Array(1<t?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];N("error",e,r)}function N(e,t,r){0<r.length&&"string"==typeof r[r.length-1]&&0===r[r.length-1].indexOf("\n in")||""!==(n=E.ReactDebugCurrentFrame.getStackAddendum())&&(t+="%s",r=r.concat([n]));var n=r.map(function(e){return""+e});n.unshift("Warning: "+t),Function.prototype.apply.call(console[e],console,n);try{var o=0,i="Warning: "+t.replace(/%s/g,function(){return r[o++]});throw new Error(i)}catch(e){}}d(E,{ReactDebugCurrentFrame:C,ReactComponentTreeHook:{}});var A={};function D(e,t){var r=e.constructor,e=r&&(r.displayName||r.name)||"ReactClass",r=e+"."+t;A[r]||(I("Can't call %s on a component that is not yet mounted. This is a no-op, but it might indicate a bug in your application. Instead, assign to `this.state` directly or define a `state = {};` class property with the desired state in the %s component.",t,e),A[r]=!0)}var M={isMounted:function(e){return!1},enqueueForceUpdate:function(e,t,r){D(e,"forceUpdate")},enqueueReplaceState:function(e,t,r,n){D(e,"replaceState")},enqueueSetState:function(e,t,r,n){D(e,"setState")}},U={};function V(e,t,r){this.props=e,this.context=t,this.refs=U,this.updater=r||M}Object.freeze(U),V.prototype.isReactComponent={},V.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},V.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};var F,L={isMounted:["isMounted","Instead, make sure to clean up subscriptions and pending requests in componentWillUnmount to prevent memory leaks."],replaceState:["replaceState","Refactor your code to use setState instead (see https://github.com/facebook/react/issues/3236)."]};for(F in L)L.hasOwnProperty(F)&&function(e,t){Object.defineProperty(V.prototype,e,{get:function(){T("%s(...) is deprecated in plain JavaScript React classes. %s",t[0],t[1])}})}(F,L[F]);function q(){}function W(e,t,r){this.props=e,this.context=t,this.refs=U,this.updater=r||M}q.prototype=V.prototype;e=W.prototype=new q;e.constructor=W,d(e,V.prototype),e.isPureReactComponent=!0;var z,J,X=Object.prototype.hasOwnProperty,B={key:!0,ref:!0,__self:!0,__source:!0};function Y(e){if(X.call(e,"ref")){var t=Object.getOwnPropertyDescriptor(e,"ref").get;if(t&&t.isReactWarning)return}return void 0!==e.ref}function H(e){if(X.call(e,"key")){var t=Object.getOwnPropertyDescriptor(e,"key").get;if(t&&t.isReactWarning)return}return void 0!==e.key}var Q={},G=function(e,t,r,n,o,i,a){i={$$typeof:m,type:e,key:t,ref:r,props:a,_owner:i,_store:{}};return Object.defineProperty(i._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(i,"_self",{configurable:!1,enumerable:!1,writable:!1,value:n}),Object.defineProperty(i,"_source",{configurable:!1,enumerable:!1,writable:!1,value:o}),Object.freeze&&(Object.freeze(i.props),Object.freeze(i)),i};function K(e,t,r){var n,o,i,a={},u=null,c=null,s=null,f=null;if(null!=t)for(n in Y(t)&&(c=t.ref,"string"==typeof(o=t).ref&&O.current&&o.__self&&O.current.stateNode!==o.__self&&(i=k(O.current.type),Q[i]||(I('Component "%s" contains the string ref "%s". Support for string refs will be removed in a future major release. This case cannot be automatically converted to an arrow function. We ask you to manually fix this case by using useRef() or createRef() instead. Learn more about using refs safely here: https://fb.me/react-strict-mode-string-ref',k(O.current.type),o.ref),Q[i]=!0))),H(t)&&(u=""+t.key),s=void 0===t.__self?null:t.__self,f=void 0===t.__source?null:t.__source,t)X.call(t,n)&&!B.hasOwnProperty(n)&&(a[n]=t[n]);var l,p,y,d=arguments.length-2;if(1==d)a.children=r;else if(1<d){for(var m=Array(d),h=0;h<d;h++)m[h]=arguments[h+2];Object.freeze&&Object.freeze(m),a.children=m}if(e&&e.defaultProps){var b=e.defaultProps;for(n in b)void 0===a[n]&&(a[n]=b[n])}function v(){J||(J=!0,I("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://fb.me/react-special-props)",l))}function g(){z||(z=!0,I("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://fb.me/react-special-props)",y))}return(u||c)&&(r="function"==typeof e?e.displayName||e.name||"Unknown":e,u&&(p=a,y=r,g.isReactWarning=!0,Object.defineProperty(p,"key",{get:g,configurable:!0})),c&&(p=a,l=r,v.isReactWarning=!0,Object.defineProperty(p,"ref",{get:v,configurable:!0}))),G(e,u,c,s,f,O.current,a)}function Z(e){return"object"==typeof e&&null!==e&&e.$$typeof===m}var ee=".",te=":";var re=!1,ne=/\/+/g;function oe(e){return(""+e).replace(ne,"$&/")}var ie=10,ae=[];function ue(e,t,r,n){if(ae.length){var o=ae.pop();return o.result=e,o.keyPrefix=t,o.func=r,o.context=n,o.count=0,o}return{result:e,keyPrefix:t,func:r,context:n,count:0}}function ce(e){e.result=null,e.keyPrefix=null,e.func=null,e.context=null,e.count=0,ae.length<ie&&ae.push(e)}function se(e,t,r){return null==e?0:function e(t,r,n,o){var i,a=typeof t,u=!1;if(null===(t="undefined"==a||"boolean"==a?null:t))u=!0;else switch(a){case"string":case"number":u=!0;break;case"object":switch(t.$$typeof){case m:case h:u=!0}}if(u)return n(o,t,""===r?ee+fe(t,0):r),1;var c=0,s=""===r?ee:r+te;if(Array.isArray(t))for(var f=0;f<t.length;f++)c+=e(i=t[f],s+fe(i,f),n,o);else if("function"==typeof(r=S(t))){r===t.entries&&(re||T("Using Maps as children is deprecated and will be removed in a future major release. Consider converting children to an array of keyed ReactElements instead."),re=!0);for(var l,p=r.call(t),y=0;!(l=p.next()).done;)c+=e(i=l.value,s+fe(i,y++),n,o)}else if("object"==a)throw r="",r=" If you meant to render a collection of children, use an array instead."+C.getStackAddendum(),a=""+t,Error("Objects are not valid as a React child (found: "+("[object Object]"==a?"object with keys {"+Object.keys(t).join(", ")+"}":a)+")."+r);return c}(e,"",t,r)}function fe(e,t){return"object"==typeof e&&null!==e&&null!=e.key?(e=e.key,r={"=":"=0",":":"=2"},"$"+(""+e).replace(/[=:]/g,function(e){return r[e]})):t.toString(36);var r}function le(e,t,r){var n=e.func,o=e.context;n.call(o,t,e.count++)}function pe(e,t,r){var n=e.result,o=e.keyPrefix,i=e.func,a=e.context,e=i.call(a,t,e.count++);Array.isArray(e)?ye(e,n,r,function(e){return e}):null!=e&&(Z(e)&&(r=o+(!(o=e).key||t&&t.key===e.key?"":oe(e.key)+"/")+r,e=G(o.type,r,o.ref,o._self,o._source,o._owner,o.props)),n.push(e))}function ye(e,t,r,n,o){var i="",o=ue(t,i=null!=r?oe(r)+"/":i,n,o);se(e,pe,o),ce(o)}function de(e){return"string"==typeof e||"function"==typeof e||e===u||e===t||e===i||e===n||e===f||e===l||"object"==typeof e&&null!==e&&(e.$$typeof===y||e.$$typeof===p||e.$$typeof===a||e.$$typeof===c||e.$$typeof===s||e.$$typeof===r||e.$$typeof===v||e.$$typeof===g||e.$$typeof===b)}function me(){var e=j.current;if(null===e)throw Error("Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://fb.me/react-invalid-hook-call for tips about how to debug and fix this problem.");return e}function he(){if(O.current){var e=k(O.current.type);if(e)return"\n\nCheck the render method of `"+e+"`."}return""}var be=!1,ve={};function ge(e,t){var r;e._store&&!e._store.validated&&null==e.key&&(e._store.validated=!0,r=t,(t=he())||(r="string"==typeof r?r:r.displayName||r.name)&&(t="\n\nCheck the top-level render call using <"+r+">."),ve[r=t]||(ve[r]=!0,t="",e&&e._owner&&e._owner!==O.current&&(t=" It was passed a child from "+k(e._owner.type)+"."),R(e),I('Each child in a list should have a unique "key" prop.%s%s See https://fb.me/react-warning-keys for more information.',r,t),R(null)))}function we(e,t){if("object"==typeof e)if(Array.isArray(e))for(var r=0;r<e.length;r++){var n=e[r];Z(n)&&ge(n,t)}else if(Z(e))e._store&&(e._store.validated=!0);else if(e){var o=S(e);if("function"==typeof o&&o!==e.entries)for(var i,a=o.call(e);!(i=a.next()).done;)Z(i.value)&&ge(i.value,t)}}function _e(e){var t=e.type;if(null!=t&&"string"!=typeof t){var r,n=k(t);if("function"==typeof t)r=t.propTypes;else{if("object"!=typeof t||t.$$typeof!==s&&t.$$typeof!==p)return;r=t.propTypes}r?(R(e),o(r,e.props,"prop",n,C.getStackAddendum),R(null)):void 0===t.PropTypes||be||(be=!0,I("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?",n||"Unknown")),"function"!=typeof t.getDefaultProps||t.getDefaultProps.isReactClassApproved||I("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.")}}function Se(e,t,r){var n,o=de(e);o||(i="",(void 0===e||"object"==typeof e&&null!==e&&0===Object.keys(e).length)&&(i+=" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports."),i+=(null==(t=t)||void 0===(t=t.__source)?"":"\n\nCheck your code at "+t.fileName.replace(/^.*[\\\/]/,"")+":"+t.lineNumber+".")||he(),null===e?n="null":Array.isArray(e)?n="array":void 0!==e&&e.$$typeof===m?(n="<"+(k(e.type)||"Unknown")+" />",i=" Did you accidentally export a JSX literal instead of a component?"):n=typeof e,I("React.createElement: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",n,i));var i=K.apply(this,arguments);if(null==i)return i;if(o)for(var a=2;a<arguments.length;a++)we(arguments[a],e);return(e===u?function(e){R(e);for(var t=Object.keys(e.props),r=0;r<t.length;r++){var n=t[r];if("children"!==n&&"key"!==n){I("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.",n);break}}null!==e.ref&&I("Invalid attribute `ref` supplied to `React.Fragment`."),R(null)}:_e)(i),i}var je=!1;try{var Oe=Object.freeze({}),xe=new Map([[Oe,null]]),Pe=new Set([Oe]);xe.set(0,0),Pe.add(0)}catch(e){}Oe=Se,xe=function(e,t,r){for(var n=function(e,t,r){if(null==e)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+e+".");var n,o,i=d({},e.props),a=e.key,u=e.ref,c=e._self,s=e._source,f=e._owner;if(null!=t)for(n in Y(t)&&(u=t.ref,f=O.current),H(t)&&(a=""+t.key),e.type&&e.type.defaultProps&&(o=e.type.defaultProps),t)X.call(t,n)&&!B.hasOwnProperty(n)&&(void 0===t[n]&&void 0!==o?i[n]=o[n]:i[n]=t[n]);var l=arguments.length-2;if(1==l)i.children=r;else if(1<l){for(var p=Array(l),y=0;y<l;y++)p[y]=arguments[y+2];i.children=p}return G(e.type,a,u,c,s,f,i)}.apply(this,arguments),o=2;o<arguments.length;o++)we(arguments[o],n.type);return _e(n),n},Pe=function(e){var t=Se.bind(null,e);return t.type=e,je||(je=!0,T("React.createFactory() is deprecated and will be removed in a future major release. Consider using JSX or use React.createElement() directly instead.")),Object.defineProperty(t,"type",{enumerable:!1,get:function(){return T("Factory.type is deprecated. Access the class directly before passing it to createFactory."),Object.defineProperty(this,"type",{value:e}),e}}),t};Ce.Children={map:function(e,t,r){if(null==e)return e;var n=[];return ye(e,n,null,t,r),n},forEach:function(e,t,r){if(null==e)return e;r=ue(null,null,t,r),se(e,le,r),ce(r)},count:function(e){return se(e,function(){return null},null)},toArray:function(e){var t=[];return ye(e,t,null,function(e){return e}),t},only:function(e){if(!Z(e))throw Error("React.Children.only expected to receive a single React element child.");return e}},Ce.Component=V,Ce.Fragment=u,Ce.Profiler=i,Ce.PureComponent=W,Ce.StrictMode=n,Ce.Suspense=f,Ce.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=E,Ce.cloneElement=xe,Ce.createContext=function(e,t){void 0===t?t=null:null!==t&&"function"!=typeof t&&I("createContext: Expected the optional second argument to be a function. Instead received: %s",t);var r={$$typeof:c,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null},n=!(r.Provider={$$typeof:a,_context:r}),o=!1,e={$$typeof:c,_context:r,_calculateChangedBits:r._calculateChangedBits};return Object.defineProperties(e,{Provider:{get:function(){return o||(o=!0,I("Rendering <Context.Consumer.Provider> is not supported and will be removed in a future major release. Did you mean to render <Context.Provider> instead?")),r.Provider},set:function(e){r.Provider=e}},_currentValue:{get:function(){return r._currentValue},set:function(e){r._currentValue=e}},_currentValue2:{get:function(){return r._currentValue2},set:function(e){r._currentValue2=e}},_threadCount:{get:function(){return r._threadCount},set:function(e){r._threadCount=e}},Consumer:{get:function(){return n||(n=!0,I("Rendering <Context.Consumer.Consumer> is not supported and will be removed in a future major release. Did you mean to render <Context.Consumer> instead?")),r.Consumer}}}),r.Consumer=e,r._currentRenderer=null,r._currentRenderer2=null,r},Ce.createElement=Oe,Ce.createFactory=Pe,Ce.createRef=function(){var e={current:null};return Object.seal(e),e},Ce.forwardRef=function(e){return null!=e&&e.$$typeof===p?I("forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...))."):"function"!=typeof e?I("forwardRef requires a render function but was given %s.",null===e?"null":typeof e):0!==e.length&&2!==e.length&&I("forwardRef render functions accept exactly two parameters: props and ref. %s",1===e.length?"Did you forget to use the ref parameter?":"Any additional parameter will be undefined."),null!=e&&(null==e.defaultProps&&null==e.propTypes||I("forwardRef render functions do not support propTypes or defaultProps. Did you accidentally pass a React component?")),{$$typeof:s,render:e}},Ce.isValidElement=Z,Ce.lazy=function(e){var t,r,n={$$typeof:y,_ctor:e,_status:-1,_result:null};return Object.defineProperties(n,{defaultProps:{configurable:!0,get:function(){return t},set:function(e){I("React.lazy(...): It is not supported to assign `defaultProps` to a lazy component import. Either specify them where the component is defined, or create a wrapping component around it."),t=e,Object.defineProperty(n,"defaultProps",{enumerable:!0})}},propTypes:{configurable:!0,get:function(){return r},set:function(e){I("React.lazy(...): It is not supported to assign `propTypes` to a lazy component import. Either specify them where the component is defined, or create a wrapping component around it."),r=e,Object.defineProperty(n,"propTypes",{enumerable:!0})}}}),n},Ce.memo=function(e,t){return de(e)||I("memo: The first argument must be a component. Instead received: %s",null===e?"null":typeof e),{$$typeof:p,type:e,compare:void 0===t?null:t}},Ce.useCallback=function(e,t){return me().useCallback(e,t)},Ce.useContext=function(e,t){var r,n=me();return void 0!==t&&I("useContext() second argument is reserved for future use in React. Passing it is not supported. You passed: %s.%s",t,"number"==typeof t&&Array.isArray(arguments[2])?"\n\nDid you call array.map(useContext)? Calling Hooks inside a loop is not supported. Learn more at https://fb.me/rules-of-hooks":""),void 0!==e._context&&((r=e._context).Consumer===e?I("Calling useContext(Context.Consumer) is not supported, may cause bugs, and will be removed in a future major release. Did you mean to call useContext(Context) instead?"):r.Provider===e&&I("Calling useContext(Context.Provider) is not supported. Did you mean to call useContext(Context) instead?")),n.useContext(e,t)},Ce.useDebugValue=function(e,t){return me().useDebugValue(e,t)},Ce.useEffect=function(e,t){return me().useEffect(e,t)},Ce.useImperativeHandle=function(e,t,r){return me().useImperativeHandle(e,t,r)},Ce.useLayoutEffect=function(e,t){return me().useLayoutEffect(e,t)},Ce.useMemo=function(e,t){return me().useMemo(e,t)},Ce.useReducer=function(e,t,r){return me().useReducer(e,t,r)},Ce.useRef=function(e){return me().useRef(e)},Ce.useState=function(e){return me().useState(e)},Ce.version="16.14.0"}()}.call(this,ke("Xp6JUx"))},{Xp6JUx:2,"object-assign":1,"prop-types/checkPropTypes":3}],12:[function(e,t,r){"use strict";var f=e("object-assign"),n="function"==typeof Symbol&&Symbol.for,l=n?Symbol.for("react.element"):60103,s=n?Symbol.for("react.portal"):60106,o=n?Symbol.for("react.fragment"):60107,i=n?Symbol.for("react.strict_mode"):60108,a=n?Symbol.for("react.profiler"):60114,u=n?Symbol.for("react.provider"):60109,c=n?Symbol.for("react.context"):60110,p=n?Symbol.for("react.forward_ref"):60112,e=n?Symbol.for("react.suspense"):60113,y=n?Symbol.for("react.memo"):60115,d=n?Symbol.for("react.lazy"):60116,m="function"==typeof Symbol&&Symbol.iterator;function h(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,r=1;r<arguments.length;r++)t+="&args[]="+encodeURIComponent(arguments[r]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var b={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},v={};function g(e,t,r){this.props=e,this.context=t,this.refs=v,this.updater=r||b}function w(){}function _(e,t,r){this.props=e,this.context=t,this.refs=v,this.updater=r||b}g.prototype.isReactComponent={},g.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error(h(85));this.updater.enqueueSetState(this,e,t,"setState")},g.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},w.prototype=g.prototype;n=_.prototype=new w;n.constructor=_,f(n,g.prototype),n.isPureReactComponent=!0;var S={current:null},j=Object.prototype.hasOwnProperty,O={key:!0,ref:!0,__self:!0,__source:!0};function x(e,t,r){var n,o={},i=null,a=null;if(null!=t)for(n in void 0!==t.ref&&(a=t.ref),void 0!==t.key&&(i=""+t.key),t)j.call(t,n)&&!O.hasOwnProperty(n)&&(o[n]=t[n]);var u=arguments.length-2;if(1===u)o.children=r;else if(1<u){for(var c=Array(u),s=0;s<u;s++)c[s]=arguments[s+2];o.children=c}if(e&&e.defaultProps)for(n in u=e.defaultProps)void 0===o[n]&&(o[n]=u[n]);return{$$typeof:l,type:e,key:i,ref:a,props:o,_owner:S.current}}function P(e){return"object"==typeof e&&null!==e&&e.$$typeof===l}var k=/\/+/g,C=[];function $(e,t,r,n){if(C.length){var o=C.pop();return o.result=e,o.keyPrefix=t,o.func=r,o.context=n,o.count=0,o}return{result:e,keyPrefix:t,func:r,context:n,count:0}}function R(e){e.result=null,e.keyPrefix=null,e.func=null,e.context=null,e.count=0,C.length<10&&C.push(e)}function E(e,t,r){return null==e?0:function e(t,r,n,o){var i=!1;if(null===(t="undefined"==(u=typeof t)||"boolean"===u?null:t))i=!0;else switch(u){case"string":case"number":i=!0;break;case"object":switch(t.$$typeof){case l:case s:i=!0}}if(i)return n(o,t,""===r?"."+T(t,0):r),1;if(i=0,r=""===r?".":r+":",Array.isArray(t))for(var a=0;a<t.length;a++){var u,c=r+T(u=t[a],a);i+=e(u,c,n,o)}else if("function"==typeof(c=null!==t&&"object"==typeof t&&"function"==typeof(c=m&&t[m]||t["@@iterator"])?c:null))for(t=c.call(t),a=0;!(u=t.next()).done;)i+=e(u=u.value,c=r+T(u,a++),n,o);else if("object"===u)throw n=""+t,Error(h(31,"[object Object]"===n?"object with keys {"+Object.keys(t).join(", ")+"}":n,""));return i}(e,"",t,r)}function T(e,t){return"object"==typeof e&&null!==e&&null!=e.key?(e=e.key,r={"=":"=0",":":"=2"},"$"+(""+e).replace(/[=:]/g,function(e){return r[e]})):t.toString(36);var r}function I(e,t){e.func.call(e.context,t,e.count++)}function N(e,t,r){var n=e.result,o=e.keyPrefix;e=e.func.call(e.context,t,e.count++),Array.isArray(e)?A(e,n,r,function(e){return e}):null!=e&&(P(e)&&(r=o+(!(o=e).key||t&&t.key===e.key?"":(""+e.key).replace(k,"$&/")+"/")+r,e={$$typeof:l,type:o.type,key:r,ref:o.ref,props:o.props,_owner:o._owner}),n.push(e))}function A(e,t,r,n,o){var i="";E(e,N,t=$(t,i=null!=r?(""+r).replace(k,"$&/")+"/":i,n,o)),R(t)}var D={current:null};function M(){var e=D.current;if(null===e)throw Error(h(321));return e}n={ReactCurrentDispatcher:D,ReactCurrentBatchConfig:{suspense:null},ReactCurrentOwner:S,IsSomeRendererActing:{current:!1},assign:f};r.Children={map:function(e,t,r){if(null==e)return e;var n=[];return A(e,n,null,t,r),n},forEach:function(e,t,r){if(null==e)return e;E(e,I,t=$(null,null,t,r)),R(t)},count:function(e){return E(e,function(){return null},null)},toArray:function(e){var t=[];return A(e,t,null,function(e){return e}),t},only:function(e){if(!P(e))throw Error(h(143));return e}},r.Component=g,r.Fragment=o,r.Profiler=a,r.PureComponent=_,r.StrictMode=i,r.Suspense=e,r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=n,r.cloneElement=function(e,t,r){if(null==e)throw Error(h(267,e));var n=f({},e.props),o=e.key,i=e.ref,a=e._owner;if(null!=t)for(u in void 0!==t.ref&&(i=t.ref,a=S.current),void 0!==t.key&&(o=""+t.key),e.type&&e.type.defaultProps&&(c=e.type.defaultProps),t)j.call(t,u)&&!O.hasOwnProperty(u)&&(n[u]=(void 0===t[u]&&void 0!==c?c:t)[u]);var u=arguments.length-2;if(1===u)n.children=r;else if(1<u){for(var c=Array(u),s=0;s<u;s++)c[s]=arguments[s+2];n.children=c}return{$$typeof:l,type:e.type,key:o,ref:i,props:n,_owner:a}},r.createContext=function(e,t){return(e={$$typeof:c,_calculateChangedBits:t=void 0===t?null:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:u,_context:e},e.Consumer=e},r.createElement=x,r.createFactory=function(e){var t=x.bind(null,e);return t.type=e,t},r.createRef=function(){return{current:null}},r.forwardRef=function(e){return{$$typeof:p,render:e}},r.isValidElement=P,r.lazy=function(e){return{$$typeof:d,_ctor:e,_status:-1,_result:null}},r.memo=function(e,t){return{$$typeof:y,type:e,compare:void 0===t?null:t}},r.useCallback=function(e,t){return M().useCallback(e,t)},r.useContext=function(e,t){return M().useContext(e,t)},r.useDebugValue=function(){},r.useEffect=function(e,t){return M().useEffect(e,t)},r.useImperativeHandle=function(e,t,r){return M().useImperativeHandle(e,t,r)},r.useLayoutEffect=function(e,t){return M().useLayoutEffect(e,t)},r.useMemo=function(e,t){return M().useMemo(e,t)},r.useReducer=function(e,t,r){return M().useReducer(e,t,r)},r.useRef=function(e){return M().useRef(e)},r.useState=function(e){return M().useState(e)},r.version="16.14.0"},{"object-assign":1}],13:[function(t,r,e){!function(e){"use strict";"production"===e.env.NODE_ENV?r.exports=t("./cjs/react.production.min.js"):r.exports=t("./cjs/react.development.js")}.call(this,t("Xp6JUx"))},{"./cjs/react.development.js":11,"./cjs/react.production.min.js":12,Xp6JUx:2}],14:[function(e,t,r){"use strict";function a(e){return(a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var n,i=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!==a(e)&&"function"!=typeof e)return{default:e};var t=c();if(t&&t.has(e))return t.get(e);var r,n={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(r in e){var i;Object.prototype.hasOwnProperty.call(e,r)&&((i=o?Object.getOwnPropertyDescriptor(e,r):null)&&(i.get||i.set)?Object.defineProperty(n,r,i):n[r]=e[r])}n.default=e,t&&t.set(e,n);return n}(e("react")),u=(n=e("prop-types"))&&n.__esModule?n:{default:n};function c(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return c=function(){return e},e}function s(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function f(e,t){return(f=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function l(r){var n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}();return function(){var e,t=o(r);return e=n?(e=o(this).constructor,Reflect.construct(t,arguments,e)):t.apply(this,arguments),t=this,!(e=e)||"object"!==a(e)&&"function"!=typeof e?function(e){if(void 0!==e)return e;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(t):e}}function o(e){return(o=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var p,y,d,m=function(){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&f(e,t)}(o,i.Component);var e,t,r,n=l(o);function o(e){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,o),(e=n.call(this,e)).state={error:null,isLoading:!0,form:null},e}return e=o,r=[{key:"propTypes",get:function(){return{form_id:u.default.number,show_title:u.default.string,show_desc:u.default.string}}}],(t=[{key:"componentDidUpdate",value:function(e){e.form_id===this.props.form_id&&e.show_title===this.props.show_title&&e.show_desc===this.props.show_desc||this.componentDidMount()}},{key:"componentDidMount",value:function(){var t=this,e=new FormData;e.append("nonce",wpforms_divi_builder.nonce),e.append("action","wpforms_divi_preview"),e.append("form_id",this.props.form_id),e.append("show_title",this.props.show_title),e.append("show_desc",this.props.show_desc),fetch(wpforms_divi_builder.ajax_url,{method:"POST",cache:"no-cache",credentials:"same-origin",headers:{"Content-Type":"application/x-www-form-urlencoded","Cache-Control":"no-cache"},body:new URLSearchParams(e)}).then(function(e){return e.json()}).then(function(e){t.setState({isLoading:!1,form:e.data})},function(e){t.setState({isLoading:!1,error:e})})}},{key:"render",value:function(){var e=this.state,t=e.error,r=e.isLoaded,e=e.form;return t||!e?i.default.createElement("div",{className:"wpforms-divi-form-placeholder"},i.default.createElement("img",{src:wpforms_divi_builder.placeholder}),i.default.createElement("h3",null,wpforms_divi_builder.placeholder_title)):i.default.createElement("div",{className:r?"wpforms-divi-form-preview loading":"wpforms-divi-form-preview"},i.default.createElement("div",{dangerouslySetInnerHTML:{__html:e}}))}}])&&s(e.prototype,t),r&&s(e,r),o}();d="wpforms_selector",(y="slug")in(p=m)?Object.defineProperty(p,y,{value:d,enumerable:!0,configurable:!0,writable:!0}):p[y]=d,jQuery(window).on("et_builder_api_ready",function(e,t){t.registerModules([m])})},{"prop-types":6,react:13}]},{},[14]);
assets/js/purify.min.js CHANGED
@@ -1,2 +1,2 @@
1
  /*! @license DOMPurify | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.2.2/LICENSE */
2
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).DOMPurify=t()}(this,(function(){"use strict";var e=Object.hasOwnProperty,t=Object.setPrototypeOf,n=Object.isFrozen,r=Object.getPrototypeOf,o=Object.getOwnPropertyDescriptor,i=Object.freeze,a=Object.seal,l=Object.create,c="undefined"!=typeof Reflect&&Reflect,s=c.apply,u=c.construct;s||(s=function(e,t,n){return e.apply(t,n)}),i||(i=function(e){return e}),a||(a=function(e){return e}),u||(u=function(e,t){return new(Function.prototype.bind.apply(e,[null].concat(function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}(t))))});var f,m=x(Array.prototype.forEach),d=x(Array.prototype.pop),p=x(Array.prototype.push),g=x(String.prototype.toLowerCase),h=x(String.prototype.match),y=x(String.prototype.replace),v=x(String.prototype.indexOf),b=x(String.prototype.trim),A=x(RegExp.prototype.test),T=(f=TypeError,function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return u(f,t)});function x(e){return function(t){for(var n=arguments.length,r=Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];return s(e,t,r)}}function w(e,r){t&&t(e,null);for(var o=r.length;o--;){var i=r[o];if("string"==typeof i){var a=g(i);a!==i&&(n(r)||(r[o]=a),i=a)}e[i]=!0}return e}function S(t){var n=l(null),r=void 0;for(r in t)s(e,t,[r])&&(n[r]=t[r]);return n}function k(e,t){for(;null!==e;){var n=o(e,t);if(n){if(n.get)return x(n.get);if("function"==typeof n.value)return x(n.value)}e=r(e)}return function(e){return console.warn("fallback value for",e),null}}var E=i(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),R=i(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),_=i(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),D=i(["animate","color-profile","cursor","discard","fedropshadow","feimage","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),N=i(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover"]),O=i(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),L=i(["#text"]),M=i(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","face","for","headers","height","hidden","high","href","hreflang","id","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","playsinline","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","xmlns","slot"]),F=i(["accent-height","accumulate","additive","alignment-baseline","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","targetx","targety","transform","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),C=i(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),I=i(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),z=a(/\{\{[\s\S]*|[\s\S]*\}\}/gm),U=a(/<%[\s\S]*|[\s\S]*%>/gm),H=a(/^data-[\-\w.\u00B7-\uFFFF]/),j=a(/^aria-[\-\w]+$/),P=a(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),B=a(/^(?:\w+script|data):/i),W=a(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),G="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};function q(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}var K=function(){return"undefined"==typeof window?null:window},V=function(e,t){if("object"!==(void 0===e?"undefined":G(e))||"function"!=typeof e.createPolicy)return null;var n=null,r="data-tt-policy-suffix";t.currentScript&&t.currentScript.hasAttribute(r)&&(n=t.currentScript.getAttribute(r));var o="dompurify"+(n?"#"+n:"");try{return e.createPolicy(o,{createHTML:function(e){return e}})}catch(e){return console.warn("TrustedTypes policy "+o+" could not be created."),null}};return function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:K(),n=function(t){return e(t)};if(n.version="2.2.8",n.removed=[],!t||!t.document||9!==t.document.nodeType)return n.isSupported=!1,n;var r=t.document,o=t.document,a=t.DocumentFragment,l=t.HTMLTemplateElement,c=t.Node,s=t.Element,u=t.NodeFilter,f=t.NamedNodeMap,x=void 0===f?t.NamedNodeMap||t.MozNamedAttrMap:f,Y=t.Text,X=t.Comment,$=t.DOMParser,Z=t.trustedTypes,J=s.prototype,Q=k(J,"cloneNode"),ee=k(J,"nextSibling"),te=k(J,"childNodes"),ne=k(J,"parentNode");if("function"==typeof l){var re=o.createElement("template");re.content&&re.content.ownerDocument&&(o=re.content.ownerDocument)}var oe=V(Z,r),ie=oe&&Ie?oe.createHTML(""):"",ae=o,le=ae.implementation,ce=ae.createNodeIterator,se=ae.createDocumentFragment,ue=r.importNode,fe={};try{fe=S(o).documentMode?o.documentMode:{}}catch(e){}var me={};n.isSupported="function"==typeof ne&&le&&void 0!==le.createHTMLDocument&&9!==fe;var de=z,pe=U,ge=H,he=j,ye=B,ve=W,be=P,Ae=null,Te=w({},[].concat(q(E),q(R),q(_),q(N),q(L))),xe=null,we=w({},[].concat(q(M),q(F),q(C),q(I))),Se=null,ke=null,Ee=!0,Re=!0,_e=!1,De=!1,Ne=!1,Oe=!1,Le=!1,Me=!1,Fe=!1,Ce=!0,Ie=!1,ze=!0,Ue=!0,He=!1,je={},Pe=w({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),Be=null,We=w({},["audio","video","img","source","image","track"]),Ge=null,qe=w({},["alt","class","for","id","label","name","pattern","placeholder","summary","title","value","style","xmlns"]),Ke="http://www.w3.org/1998/Math/MathML",Ve="http://www.w3.org/2000/svg",Ye="http://www.w3.org/1999/xhtml",Xe=Ye,$e=null,Ze=o.createElement("form"),Je=function(e){$e&&$e===e||(e&&"object"===(void 0===e?"undefined":G(e))||(e={}),e=S(e),Ae="ALLOWED_TAGS"in e?w({},e.ALLOWED_TAGS):Te,xe="ALLOWED_ATTR"in e?w({},e.ALLOWED_ATTR):we,Ge="ADD_URI_SAFE_ATTR"in e?w(S(qe),e.ADD_URI_SAFE_ATTR):qe,Be="ADD_DATA_URI_TAGS"in e?w(S(We),e.ADD_DATA_URI_TAGS):We,Se="FORBID_TAGS"in e?w({},e.FORBID_TAGS):{},ke="FORBID_ATTR"in e?w({},e.FORBID_ATTR):{},je="USE_PROFILES"in e&&e.USE_PROFILES,Ee=!1!==e.ALLOW_ARIA_ATTR,Re=!1!==e.ALLOW_DATA_ATTR,_e=e.ALLOW_UNKNOWN_PROTOCOLS||!1,De=e.SAFE_FOR_TEMPLATES||!1,Ne=e.WHOLE_DOCUMENT||!1,Me=e.RETURN_DOM||!1,Fe=e.RETURN_DOM_FRAGMENT||!1,Ce=!1!==e.RETURN_DOM_IMPORT,Ie=e.RETURN_TRUSTED_TYPE||!1,Le=e.FORCE_BODY||!1,ze=!1!==e.SANITIZE_DOM,Ue=!1!==e.KEEP_CONTENT,He=e.IN_PLACE||!1,be=e.ALLOWED_URI_REGEXP||be,Xe=e.NAMESPACE||Xe,De&&(Re=!1),Fe&&(Me=!0),je&&(Ae=w({},[].concat(q(L))),xe=[],!0===je.html&&(w(Ae,E),w(xe,M)),!0===je.svg&&(w(Ae,R),w(xe,F),w(xe,I)),!0===je.svgFilters&&(w(Ae,_),w(xe,F),w(xe,I)),!0===je.mathMl&&(w(Ae,N),w(xe,C),w(xe,I))),e.ADD_TAGS&&(Ae===Te&&(Ae=S(Ae)),w(Ae,e.ADD_TAGS)),e.ADD_ATTR&&(xe===we&&(xe=S(xe)),w(xe,e.ADD_ATTR)),e.ADD_URI_SAFE_ATTR&&w(Ge,e.ADD_URI_SAFE_ATTR),Ue&&(Ae["#text"]=!0),Ne&&w(Ae,["html","head","body"]),Ae.table&&(w(Ae,["tbody"]),delete Se.tbody),i&&i(e),$e=e)},Qe=w({},["mi","mo","mn","ms","mtext"]),et=w({},["foreignobject","desc","title","annotation-xml"]),tt=w({},R);w(tt,_),w(tt,D);var nt=w({},N);w(nt,O);var rt=function(e){var t=ne(e);t&&t.tagName||(t={namespaceURI:Ye,tagName:"template"});var n=g(e.tagName),r=g(t.tagName);if(e.namespaceURI===Ve)return t.namespaceURI===Ye?"svg"===n:t.namespaceURI===Ke?"svg"===n&&("annotation-xml"===r||Qe[r]):Boolean(tt[n]);if(e.namespaceURI===Ke)return t.namespaceURI===Ye?"math"===n:t.namespaceURI===Ve?"math"===n&&et[r]:Boolean(nt[n]);if(e.namespaceURI===Ye){if(t.namespaceURI===Ve&&!et[r])return!1;if(t.namespaceURI===Ke&&!Qe[r])return!1;var o=w({},["title","style","font","a","script"]);return!nt[n]&&(o[n]||!tt[n])}return!1},ot=function(e){p(n.removed,{element:e});try{e.parentNode.removeChild(e)}catch(t){try{e.outerHTML=ie}catch(t){e.remove()}}},it=function(e,t){try{p(n.removed,{attribute:t.getAttributeNode(e),from:t})}catch(e){p(n.removed,{attribute:null,from:t})}if(t.removeAttribute(e),"is"===e&&!xe[e])if(Me||Fe)try{ot(t)}catch(e){}else try{t.setAttribute(e,"")}catch(e){}},at=function(e){var t=void 0,n=void 0;if(Le)e="<remove></remove>"+e;else{var r=h(e,/^[\r\n\t ]+/);n=r&&r[0]}var i=oe?oe.createHTML(e):e;if(Xe===Ye)try{t=(new $).parseFromString(i,"text/html")}catch(e){}t&&t.documentElement||((t=le.createDocument(Xe,"template",null)).documentElement.innerHTML=i);var a=t.body||t.documentElement;return e&&n&&a.insertBefore(o.createTextNode(n),a.childNodes[0]||null),Ne?t.documentElement:a},lt=function(e){return ce.call(e.ownerDocument||e,e,u.SHOW_ELEMENT|u.SHOW_COMMENT|u.SHOW_TEXT,(function(){return u.FILTER_ACCEPT}),!1)},ct=function(e){return!(e instanceof Y||e instanceof X)&&!("string"==typeof e.nodeName&&"string"==typeof e.textContent&&"function"==typeof e.removeChild&&e.attributes instanceof x&&"function"==typeof e.removeAttribute&&"function"==typeof e.setAttribute&&"string"==typeof e.namespaceURI&&"function"==typeof e.insertBefore)},st=function(e){return"object"===(void 0===c?"undefined":G(c))?e instanceof c:e&&"object"===(void 0===e?"undefined":G(e))&&"number"==typeof e.nodeType&&"string"==typeof e.nodeName},ut=function(e,t,r){me[e]&&m(me[e],(function(e){e.call(n,t,r,$e)}))},ft=function(e){var t=void 0;if(ut("beforeSanitizeElements",e,null),ct(e))return ot(e),!0;if(h(e.nodeName,/[\u0080-\uFFFF]/))return ot(e),!0;var r=g(e.nodeName);if(ut("uponSanitizeElement",e,{tagName:r,allowedTags:Ae}),!st(e.firstElementChild)&&(!st(e.content)||!st(e.content.firstElementChild))&&A(/<[/\w]/g,e.innerHTML)&&A(/<[/\w]/g,e.textContent))return ot(e),!0;if(!Ae[r]||Se[r]){if(Ue&&!Pe[r]){var o=ne(e)||e.parentNode,i=te(e)||e.childNodes;if(i&&o)for(var a=i.length-1;a>=0;--a)o.insertBefore(Q(i[a],!0),ee(e))}return ot(e),!0}return e instanceof s&&!rt(e)?(ot(e),!0):"noscript"!==r&&"noembed"!==r||!A(/<\/no(script|embed)/i,e.innerHTML)?(De&&3===e.nodeType&&(t=e.textContent,t=y(t,de," "),t=y(t,pe," "),e.textContent!==t&&(p(n.removed,{element:e.cloneNode()}),e.textContent=t)),ut("afterSanitizeElements",e,null),!1):(ot(e),!0)},mt=function(e,t,n){if(ze&&("id"===t||"name"===t)&&(n in o||n in Ze))return!1;if(Re&&A(ge,t));else if(Ee&&A(he,t));else{if(!xe[t]||ke[t])return!1;if(Ge[t]);else if(A(be,y(n,ve,"")));else if("src"!==t&&"xlink:href"!==t&&"href"!==t||"script"===e||0!==v(n,"data:")||!Be[e]){if(_e&&!A(ye,y(n,ve,"")));else if(n)return!1}else;}return!0},dt=function(e){var t=void 0,r=void 0,o=void 0,i=void 0;ut("beforeSanitizeAttributes",e,null);var a=e.attributes;if(a){var l={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:xe};for(i=a.length;i--;){var c=t=a[i],s=c.name,u=c.namespaceURI;if(r=b(t.value),o=g(s),l.attrName=o,l.attrValue=r,l.keepAttr=!0,l.forceKeepAttr=void 0,ut("uponSanitizeAttribute",e,l),r=l.attrValue,!l.forceKeepAttr&&(it(s,e),l.keepAttr))if(A(/\/>/i,r))it(s,e);else{De&&(r=y(r,de," "),r=y(r,pe," "));var f=e.nodeName.toLowerCase();if(mt(f,o,r))try{u?e.setAttributeNS(u,s,r):e.setAttribute(s,r),d(n.removed)}catch(e){}}}ut("afterSanitizeAttributes",e,null)}},pt=function e(t){var n=void 0,r=lt(t);for(ut("beforeSanitizeShadowDOM",t,null);n=r.nextNode();)ut("uponSanitizeShadowNode",n,null),ft(n)||(n.content instanceof a&&e(n.content),dt(n));ut("afterSanitizeShadowDOM",t,null)};return n.sanitize=function(e,o){var i=void 0,l=void 0,s=void 0,u=void 0,f=void 0;if(e||(e="\x3c!--\x3e"),"string"!=typeof e&&!st(e)){if("function"!=typeof e.toString)throw T("toString is not a function");if("string"!=typeof(e=e.toString()))throw T("dirty is not a string, aborting")}if(!n.isSupported){if("object"===G(t.toStaticHTML)||"function"==typeof t.toStaticHTML){if("string"==typeof e)return t.toStaticHTML(e);if(st(e))return t.toStaticHTML(e.outerHTML)}return e}if(Oe||Je(o),n.removed=[],"string"==typeof e&&(He=!1),He);else if(e instanceof c)1===(l=(i=at("\x3c!----\x3e")).ownerDocument.importNode(e,!0)).nodeType&&"BODY"===l.nodeName||"HTML"===l.nodeName?i=l:i.appendChild(l);else{if(!Me&&!De&&!Ne&&-1===e.indexOf("<"))return oe&&Ie?oe.createHTML(e):e;if(!(i=at(e)))return Me?null:ie}i&&Le&&ot(i.firstChild);for(var m=lt(He?e:i);s=m.nextNode();)3===s.nodeType&&s===u||ft(s)||(s.content instanceof a&&pt(s.content),dt(s),u=s);if(u=null,He)return e;if(Me){if(Fe)for(f=se.call(i.ownerDocument);i.firstChild;)f.appendChild(i.firstChild);else f=i;return Ce&&(f=ue.call(r,f,!0)),f}var d=Ne?i.outerHTML:i.innerHTML;return De&&(d=y(d,de," "),d=y(d,pe," ")),oe&&Ie?oe.createHTML(d):d},n.setConfig=function(e){Je(e),Oe=!0},n.clearConfig=function(){$e=null,Oe=!1},n.isValidAttribute=function(e,t,n){$e||Je({});var r=g(e),o=g(t);return mt(r,o,n)},n.addHook=function(e,t){"function"==typeof t&&(me[e]=me[e]||[],p(me[e],t))},n.removeHook=function(e){me[e]&&d(me[e])},n.removeHooks=function(e){me[e]&&(me[e]=[])},n.removeAllHooks=function(){me={}},n}()}));
1
  /*! @license DOMPurify | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.2.2/LICENSE */
2
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).DOMPurify=t()}(this,(function(){"use strict";var e=Object.hasOwnProperty,t=Object.setPrototypeOf,n=Object.isFrozen,r=Object.getPrototypeOf,o=Object.getOwnPropertyDescriptor,i=Object.freeze,a=Object.seal,l=Object.create,c="undefined"!=typeof Reflect&&Reflect,s=c.apply,u=c.construct;s||(s=function(e,t,n){return e.apply(t,n)}),i||(i=function(e){return e}),a||(a=function(e){return e}),u||(u=function(e,t){return new(Function.prototype.bind.apply(e,[null].concat(function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}(t))))});var f,m=x(Array.prototype.forEach),d=x(Array.prototype.pop),p=x(Array.prototype.push),g=x(String.prototype.toLowerCase),h=x(String.prototype.match),y=x(String.prototype.replace),v=x(String.prototype.indexOf),b=x(String.prototype.trim),A=x(RegExp.prototype.test),T=(f=TypeError,function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return u(f,t)});function x(e){return function(t){for(var n=arguments.length,r=Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];return s(e,t,r)}}function w(e,r){t&&t(e,null);for(var o=r.length;o--;){var i=r[o];if("string"==typeof i){var a=g(i);a!==i&&(n(r)||(r[o]=a),i=a)}e[i]=!0}return e}function S(t){var n=l(null),r=void 0;for(r in t)s(e,t,[r])&&(n[r]=t[r]);return n}function k(e,t){for(;null!==e;){var n=o(e,t);if(n){if(n.get)return x(n.get);if("function"==typeof n.value)return x(n.value)}e=r(e)}return function(e){return console.warn("fallback value for",e),null}}var D=i(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),E=i(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),R=i(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),_=i(["animate","color-profile","cursor","discard","fedropshadow","feimage","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),N=i(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover"]),O=i(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),M=i(["#text"]),L=i(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","face","for","headers","height","hidden","high","href","hreflang","id","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","playsinline","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","xmlns","slot"]),F=i(["accent-height","accumulate","additive","alignment-baseline","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","targetx","targety","transform","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),I=i(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),C=i(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),z=a(/\{\{[\s\S]*|[\s\S]*\}\}/gm),U=a(/<%[\s\S]*|[\s\S]*%>/gm),H=a(/^data-[\-\w.\u00B7-\uFFFF]/),j=a(/^aria-[\-\w]+$/),P=a(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),B=a(/^(?:\w+script|data):/i),W=a(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),G="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};function q(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}var K=function(){return"undefined"==typeof window?null:window},V=function(e,t){if("object"!==(void 0===e?"undefined":G(e))||"function"!=typeof e.createPolicy)return null;var n=null,r="data-tt-policy-suffix";t.currentScript&&t.currentScript.hasAttribute(r)&&(n=t.currentScript.getAttribute(r));var o="dompurify"+(n?"#"+n:"");try{return e.createPolicy(o,{createHTML:function(e){return e}})}catch(e){return console.warn("TrustedTypes policy "+o+" could not be created."),null}};return function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:K(),n=function(t){return e(t)};if(n.version="2.2.9",n.removed=[],!t||!t.document||9!==t.document.nodeType)return n.isSupported=!1,n;var r=t.document,o=t.document,a=t.DocumentFragment,l=t.HTMLTemplateElement,c=t.Node,s=t.Element,u=t.NodeFilter,f=t.NamedNodeMap,x=void 0===f?t.NamedNodeMap||t.MozNamedAttrMap:f,Y=t.Text,X=t.Comment,$=t.DOMParser,Z=t.trustedTypes,J=s.prototype,Q=k(J,"cloneNode"),ee=k(J,"nextSibling"),te=k(J,"childNodes"),ne=k(J,"parentNode");if("function"==typeof l){var re=o.createElement("template");re.content&&re.content.ownerDocument&&(o=re.content.ownerDocument)}var oe=V(Z,r),ie=oe&&Ce?oe.createHTML(""):"",ae=o,le=ae.implementation,ce=ae.createNodeIterator,se=ae.createDocumentFragment,ue=r.importNode,fe={};try{fe=S(o).documentMode?o.documentMode:{}}catch(e){}var me={};n.isSupported="function"==typeof ne&&le&&void 0!==le.createHTMLDocument&&9!==fe;var de=z,pe=U,ge=H,he=j,ye=B,ve=W,be=P,Ae=null,Te=w({},[].concat(q(D),q(E),q(R),q(N),q(M))),xe=null,we=w({},[].concat(q(L),q(F),q(I),q(C))),Se=null,ke=null,De=!0,Ee=!0,Re=!1,_e=!1,Ne=!1,Oe=!1,Me=!1,Le=!1,Fe=!1,Ie=!0,Ce=!1,ze=!0,Ue=!0,He=!1,je={},Pe=w({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),Be=null,We=w({},["audio","video","img","source","image","track"]),Ge=null,qe=w({},["alt","class","for","id","label","name","pattern","placeholder","summary","title","value","style","xmlns"]),Ke="http://www.w3.org/1998/Math/MathML",Ve="http://www.w3.org/2000/svg",Ye="http://www.w3.org/1999/xhtml",Xe=Ye,$e=!1,Ze=null,Je=o.createElement("form"),Qe=function(e){Ze&&Ze===e||(e&&"object"===(void 0===e?"undefined":G(e))||(e={}),e=S(e),Ae="ALLOWED_TAGS"in e?w({},e.ALLOWED_TAGS):Te,xe="ALLOWED_ATTR"in e?w({},e.ALLOWED_ATTR):we,Ge="ADD_URI_SAFE_ATTR"in e?w(S(qe),e.ADD_URI_SAFE_ATTR):qe,Be="ADD_DATA_URI_TAGS"in e?w(S(We),e.ADD_DATA_URI_TAGS):We,Se="FORBID_TAGS"in e?w({},e.FORBID_TAGS):{},ke="FORBID_ATTR"in e?w({},e.FORBID_ATTR):{},je="USE_PROFILES"in e&&e.USE_PROFILES,De=!1!==e.ALLOW_ARIA_ATTR,Ee=!1!==e.ALLOW_DATA_ATTR,Re=e.ALLOW_UNKNOWN_PROTOCOLS||!1,_e=e.SAFE_FOR_TEMPLATES||!1,Ne=e.WHOLE_DOCUMENT||!1,Le=e.RETURN_DOM||!1,Fe=e.RETURN_DOM_FRAGMENT||!1,Ie=!1!==e.RETURN_DOM_IMPORT,Ce=e.RETURN_TRUSTED_TYPE||!1,Me=e.FORCE_BODY||!1,ze=!1!==e.SANITIZE_DOM,Ue=!1!==e.KEEP_CONTENT,He=e.IN_PLACE||!1,be=e.ALLOWED_URI_REGEXP||be,Xe=e.NAMESPACE||Ye,_e&&(Ee=!1),Fe&&(Le=!0),je&&(Ae=w({},[].concat(q(M))),xe=[],!0===je.html&&(w(Ae,D),w(xe,L)),!0===je.svg&&(w(Ae,E),w(xe,F),w(xe,C)),!0===je.svgFilters&&(w(Ae,R),w(xe,F),w(xe,C)),!0===je.mathMl&&(w(Ae,N),w(xe,I),w(xe,C))),e.ADD_TAGS&&(Ae===Te&&(Ae=S(Ae)),w(Ae,e.ADD_TAGS)),e.ADD_ATTR&&(xe===we&&(xe=S(xe)),w(xe,e.ADD_ATTR)),e.ADD_URI_SAFE_ATTR&&w(Ge,e.ADD_URI_SAFE_ATTR),Ue&&(Ae["#text"]=!0),Ne&&w(Ae,["html","head","body"]),Ae.table&&(w(Ae,["tbody"]),delete Se.tbody),i&&i(e),Ze=e)},et=w({},["mi","mo","mn","ms","mtext"]),tt=w({},["foreignobject","desc","title","annotation-xml"]),nt=w({},E);w(nt,R),w(nt,_);var rt=w({},N);w(rt,O);var ot=function(e){var t=ne(e);t&&t.tagName||(t={namespaceURI:Ye,tagName:"template"});var n=g(e.tagName),r=g(t.tagName);if(e.namespaceURI===Ve)return t.namespaceURI===Ye?"svg"===n:t.namespaceURI===Ke?"svg"===n&&("annotation-xml"===r||et[r]):Boolean(nt[n]);if(e.namespaceURI===Ke)return t.namespaceURI===Ye?"math"===n:t.namespaceURI===Ve?"math"===n&&tt[r]:Boolean(rt[n]);if(e.namespaceURI===Ye){if(t.namespaceURI===Ve&&!tt[r])return!1;if(t.namespaceURI===Ke&&!et[r])return!1;var o=w({},["title","style","font","a","script"]);return!rt[n]&&(o[n]||!nt[n])}return!1},it=function(e){p(n.removed,{element:e});try{e.parentNode.removeChild(e)}catch(t){try{e.outerHTML=ie}catch(t){e.remove()}}},at=function(e,t){try{p(n.removed,{attribute:t.getAttributeNode(e),from:t})}catch(e){p(n.removed,{attribute:null,from:t})}if(t.removeAttribute(e),"is"===e&&!xe[e])if(Le||Fe)try{it(t)}catch(e){}else try{t.setAttribute(e,"")}catch(e){}},lt=function(e){var t=void 0,n=void 0;if(Me)e="<remove></remove>"+e;else{var r=h(e,/^[\r\n\t ]+/);n=r&&r[0]}var i=oe?oe.createHTML(e):e;if(Xe===Ye)try{t=(new $).parseFromString(i,"text/html")}catch(e){}if(!t||!t.documentElement){t=le.createDocument(Xe,"template",null);try{t.documentElement.innerHTML=$e?"":i}catch(e){}}var a=t.body||t.documentElement;return e&&n&&a.insertBefore(o.createTextNode(n),a.childNodes[0]||null),Ne?t.documentElement:a},ct=function(e){return ce.call(e.ownerDocument||e,e,u.SHOW_ELEMENT|u.SHOW_COMMENT|u.SHOW_TEXT,null,!1)},st=function(e){return!(e instanceof Y||e instanceof X)&&!("string"==typeof e.nodeName&&"string"==typeof e.textContent&&"function"==typeof e.removeChild&&e.attributes instanceof x&&"function"==typeof e.removeAttribute&&"function"==typeof e.setAttribute&&"string"==typeof e.namespaceURI&&"function"==typeof e.insertBefore)},ut=function(e){return"object"===(void 0===c?"undefined":G(c))?e instanceof c:e&&"object"===(void 0===e?"undefined":G(e))&&"number"==typeof e.nodeType&&"string"==typeof e.nodeName},ft=function(e,t,r){me[e]&&m(me[e],(function(e){e.call(n,t,r,Ze)}))},mt=function(e){var t=void 0;if(ft("beforeSanitizeElements",e,null),st(e))return it(e),!0;if(h(e.nodeName,/[\u0080-\uFFFF]/))return it(e),!0;var r=g(e.nodeName);if(ft("uponSanitizeElement",e,{tagName:r,allowedTags:Ae}),!ut(e.firstElementChild)&&(!ut(e.content)||!ut(e.content.firstElementChild))&&A(/<[/\w]/g,e.innerHTML)&&A(/<[/\w]/g,e.textContent))return it(e),!0;if(!Ae[r]||Se[r]){if(Ue&&!Pe[r]){var o=ne(e)||e.parentNode,i=te(e)||e.childNodes;if(i&&o)for(var a=i.length-1;a>=0;--a)o.insertBefore(Q(i[a],!0),ee(e))}return it(e),!0}return e instanceof s&&!ot(e)?(it(e),!0):"noscript"!==r&&"noembed"!==r||!A(/<\/no(script|embed)/i,e.innerHTML)?(_e&&3===e.nodeType&&(t=e.textContent,t=y(t,de," "),t=y(t,pe," "),e.textContent!==t&&(p(n.removed,{element:e.cloneNode()}),e.textContent=t)),ft("afterSanitizeElements",e,null),!1):(it(e),!0)},dt=function(e,t,n){if(ze&&("id"===t||"name"===t)&&(n in o||n in Je))return!1;if(Ee&&A(ge,t));else if(De&&A(he,t));else{if(!xe[t]||ke[t])return!1;if(Ge[t]);else if(A(be,y(n,ve,"")));else if("src"!==t&&"xlink:href"!==t&&"href"!==t||"script"===e||0!==v(n,"data:")||!Be[e]){if(Re&&!A(ye,y(n,ve,"")));else if(n)return!1}else;}return!0},pt=function(e){var t=void 0,r=void 0,o=void 0,i=void 0;ft("beforeSanitizeAttributes",e,null);var a=e.attributes;if(a){var l={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:xe};for(i=a.length;i--;){var c=t=a[i],s=c.name,u=c.namespaceURI;if(r=b(t.value),o=g(s),l.attrName=o,l.attrValue=r,l.keepAttr=!0,l.forceKeepAttr=void 0,ft("uponSanitizeAttribute",e,l),r=l.attrValue,!l.forceKeepAttr&&(at(s,e),l.keepAttr))if(A(/\/>/i,r))at(s,e);else{_e&&(r=y(r,de," "),r=y(r,pe," "));var f=e.nodeName.toLowerCase();if(dt(f,o,r))try{u?e.setAttributeNS(u,s,r):e.setAttribute(s,r),d(n.removed)}catch(e){}}}ft("afterSanitizeAttributes",e,null)}},gt=function e(t){var n=void 0,r=ct(t);for(ft("beforeSanitizeShadowDOM",t,null);n=r.nextNode();)ft("uponSanitizeShadowNode",n,null),mt(n)||(n.content instanceof a&&e(n.content),pt(n));ft("afterSanitizeShadowDOM",t,null)};return n.sanitize=function(e,o){var i=void 0,l=void 0,s=void 0,u=void 0,f=void 0;if(($e=!e)&&(e="\x3c!--\x3e"),"string"!=typeof e&&!ut(e)){if("function"!=typeof e.toString)throw T("toString is not a function");if("string"!=typeof(e=e.toString()))throw T("dirty is not a string, aborting")}if(!n.isSupported){if("object"===G(t.toStaticHTML)||"function"==typeof t.toStaticHTML){if("string"==typeof e)return t.toStaticHTML(e);if(ut(e))return t.toStaticHTML(e.outerHTML)}return e}if(Oe||Qe(o),n.removed=[],"string"==typeof e&&(He=!1),He);else if(e instanceof c)1===(l=(i=lt("\x3c!----\x3e")).ownerDocument.importNode(e,!0)).nodeType&&"BODY"===l.nodeName||"HTML"===l.nodeName?i=l:i.appendChild(l);else{if(!Le&&!_e&&!Ne&&-1===e.indexOf("<"))return oe&&Ce?oe.createHTML(e):e;if(!(i=lt(e)))return Le?null:ie}i&&Me&&it(i.firstChild);for(var m=ct(He?e:i);s=m.nextNode();)3===s.nodeType&&s===u||mt(s)||(s.content instanceof a&&gt(s.content),pt(s),u=s);if(u=null,He)return e;if(Le){if(Fe)for(f=se.call(i.ownerDocument);i.firstChild;)f.appendChild(i.firstChild);else f=i;return Ie&&(f=ue.call(r,f,!0)),f}var d=Ne?i.outerHTML:i.innerHTML;return _e&&(d=y(d,de," "),d=y(d,pe," ")),oe&&Ce?oe.createHTML(d):d},n.setConfig=function(e){Qe(e),Oe=!0},n.clearConfig=function(){Ze=null,Oe=!1},n.isValidAttribute=function(e,t,n){Ze||Qe({});var r=g(e),o=g(t);return dt(r,o,n)},n.addHook=function(e,t){"function"==typeof t&&(me[e]=me[e]||[],p(me[e],t))},n.removeHook=function(e){me[e]&&d(me[e])},n.removeHooks=function(e){me[e]&&(me[e]=[])},n.removeAllHooks=function(){me={}},n}()}));
assets/js/text-limit.js CHANGED
@@ -141,6 +141,30 @@
141
  }
142
  }
143
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
144
  /**
145
  * Paste event higher order function for words limit.
146
  *
@@ -155,9 +179,16 @@
155
  return function( e ) {
156
 
157
  e.preventDefault();
158
- var pastedText = getPastedText( e ).trim().split( /\s+/ );
159
- pastedText.splice( limit, pastedText.length );
160
- this.value = pastedText.join( ' ' );
 
 
 
 
 
 
 
161
  };
162
  }
163
 
@@ -202,6 +233,7 @@
202
 
203
  e.addEventListener( 'keydown', fn );
204
  e.addEventListener( 'keyup', fn );
 
205
  }
206
  );
207
 
141
  }
142
  }
143
 
144
+ /**
145
+ * Paste event higher order function for characters limit.
146
+ *
147
+ * @since 1.6.7.1
148
+ *
149
+ * @param {number} limit Max allowed number of characters.
150
+ *
151
+ * @returns {Function} Event handler.
152
+ */
153
+ function pasteText( limit ) {
154
+
155
+ return function( e ) {
156
+
157
+ e.preventDefault();
158
+
159
+ var pastedText = getPastedText( e ),
160
+ newPosition = this.selectionStart + pastedText.length,
161
+ newText = this.value.substring( 0, this.selectionStart ) + pastedText + this.value.substring( this.selectionStart );
162
+
163
+ this.value = newText.substring( 0, limit );
164
+ this.setSelectionRange( newPosition, newPosition );
165
+ };
166
+ }
167
+
168
  /**
169
  * Paste event higher order function for words limit.
170
  *
179
  return function( e ) {
180
 
181
  e.preventDefault();
182
+
183
+ var pastedText = getPastedText( e ),
184
+ newPosition = this.selectionStart + pastedText.length,
185
+ newText = this.value.substring( 0, this.selectionStart ) + pastedText + this.value.substring( this.selectionStart );
186
+
187
+ newText = newText.trim().split( /\s+/ );
188
+ newText.splice( limit, newText.length );
189
+
190
+ this.value = newText.join( ' ' );
191
+ this.setSelectionRange( newPosition, newPosition );
192
  };
193
  }
194
 
233
 
234
  e.addEventListener( 'keydown', fn );
235
  e.addEventListener( 'keyup', fn );
236
+ e.addEventListener( 'paste', pasteText( limit ) );
237
  }
238
  );
239
 
assets/js/text-limit.min.js CHANGED
@@ -1 +1 @@
1
- !function i(a,r,o){function d(n,t){if(!r[n]){if(!a[n]){var e="function"==typeof require&&require;if(!t&&e)return e(n,!0);if(l)return l(n,!0);throw new Error("Cannot find module '"+n+"'")}e=r[n]={exports:{}};a[n][0].call(e.exports,function(t){var e=a[n][1][t];return d(e||t)},e,e.exports,i,a,r,o)}return r[n].exports}for(var l="function"==typeof require&&require,t=0;t<o.length;t++)d(o[t]);return d}({1:[function(t,e,n){"use strict";function o(t,e,n){return t.replace("{count}",e).replace("{limit}",n).replace("{remaining}",n-e)}function d(t,e,n){var i=document.createElement("div");return i.classList.add("wpforms-field-limit-text"),i.id="wpforms-field-limit-text-"+t+"-"+e,i.textContent=n,i}function l(e){return"string"==typeof e&&e.length?([/([A-Z]+),([A-Z]+)/gi,/([0-9]+),([A-Z]+)/gi,/([A-Z]+),([0-9]+)/gi].forEach(function(t){e=e.replace(t,"$1, $2")}),e.split(/\s+/).length):0}function s(e){return function(t){t.preventDefault();t=t,t=(window.clipboardData&&window.clipboardData.getData?window.clipboardData.getData("Text"):t.clipboardData&&t.clipboardData.getData?t.clipboardData.getData("text/plain"):void 0).trim().split(/\s+/);t.splice(e,t.length),this.value=t.join(" ")}}function i(t){return[].slice.call(t)}function a(){i(document.querySelectorAll(".wpforms-limit-characters-enabled")).map(function(t){var e=parseInt(t.dataset.textLimit,10)||0;t.value=t.value.slice(0,e);var n,i,a=d(t.dataset.formId,t.dataset.fieldId,o(window.wpforms_settings.val_limit_characters,t.value.length,e)),e=(n=a,i=e,function(t){n.textContent=o(window.wpforms_settings.val_limit_characters,this.value.length,i)});t.parentNode.appendChild(a),t.addEventListener("keydown",e),t.addEventListener("keyup",e)}),i(document.querySelectorAll(".wpforms-limit-words-enabled")).map(function(t){var e=parseInt(t.dataset.textLimit,10)||0;t.value=t.value.trim().split(/\s+/).slice(0,e).join(" ");var n,i,a=d(t.dataset.formId,t.dataset.fieldId,o(window.wpforms_settings.val_limit_words,l(t.value.trim()),e)),r=(n=a,i=e,function(t){var e=l(this.value.trim());n.textContent=o(window.wpforms_settings.val_limit_words,e,i),(32===t.keyCode||188===t.keyCode)&&i<=e&&t.preventDefault()});t.parentNode.appendChild(a),t.addEventListener("keydown",r),t.addEventListener("keyup",r),t.addEventListener("paste",s(e))})}"loading"===document.readyState?document.addEventListener("DOMContentLoaded",a):a()},{}]},{},[1]);
1
+ !function n(a,r,s){function o(i,t){if(!r[i]){if(!a[i]){var e="function"==typeof require&&require;if(!t&&e)return e(i,!0);if(l)return l(i,!0);throw new Error("Cannot find module '"+i+"'")}e=r[i]={exports:{}};a[i][0].call(e.exports,function(t){var e=a[i][1][t];return o(e||t)},e,e.exports,n,a,r,s)}return r[i].exports}for(var l="function"==typeof require&&require,t=0;t<s.length;t++)o(s[t]);return o}({1:[function(t,e,i){"use strict";function o(t,e,i){return t.replace("{count}",e).replace("{limit}",i).replace("{remaining}",i-e)}function l(t,e,i){var n=document.createElement("div");return n.classList.add("wpforms-field-limit-text"),n.id="wpforms-field-limit-text-"+t+"-"+e,n.textContent=i,n}function d(e){return"string"==typeof e&&e.length?([/([A-Z]+),([A-Z]+)/gi,/([0-9]+),([A-Z]+)/gi,/([A-Z]+),([0-9]+)/gi].forEach(function(t){e=e.replace(t,"$1, $2")}),e.split(/\s+/).length):0}function u(t){return window.clipboardData&&window.clipboardData.getData?window.clipboardData.getData("Text"):t.clipboardData&&t.clipboardData.getData?t.clipboardData.getData("text/plain"):void 0}function n(t){return[].slice.call(t)}function a(){n(document.querySelectorAll(".wpforms-limit-characters-enabled")).map(function(t){var e=parseInt(t.dataset.textLimit,10)||0;t.value=t.value.slice(0,e);var i,n,a,r=l(t.dataset.formId,t.dataset.fieldId,o(window.wpforms_settings.val_limit_characters,t.value.length,e)),s=(i=r,n=e,function(t){i.textContent=o(window.wpforms_settings.val_limit_characters,this.value.length,n)});t.parentNode.appendChild(r),t.addEventListener("keydown",s),t.addEventListener("keyup",s),t.addEventListener("paste",(a=e,function(t){t.preventDefault();var e=u(t),t=this.selectionStart+e.length,e=this.value.substring(0,this.selectionStart)+e+this.value.substring(this.selectionStart);this.value=e.substring(0,a),this.setSelectionRange(t,t)}))}),n(document.querySelectorAll(".wpforms-limit-words-enabled")).map(function(t){var e=parseInt(t.dataset.textLimit,10)||0;t.value=t.value.trim().split(/\s+/).slice(0,e).join(" ");var i,n,a,r=l(t.dataset.formId,t.dataset.fieldId,o(window.wpforms_settings.val_limit_words,d(t.value.trim()),e)),s=(i=r,n=e,function(t){var e=d(this.value.trim());i.textContent=o(window.wpforms_settings.val_limit_words,e,n),(32===t.keyCode||188===t.keyCode)&&n<=e&&t.preventDefault()});t.parentNode.appendChild(r),t.addEventListener("keydown",s),t.addEventListener("keyup",s),t.addEventListener("paste",(a=e,function(t){t.preventDefault();var e=u(t),t=this.selectionStart+e.length,e=this.value.substring(0,this.selectionStart)+e+this.value.substring(this.selectionStart);(e=e.trim().split(/\s+/)).splice(a,e.length),this.value=e.join(" "),this.setSelectionRange(t,t)}))})}"loading"===document.readyState?document.addEventListener("DOMContentLoaded",a):a()},{}]},{},[1]);
assets/js/wpforms.js CHANGED
@@ -1372,7 +1372,7 @@ var wpforms = window.wpforms || ( function( document, window, $ ) {
1372
  //--------------------------------------------------------------------//
1373
 
1374
  /**
1375
- * Payments: Calculate total.
1376
  *
1377
  * @since 1.2.3
1378
  * @since 1.5.1 Added support for payment-checkbox field.
@@ -1384,32 +1384,11 @@ var wpforms = window.wpforms || ( function( document, window, $ ) {
1384
 
1385
  validate = validate || false;
1386
 
1387
- var $form = $( el ).closest( '.wpforms-form' ),
1388
- total = 0,
 
1389
  totalFormatted,
1390
- totalFormattedSymbol,
1391
- currency = app.getCurrency();
1392
-
1393
- $( '.wpforms-payment-price', $form ).each( function( index, el ) {
1394
-
1395
- var amount = 0,
1396
- $this = $( this );
1397
-
1398
- if ( $this.closest( '.wpforms-field-payment-single' ).hasClass( 'wpforms-conditional-hide' ) ) {
1399
- return;
1400
- }
1401
- if ( 'text' === $this.attr( 'type' ) || 'hidden' === $this.attr( 'type' ) ) {
1402
- amount = $this.val();
1403
- } else if ( ( 'radio' === $this.attr( 'type' ) || 'checkbox' === $this.attr( 'type' ) ) && $this.is( ':checked' ) ) {
1404
- amount = $this.data( 'amount' );
1405
- } else if ( $this.is( 'select' ) && $this.find( 'option:selected' ).length > 0 ) {
1406
- amount = $this.find( 'option:selected' ).data( 'amount' );
1407
- }
1408
- if ( ! app.empty( amount ) ) {
1409
- amount = app.amountSanitize( amount );
1410
- total = Number( total ) + Number( amount );
1411
- }
1412
- } );
1413
 
1414
  totalFormatted = app.amountFormat( total );
1415
 
@@ -1431,6 +1410,46 @@ var wpforms = window.wpforms || ( function( document, window, $ ) {
1431
  } );
1432
  },
1433
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1434
  /**
1435
  * Sanitize amount and convert to standard format for calculations.
1436
  *
@@ -1464,7 +1483,7 @@ var wpforms = window.wpforms || ( function( document, window, $ ) {
1464
  *
1465
  * @since 1.2.6
1466
  *
1467
- * @param {string} amount Amount to format.
1468
  *
1469
  * @returns {string} Formatted amount.
1470
  */
1372
  //--------------------------------------------------------------------//
1373
 
1374
  /**
1375
+ * Payments: Run amount calculation and update the Total field value.
1376
  *
1377
  * @since 1.2.3
1378
  * @since 1.5.1 Added support for payment-checkbox field.
1384
 
1385
  validate = validate || false;
1386
 
1387
+ var $form = $( el ).closest( '.wpforms-form' ),
1388
+ currency = app.getCurrency(),
1389
+ total = app.amountTotalCalc( $form ),
1390
  totalFormatted,
1391
+ totalFormattedSymbol;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1392
 
1393
  totalFormatted = app.amountFormat( total );
1394
 
1410
  } );
1411
  },
1412
 
1413
+ /**
1414
+ * Payments: Calculate a total amount without formatting.
1415
+ *
1416
+ * @since 1.6.7.1
1417
+ *
1418
+ * @param {jQuery} $form Form element.
1419
+ *
1420
+ * @returns {number} Total amount.
1421
+ */
1422
+ amountTotalCalc: function( $form ) {
1423
+
1424
+ var total = 0;
1425
+
1426
+ $( '.wpforms-payment-price', $form ).each( function() {
1427
+
1428
+ var amount = 0,
1429
+ $this = $( this ),
1430
+ type = $this.attr( 'type' );
1431
+
1432
+ if ( $this.closest( '.wpforms-field-payment-single' ).hasClass( 'wpforms-conditional-hide' ) ) {
1433
+ return;
1434
+ }
1435
+
1436
+ if ( type === 'text' || type === 'hidden' ) {
1437
+ amount = $this.val();
1438
+ } else if ( ( type === 'radio' || type === 'checkbox' ) && $this.is( ':checked' ) ) {
1439
+ amount = $this.data( 'amount' );
1440
+ } else if ( $this.is( 'select' ) && $this.find( 'option:selected' ).length > 0 ) {
1441
+ amount = $this.find( 'option:selected' ).data( 'amount' );
1442
+ }
1443
+
1444
+ if ( ! app.empty( amount ) ) {
1445
+ amount = app.amountSanitize( amount );
1446
+ total = Number( total ) + Number( amount );
1447
+ }
1448
+ } );
1449
+
1450
+ return total;
1451
+ },
1452
+
1453
  /**
1454
  * Sanitize amount and convert to standard format for calculations.
1455
  *
1483
  *
1484
  * @since 1.2.6
1485
  *
1486
+ * @param {string|number} amount Amount to format.
1487
  *
1488
  * @returns {string} Formatted amount.
1489
  */
assets/languages/wpforms-lite.pot CHANGED
@@ -1,15 +1,15 @@
1
  msgid ""
2
  msgstr ""
3
- "Project-Id-Version: WPForms Lite 1.6.7\n"
4
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wpforms-lite\n"
5
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
6
  "Language-Team: LANGUAGE <LL@li.org>\n"
7
  "MIME-Version: 1.0\n"
8
  "Content-Type: text/plain; charset=UTF-8\n"
9
  "Content-Transfer-Encoding: 8bit\n"
10
- "POT-Creation-Date: 2021-05-13T12:24:00+03:00\n"
11
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12
- "X-Generator: WP-CLI 2.4.0\n"
13
  "X-Domain: wpforms-lite\n"
14
 
15
  #. Plugin Name of the plugin
@@ -69,7 +69,7 @@ msgid "Install Addon"
69
  msgstr ""
70
 
71
  #: includes/admin/admin.php:132
72
- #: includes/admin/ajax-actions.php:516
73
  msgid "Could not install addon. Please download from wpforms.com and install manually."
74
  msgstr ""
75
 
@@ -304,32 +304,32 @@ msgid "Something went wrong while saving the form."
304
  msgstr ""
305
 
306
  #: includes/admin/ajax-actions.php:100
307
- msgid "No form name provided"
308
  msgstr ""
309
 
310
- #: includes/admin/ajax-actions.php:124
311
- msgid "Error creating form"
312
  msgstr ""
313
 
314
- #: includes/admin/ajax-actions.php:164
315
  msgid "No form ID provided"
316
  msgstr ""
317
 
318
- #: includes/admin/ajax-actions.php:194
319
  msgid "Error updating form template"
320
  msgstr ""
321
 
322
- #: includes/admin/ajax-actions.php:302
323
  #: includes/fields/class-base.php:983
324
  msgid "post type"
325
  msgstr ""
326
 
327
- #: includes/admin/ajax-actions.php:333
328
  #: includes/fields/class-base.php:990
329
  msgid "taxonomy"
330
  msgstr ""
331
 
332
- #: includes/admin/ajax-actions.php:360
333
  #: includes/emails/class-emails.php:565
334
  #: includes/emails/class-emails.php:610
335
  #: includes/fields/class-base.php:1550
@@ -337,74 +337,74 @@ msgstr ""
337
  msgid "(empty)"
338
  msgstr ""
339
 
340
- #: includes/admin/ajax-actions.php:393
341
  msgid "You do not have permission to perform this operation."
342
  msgstr ""
343
 
344
- #: includes/admin/ajax-actions.php:403
345
  msgid "Success! Your server can make SSL connections."
346
  msgstr ""
347
 
348
- #: includes/admin/ajax-actions.php:410
349
  msgid "There was an error and the connection failed. Please contact your web host with the technical details below."
350
  msgstr ""
351
 
352
- #: includes/admin/ajax-actions.php:430
353
  msgid "Plugin deactivation is disabled for you on this site."
354
  msgstr ""
355
 
356
- #: includes/admin/ajax-actions.php:446
357
  msgid "Plugin deactivated."
358
  msgstr ""
359
 
360
- #: includes/admin/ajax-actions.php:448
361
  msgid "Addon deactivated."
362
  msgstr ""
363
 
364
- #: includes/admin/ajax-actions.php:452
365
  msgid "Could not deactivate the addon. Please deactivate from the Plugins page."
366
  msgstr ""
367
 
368
- #: includes/admin/ajax-actions.php:469
369
  msgid "Plugin activation is disabled for you on this site."
370
  msgstr ""
371
 
372
- #: includes/admin/ajax-actions.php:486
373
  msgid "Plugin activated."
374
  msgstr ""
375
 
376
- #: includes/admin/ajax-actions.php:488
377
  msgid "Addon activated."
378
  msgstr ""
379
 
380
- #: includes/admin/ajax-actions.php:493
381
  msgid "Could not activate addon. Please activate from the Plugins page."
382
  msgstr ""
383
 
384
- #: includes/admin/ajax-actions.php:508
385
  msgid "There was an error while performing your request."
386
  msgstr ""
387
 
388
- #: includes/admin/ajax-actions.php:516
389
  msgid "Could not install plugin. Please download and install manually."
390
  msgstr ""
391
 
392
- #: includes/admin/ajax-actions.php:586
393
  msgid "Plugin installed."
394
  msgstr ""
395
 
396
- #: includes/admin/ajax-actions.php:586
397
  msgid "Addon installed."
398
  msgstr ""
399
 
400
- #: includes/admin/ajax-actions.php:596
401
  #: src/Lite/Admin/Connect.php:182
402
  #: src/Lite/Admin/Connect.php:195
403
  #: src/Lite/Admin/Connect.php:255
404
  msgid "Plugin installed & activated."
405
  msgstr ""
406
 
407
- #: includes/admin/ajax-actions.php:596
408
  msgid "Addon installed & activated."
409
  msgstr ""
410
 
@@ -894,7 +894,7 @@ msgstr ""
894
 
895
  #: includes/admin/builder/panels/class-fields.php:159
896
  #: includes/admin/builder/panels/class-settings.php:115
897
- #: includes/class-form.php:277
898
  #: includes/templates/class-contact.php:71
899
  #: src/Admin/Tools/Importers/ContactForm7.php:124
900
  #: src/Admin/Tools/Importers/NinjaForms.php:129
@@ -934,7 +934,7 @@ msgid "Unfortunately, the %s field is not available and will be ignored on the f
934
  msgstr ""
935
 
936
  #: includes/admin/builder/panels/class-fields.php:404
937
- #: lite/templates/admin/addons.php:49
938
  msgid "Learn more"
939
  msgstr ""
940
 
@@ -1062,7 +1062,7 @@ msgstr ""
1062
  #: includes/admin/builder/panels/class-settings.php:86
1063
  #: includes/admin/builder/panels/class-setup.php:52
1064
  #: src/Integrations/Elementor/Widget.php:222
1065
- #: src/SmartTags/SmartTags.php:109
1066
  msgid "Form Name"
1067
  msgstr ""
1068
 
@@ -1913,36 +1913,36 @@ msgstr ""
1913
  msgid "Go to WPForms Lite vs Pro comparison page"
1914
  msgstr ""
1915
 
1916
- #: includes/admin/class-review.php:92
1917
  msgid "Hey, I noticed you collected over 50 entries from WPForms - that’s awesome! Could you please do me a BIG favor and give it a 5-star rating on WordPress to help us spread the word and boost our motivation?"
1918
  msgstr ""
1919
 
1920
- #: includes/admin/class-review.php:93
1921
- #: includes/admin/class-review.php:157
1922
  msgid "~ Syed Balkhi<br>Co-Founder of WPForms"
1923
  msgstr ""
1924
 
1925
- #: includes/admin/class-review.php:95
1926
- #: includes/admin/class-review.php:159
1927
  msgid "Ok, you deserve it"
1928
  msgstr ""
1929
 
1930
- #: includes/admin/class-review.php:96
1931
- #: includes/admin/class-review.php:160
1932
  msgid "Nope, maybe later"
1933
  msgstr ""
1934
 
1935
- #: includes/admin/class-review.php:97
1936
- #: includes/admin/class-review.php:161
1937
  msgid "I already did"
1938
  msgstr ""
1939
 
1940
- #: includes/admin/class-review.php:156
1941
  msgid "Hey, I noticed you created a contact form with WPForms - that’s awesome! Could you please do me a BIG favor and give it a 5-star rating on WordPress to help us spread the word and boost our motivation?"
1942
  msgstr ""
1943
 
1944
  #. translators: $1$s - WPForms plugin name; $2$s - WP.org review link; $3$s - WP.org review link.
1945
- #: includes/admin/class-review.php:214
1946
  msgid "Please rate %1$s <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">&#9733;&#9733;&#9733;&#9733;&#9733;</a> on <a href=\"%3$s\" target=\"_blank\" rel=\"noopener\">WordPress.org</a> to help us spread the word. Thank you from the WPForms team!"
1947
  msgstr ""
1948
 
@@ -2395,9 +2395,9 @@ msgid "per year"
2395
  msgstr ""
2396
 
2397
  #: includes/admin/class-welcome.php:286
2398
- #: lite/templates/admin/addons.php:26
2399
- #: lite/templates/admin/addons.php:59
2400
  #: src/Admin/Tools/Views/Importer.php:363
 
2401
  msgid "Upgrade Now"
2402
  msgstr ""
2403
 
@@ -2537,7 +2537,7 @@ msgid "Paste license key here"
2537
  msgstr ""
2538
 
2539
  #: includes/admin/settings-api.php:143
2540
- #: includes/providers/class-constant-contact.php:507
2541
  msgid "Connect"
2542
  msgstr ""
2543
 
@@ -2623,7 +2623,7 @@ msgctxt "Conditional Logic: new rule logic."
2623
  msgid "or"
2624
  msgstr ""
2625
 
2626
- #: includes/class-form.php:278
2627
  #: includes/templates/class-blank.php:30
2628
  #: includes/templates/class-contact.php:72
2629
  #: includes/templates/class-subscribe.php:48
@@ -2632,7 +2632,7 @@ msgid "Sending..."
2632
  msgstr ""
2633
 
2634
  #. translators: %s - form name.
2635
- #: includes/class-form.php:283
2636
  #: lite/wpforms-lite.php:143
2637
  #: src/Admin/Tools/Importers/ContactForm7.php:133
2638
  #: src/Admin/Tools/Importers/ContactForm7.php:448
@@ -2642,7 +2642,7 @@ msgstr ""
2642
  msgid "New Entry: %s"
2643
  msgstr ""
2644
 
2645
- #: includes/class-form.php:293
2646
  #: includes/class-process.php:541
2647
  #: includes/templates/class-contact.php:66
2648
  #: lite/wpforms-lite.php:270
@@ -2689,11 +2689,11 @@ msgid "Google reCAPTCHA verification failed, please try again later."
2689
  msgstr ""
2690
 
2691
  #. translators: %s - URL to the troubleshooting guide.
2692
- #: includes/class-frontend.php:1737
2693
  msgid "Heads up! WPForms has detected an issue with JavaScript on this page. JavaScript is required for this form to work properly, so this form may not work as expected. See our <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">troubleshooting guide</a> to learn more or contact support."
2694
  msgstr ""
2695
 
2696
- #: includes/class-frontend.php:1750
2697
  msgid "This message is only displayed to site administrators."
2698
  msgstr ""
2699
 
@@ -4759,7 +4759,7 @@ msgstr ""
4759
 
4760
  #: includes/providers/class-base.php:742
4761
  #: includes/providers/class-base.php:1303
4762
- #: includes/providers/class-constant-contact.php:486
4763
  #: src/Providers/Provider/Settings/FormBuilder.php:433
4764
  #: src/Providers/Provider/Settings/PageIntegrations.php:153
4765
  msgid "Add New Account"
@@ -4851,202 +4851,202 @@ msgstr ""
4851
  msgid "Please fill out all of the fields below to add your new provider account."
4852
  msgstr ""
4853
 
4854
- #: includes/providers/class-constant-contact.php:109
4855
  msgid "Constant Contact Subscription stopped by conditional logic"
4856
  msgstr ""
4857
 
4858
- #: includes/providers/class-constant-contact.php:127
4859
- #: includes/providers/class-constant-contact.php:305
4860
- #: includes/providers/class-constant-contact.php:390
4861
  msgid "Constant Contact API Error"
4862
  msgstr ""
4863
 
4864
- #: includes/providers/class-constant-contact.php:397
4865
  msgid "API list error: Constant API error"
4866
  msgstr ""
4867
 
4868
- #: includes/providers/class-constant-contact.php:489
4869
  msgid "Please fill out all of the fields below to register your new Constant Contact account."
4870
  msgstr ""
4871
 
4872
- #: includes/providers/class-constant-contact.php:491
4873
- #: includes/providers/class-constant-contact.php:592
4874
  msgid "Click here for documentation on connecting WPForms with Constant Contact."
4875
  msgstr ""
4876
 
4877
- #: includes/providers/class-constant-contact.php:496
4878
- #: includes/providers/class-constant-contact.php:597
4879
  msgid "Because Constant Contact requires external authentication, you will need to register WPForms with Constant Contact before you can proceed."
4880
  msgstr ""
4881
 
4882
- #: includes/providers/class-constant-contact.php:500
4883
- #: includes/providers/class-constant-contact.php:601
4884
  msgid "Click here to register with Constant Contact"
4885
  msgstr ""
4886
 
4887
- #: includes/providers/class-constant-contact.php:503
4888
- #: includes/providers/class-constant-contact.php:604
4889
  msgid "Authorization Code"
4890
  msgstr ""
4891
 
4892
- #: includes/providers/class-constant-contact.php:505
4893
- #: includes/providers/class-constant-contact.php:606
4894
  msgid "Account Nickname"
4895
  msgstr ""
4896
 
4897
- #: includes/providers/class-constant-contact.php:547
4898
  msgid "Get the most out of <strong>WPForms</strong> &mdash; use it with an active Constant Contact account."
4899
  msgstr ""
4900
 
4901
- #: includes/providers/class-constant-contact.php:556
4902
- #: includes/providers/class-constant-contact.php:663
4903
  msgid "Try Constant Contact for Free"
4904
  msgstr ""
4905
 
4906
  #. translators: %s - WPForms Constant Contact internal URL.
4907
- #: includes/providers/class-constant-contact.php:562
4908
  msgid "Learn More about the <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">power of email marketing</a>"
4909
  msgstr ""
4910
 
4911
- #: includes/providers/class-constant-contact.php:654
4912
  msgid "Get the most out of the <strong>WPForms</strong> plugin &mdash; use it with an active Constant Contact account."
4913
  msgstr ""
4914
 
4915
- #: includes/providers/class-constant-contact.php:666
4916
  msgid "Connect your existing account"
4917
  msgstr ""
4918
 
4919
  #. translators: %s - WPForms Constant Contact internal URL.
4920
- #: includes/providers/class-constant-contact.php:672
4921
  msgid "Learn More about the <a href=\"%s\">power of email marketing</a>"
4922
  msgstr ""
4923
 
4924
- #: includes/providers/class-constant-contact.php:744
4925
  msgid "Grow Your Website with WPForms + Email Marketing"
4926
  msgstr ""
4927
 
4928
- #: includes/providers/class-constant-contact.php:745
4929
  msgid "Wondering if email marketing is really worth your time?"
4930
  msgstr ""
4931
 
4932
- #: includes/providers/class-constant-contact.php:746
4933
  msgid "Email is hands-down the most effective way to nurture leads and turn them into customers, with a return on investment (ROI) of <strong>$44 back for every $1 spent</strong> according to DMA."
4934
  msgstr ""
4935
 
4936
- #: includes/providers/class-constant-contact.php:747
4937
  msgid "Here are 3 big reasons why every smart business in the world has an email list:"
4938
  msgstr ""
4939
 
4940
- #: includes/providers/class-constant-contact.php:752
4941
  msgid "<strong>Email is still #1</strong> - At least 91% of consumers check their email on a daily basis. You get direct access to your subscribers, without having to play by social media&#39;s rules and algorithms."
4942
  msgstr ""
4943
 
4944
- #: includes/providers/class-constant-contact.php:753
4945
  msgid "<strong>You own your email list</strong> - Unlike with social media, your list is your property and no one can revoke your access to it."
4946
  msgstr ""
4947
 
4948
- #: includes/providers/class-constant-contact.php:754
4949
  msgid "<strong>Email converts</strong> - People who buy products marketed through email spend 138% more than those who don&#39;t receive email offers."
4950
  msgstr ""
4951
 
4952
- #: includes/providers/class-constant-contact.php:756
4953
  msgid "That&#39;s why it&#39;s crucial to start collecting email addresses and building your list as soon as possible."
4954
  msgstr ""
4955
 
4956
  #. translators: %s - WPBeginners.com Guide to Email Lists URL.
4957
- #: includes/providers/class-constant-contact.php:762
4958
  msgid "For more details, see this guide on <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">why building your email list is so important</a>."
4959
  msgstr ""
4960
 
4961
- #: includes/providers/class-constant-contact.php:776
4962
  msgid "You&#39;ve Already Started - Here&#39;s the Next Step (It&#39;s Easy)"
4963
  msgstr ""
4964
 
4965
- #: includes/providers/class-constant-contact.php:777
4966
  msgid "Here are the 3 things you need to build an email list:"
4967
  msgstr ""
4968
 
4969
- #: includes/providers/class-constant-contact.php:779
4970
  msgid "A Website or Blog"
4971
  msgstr ""
4972
 
4973
- #: includes/providers/class-constant-contact.php:780
4974
  msgid "High-Converting Form Builder"
4975
  msgstr ""
4976
 
4977
- #: includes/providers/class-constant-contact.php:781
4978
  msgid "The Best Email Marketing Service"
4979
  msgstr ""
4980
 
4981
- #: includes/providers/class-constant-contact.php:783
4982
  msgid "With a powerful email marketing service like Constant Contact, you can instantly send out mass notifications and beautifully designed newsletters to engage your subscribers."
4983
  msgstr ""
4984
 
4985
- #: includes/providers/class-constant-contact.php:786
4986
  msgid "Get Started with Constant Contact for Free"
4987
  msgstr ""
4988
 
4989
- #: includes/providers/class-constant-contact.php:789
4990
  msgid "WPForms plugin makes it fast and easy to capture all kinds of visitor information right from your WordPress site - even if you don&#39;t have a Constant Contact account."
4991
  msgstr ""
4992
 
4993
- #: includes/providers/class-constant-contact.php:790
4994
  msgid "But when you combine WPForms with Constant Contact, you can nurture your contacts and engage with them even after they leave your website. When you use Constant Contact + WPForms together, you can:"
4995
  msgstr ""
4996
 
4997
- #: includes/providers/class-constant-contact.php:792
4998
  msgid "Seamlessly add new contacts to your email list"
4999
  msgstr ""
5000
 
5001
- #: includes/providers/class-constant-contact.php:793
5002
  msgid "Create and send professional email newsletters"
5003
  msgstr ""
5004
 
5005
- #: includes/providers/class-constant-contact.php:794
5006
  msgid "Get expert marketing and support"
5007
  msgstr ""
5008
 
5009
- #: includes/providers/class-constant-contact.php:798
5010
  msgid "Try Constant Contact Today"
5011
  msgstr ""
5012
 
5013
- #: includes/providers/class-constant-contact.php:802
5014
  msgid "WPForms Makes List Building Easy"
5015
  msgstr ""
5016
 
5017
- #: includes/providers/class-constant-contact.php:803
5018
  msgid "When creating WPForms, our goal was to make a WordPress forms plugin that&#39;s both EASY and POWERFUL."
5019
  msgstr ""
5020
 
5021
- #: includes/providers/class-constant-contact.php:804
5022
  msgid "We made the form creation process extremely intuitive, so you can create a form to start capturing emails within 5 minutes or less."
5023
  msgstr ""
5024
 
5025
- #: includes/providers/class-constant-contact.php:805
5026
  msgid "Here&#39;s how it works."
5027
  msgstr ""
5028
 
5029
- #: includes/providers/class-constant-contact.php:809
5030
  msgid "1. Select from our pre-built templates, or create a form from scratch."
5031
  msgstr ""
5032
 
5033
- #: includes/providers/class-constant-contact.php:813
5034
  msgid "2. Drag and drop any field you want onto your signup form."
5035
  msgstr ""
5036
 
5037
- #: includes/providers/class-constant-contact.php:817
5038
  msgid "3. Connect your Constant Contact email list."
5039
  msgstr ""
5040
 
5041
- #: includes/providers/class-constant-contact.php:821
5042
  msgid "4. Add your new form to any post, page, or sidebar."
5043
  msgstr ""
5044
 
5045
- #: includes/providers/class-constant-contact.php:824
5046
  msgid "It doesn&#39;t matter what kind of business you run, what kind of website you have, or what industry you are in - you need to start building your email list today."
5047
  msgstr ""
5048
 
5049
- #: includes/providers/class-constant-contact.php:825
5050
  msgid "With Constant Contact + WPForms, growing your list is easy."
5051
  msgstr ""
5052
 
@@ -5126,15 +5126,7 @@ msgstr ""
5126
  msgid "Search Addons"
5127
  msgstr ""
5128
 
5129
- #: lite/templates/admin/addons.php:22
5130
- msgid "Form Addons are a PRO feature."
5131
- msgstr ""
5132
-
5133
- #: lite/templates/admin/addons.php:23
5134
- msgid "Please upgrade to the PRO plan to unlock them and more awesome features."
5135
- msgstr ""
5136
-
5137
- #: lite/templates/admin/addons.php:37
5138
  msgid "Unknown Addon"
5139
  msgstr ""
5140
 
@@ -5328,51 +5320,51 @@ msgstr ""
5328
  msgid "<strong>Bonus:</strong> WPForms Lite users get <span class=\"green\">50% off regular price</span>, automatically applied at checkout."
5329
  msgstr ""
5330
 
5331
- #: lite/wpforms-lite.php:649
5332
  msgid "View and Manage All Your Form Entries inside WordPress"
5333
  msgstr ""
5334
 
5335
- #: lite/wpforms-lite.php:651
5336
  msgid "Form entries are not stored in WPForms Lite."
5337
  msgstr ""
5338
 
5339
- #: lite/wpforms-lite.php:652
5340
  msgid "Once you upgrade to WPForms Pro, all future form entries will be stored in your WordPress database and displayed on this Entries screen."
5341
  msgstr ""
5342
 
5343
- #: lite/wpforms-lite.php:656
5344
  msgid "View Entries in Dashboard"
5345
  msgstr ""
5346
 
5347
- #: lite/wpforms-lite.php:657
5348
  msgid "Export Entries in a CSV File"
5349
  msgstr ""
5350
 
5351
- #: lite/wpforms-lite.php:658
5352
  msgid "Add Notes / Comments"
5353
  msgstr ""
5354
 
5355
- #: lite/wpforms-lite.php:659
5356
  msgid "Save Favorite Entries"
5357
  msgstr ""
5358
 
5359
- #: lite/wpforms-lite.php:662
5360
  msgid "Mark Read / Unread"
5361
  msgstr ""
5362
 
5363
- #: lite/wpforms-lite.php:663
5364
  msgid "Print Entries"
5365
  msgstr ""
5366
 
5367
- #: lite/wpforms-lite.php:664
5368
  msgid "Resend Notifications"
5369
  msgstr ""
5370
 
5371
- #: lite/wpforms-lite.php:665
5372
  msgid "See Geolocation Data"
5373
  msgstr ""
5374
 
5375
- #: lite/wpforms-lite.php:671
5376
  msgid "Upgrade to WPForms Pro Now"
5377
  msgstr ""
5378
 
@@ -6655,6 +6647,14 @@ msgstr ""
6655
  msgid "Collect payments for product and service orders with this ready-made form template. You can add and remove fields as needed."
6656
  msgstr ""
6657
 
 
 
 
 
 
 
 
 
6658
  #: src/Lite/Admin/Settings/Access.php:84
6659
  msgid "Access"
6660
  msgstr ""
@@ -6763,7 +6763,7 @@ msgstr ""
6763
 
6764
  #: src/Logger/ListTable.php:258
6765
  #: src/Logger/ListTable.php:459
6766
- #: src/SmartTags/SmartTags.php:108
6767
  msgid "Form ID"
6768
  msgstr ""
6769
 
@@ -6774,7 +6774,7 @@ msgstr ""
6774
 
6775
  #: src/Logger/ListTable.php:260
6776
  #: src/Logger/ListTable.php:445
6777
- #: src/SmartTags/SmartTags.php:113
6778
  msgid "Date"
6779
  msgstr ""
6780
 
@@ -6812,7 +6812,7 @@ msgid "Entry ID"
6812
  msgstr ""
6813
 
6814
  #: src/Logger/ListTable.php:483
6815
- #: src/SmartTags/SmartTags.php:116
6816
  msgid "User ID"
6817
  msgstr ""
6818
 
@@ -6904,100 +6904,100 @@ msgstr ""
6904
  msgid "Missing required data in payload."
6905
  msgstr ""
6906
 
6907
- #: src/SmartTags/SmartTags.php:104
6908
  msgid "Site Administrator Email"
6909
  msgstr ""
6910
 
6911
- #: src/SmartTags/SmartTags.php:105
6912
  msgid "Field ID"
6913
  msgstr ""
6914
 
6915
- #: src/SmartTags/SmartTags.php:106
6916
  msgid "Field HTML ID"
6917
  msgstr ""
6918
 
6919
- #: src/SmartTags/SmartTags.php:107
6920
  msgid "Field Value"
6921
  msgstr ""
6922
 
6923
- #: src/SmartTags/SmartTags.php:110
6924
  msgid "Embedded Post/Page Title"
6925
  msgstr ""
6926
 
6927
- #: src/SmartTags/SmartTags.php:111
6928
  msgid "Embedded Post/Page URL"
6929
  msgstr ""
6930
 
6931
- #: src/SmartTags/SmartTags.php:112
6932
  msgid "Embedded Post/Page ID"
6933
  msgstr ""
6934
 
6935
- #: src/SmartTags/SmartTags.php:114
6936
  msgid "Query String Variable"
6937
  msgstr ""
6938
 
6939
- #: src/SmartTags/SmartTags.php:115
6940
  msgid "User IP Address"
6941
  msgstr ""
6942
 
6943
- #: src/SmartTags/SmartTags.php:117
6944
  msgid "User Display Name"
6945
  msgstr ""
6946
 
6947
- #: src/SmartTags/SmartTags.php:118
6948
  msgid "User Full Name"
6949
  msgstr ""
6950
 
6951
- #: src/SmartTags/SmartTags.php:119
6952
  msgid "User First Name"
6953
  msgstr ""
6954
 
6955
- #: src/SmartTags/SmartTags.php:120
6956
  msgid "User Last Name"
6957
  msgstr ""
6958
 
6959
- #: src/SmartTags/SmartTags.php:121
6960
  msgid "User Email"
6961
  msgstr ""
6962
 
6963
- #: src/SmartTags/SmartTags.php:122
6964
  msgid "User Meta"
6965
  msgstr ""
6966
 
6967
- #: src/SmartTags/SmartTags.php:123
6968
  msgid "Author ID"
6969
  msgstr ""
6970
 
6971
- #: src/SmartTags/SmartTags.php:124
6972
  msgid "Author Name"
6973
  msgstr ""
6974
 
6975
- #: src/SmartTags/SmartTags.php:125
6976
  msgid "Author Email"
6977
  msgstr ""
6978
 
6979
- #: src/SmartTags/SmartTags.php:126
6980
  msgid "Referrer URL"
6981
  msgstr ""
6982
 
6983
- #: src/SmartTags/SmartTags.php:127
6984
  msgid "Login URL"
6985
  msgstr ""
6986
 
6987
- #: src/SmartTags/SmartTags.php:128
6988
  msgid "Logout URL"
6989
  msgstr ""
6990
 
6991
- #: src/SmartTags/SmartTags.php:129
6992
  msgid "Register URL"
6993
  msgstr ""
6994
 
6995
- #: src/SmartTags/SmartTags.php:130
6996
  msgid "Lost Password URL"
6997
  msgstr ""
6998
 
6999
  #: src/WPForms.php:126
7000
- msgid "Property smart_tags was deprecated use wpforms()->get( 'smart_tags' ) instead of wpforms()->smart_tags"
7001
  msgstr ""
7002
 
7003
  #: templates/admin/challenge/builder.php:15
1
  msgid ""
2
  msgstr ""
3
+ "Project-Id-Version: WPForms Lite 1.6.7.1\n"
4
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wpforms-lite\n"
5
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
6
  "Language-Team: LANGUAGE <LL@li.org>\n"
7
  "MIME-Version: 1.0\n"
8
  "Content-Type: text/plain; charset=UTF-8\n"
9
  "Content-Transfer-Encoding: 8bit\n"
10
+ "POT-Creation-Date: 2021-06-15T13:46:05+03:00\n"
11
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12
+ "X-Generator: WP-CLI 2.5.0\n"
13
  "X-Domain: wpforms-lite\n"
14
 
15
  #. Plugin Name of the plugin
69
  msgstr ""
70
 
71
  #: includes/admin/admin.php:132
72
+ #: includes/admin/ajax-actions.php:521
73
  msgid "Could not install addon. Please download from wpforms.com and install manually."
74
  msgstr ""
75
 
304
  msgstr ""
305
 
306
  #: includes/admin/ajax-actions.php:100
307
+ msgid "No form name provided."
308
  msgstr ""
309
 
310
+ #: includes/admin/ajax-actions.php:129
311
+ msgid "Error creating form."
312
  msgstr ""
313
 
314
+ #: includes/admin/ajax-actions.php:169
315
  msgid "No form ID provided"
316
  msgstr ""
317
 
318
+ #: includes/admin/ajax-actions.php:199
319
  msgid "Error updating form template"
320
  msgstr ""
321
 
322
+ #: includes/admin/ajax-actions.php:307
323
  #: includes/fields/class-base.php:983
324
  msgid "post type"
325
  msgstr ""
326
 
327
+ #: includes/admin/ajax-actions.php:338
328
  #: includes/fields/class-base.php:990
329
  msgid "taxonomy"
330
  msgstr ""
331
 
332
+ #: includes/admin/ajax-actions.php:365
333
  #: includes/emails/class-emails.php:565
334
  #: includes/emails/class-emails.php:610
335
  #: includes/fields/class-base.php:1550
337
  msgid "(empty)"
338
  msgstr ""
339
 
340
+ #: includes/admin/ajax-actions.php:398
341
  msgid "You do not have permission to perform this operation."
342
  msgstr ""
343
 
344
+ #: includes/admin/ajax-actions.php:408
345
  msgid "Success! Your server can make SSL connections."
346
  msgstr ""
347
 
348
+ #: includes/admin/ajax-actions.php:415
349
  msgid "There was an error and the connection failed. Please contact your web host with the technical details below."
350
  msgstr ""
351
 
352
+ #: includes/admin/ajax-actions.php:435
353
  msgid "Plugin deactivation is disabled for you on this site."
354
  msgstr ""
355
 
356
+ #: includes/admin/ajax-actions.php:451
357
  msgid "Plugin deactivated."
358
  msgstr ""
359
 
360
+ #: includes/admin/ajax-actions.php:453
361
  msgid "Addon deactivated."
362
  msgstr ""
363
 
364
+ #: includes/admin/ajax-actions.php:457
365
  msgid "Could not deactivate the addon. Please deactivate from the Plugins page."
366
  msgstr ""
367
 
368
+ #: includes/admin/ajax-actions.php:474
369
  msgid "Plugin activation is disabled for you on this site."
370
  msgstr ""
371
 
372
+ #: includes/admin/ajax-actions.php:491
373
  msgid "Plugin activated."
374
  msgstr ""
375
 
376
+ #: includes/admin/ajax-actions.php:493
377
  msgid "Addon activated."
378
  msgstr ""
379
 
380
+ #: includes/admin/ajax-actions.php:498
381
  msgid "Could not activate addon. Please activate from the Plugins page."
382
  msgstr ""
383
 
384
+ #: includes/admin/ajax-actions.php:513
385
  msgid "There was an error while performing your request."
386
  msgstr ""
387
 
388
+ #: includes/admin/ajax-actions.php:521
389
  msgid "Could not install plugin. Please download and install manually."
390
  msgstr ""
391
 
392
+ #: includes/admin/ajax-actions.php:591
393
  msgid "Plugin installed."
394
  msgstr ""
395
 
396
+ #: includes/admin/ajax-actions.php:591
397
  msgid "Addon installed."
398
  msgstr ""
399
 
400
+ #: includes/admin/ajax-actions.php:601
401
  #: src/Lite/Admin/Connect.php:182
402
  #: src/Lite/Admin/Connect.php:195
403
  #: src/Lite/Admin/Connect.php:255
404
  msgid "Plugin installed & activated."
405
  msgstr ""
406
 
407
+ #: includes/admin/ajax-actions.php:601
408
  msgid "Addon installed & activated."
409
  msgstr ""
410
 
894
 
895
  #: includes/admin/builder/panels/class-fields.php:159
896
  #: includes/admin/builder/panels/class-settings.php:115
897
+ #: includes/class-form.php:318
898
  #: includes/templates/class-contact.php:71
899
  #: src/Admin/Tools/Importers/ContactForm7.php:124
900
  #: src/Admin/Tools/Importers/NinjaForms.php:129
934
  msgstr ""
935
 
936
  #: includes/admin/builder/panels/class-fields.php:404
937
+ #: lite/templates/admin/addons.php:40
938
  msgid "Learn more"
939
  msgstr ""
940
 
1062
  #: includes/admin/builder/panels/class-settings.php:86
1063
  #: includes/admin/builder/panels/class-setup.php:52
1064
  #: src/Integrations/Elementor/Widget.php:222
1065
+ #: src/SmartTags/SmartTags.php:112
1066
  msgid "Form Name"
1067
  msgstr ""
1068
 
1913
  msgid "Go to WPForms Lite vs Pro comparison page"
1914
  msgstr ""
1915
 
1916
+ #: includes/admin/class-review.php:103
1917
  msgid "Hey, I noticed you collected over 50 entries from WPForms - that’s awesome! Could you please do me a BIG favor and give it a 5-star rating on WordPress to help us spread the word and boost our motivation?"
1918
  msgstr ""
1919
 
1920
+ #: includes/admin/class-review.php:104
1921
+ #: includes/admin/class-review.php:167
1922
  msgid "~ Syed Balkhi<br>Co-Founder of WPForms"
1923
  msgstr ""
1924
 
1925
+ #: includes/admin/class-review.php:106
1926
+ #: includes/admin/class-review.php:169
1927
  msgid "Ok, you deserve it"
1928
  msgstr ""
1929
 
1930
+ #: includes/admin/class-review.php:107
1931
+ #: includes/admin/class-review.php:170
1932
  msgid "Nope, maybe later"
1933
  msgstr ""
1934
 
1935
+ #: includes/admin/class-review.php:108
1936
+ #: includes/admin/class-review.php:171
1937
  msgid "I already did"
1938
  msgstr ""
1939
 
1940
+ #: includes/admin/class-review.php:166
1941
  msgid "Hey, I noticed you created a contact form with WPForms - that’s awesome! Could you please do me a BIG favor and give it a 5-star rating on WordPress to help us spread the word and boost our motivation?"
1942
  msgstr ""
1943
 
1944
  #. translators: $1$s - WPForms plugin name; $2$s - WP.org review link; $3$s - WP.org review link.
1945
+ #: includes/admin/class-review.php:224
1946
  msgid "Please rate %1$s <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">&#9733;&#9733;&#9733;&#9733;&#9733;</a> on <a href=\"%3$s\" target=\"_blank\" rel=\"noopener\">WordPress.org</a> to help us spread the word. Thank you from the WPForms team!"
1947
  msgstr ""
1948
 
2395
  msgstr ""
2396
 
2397
  #: includes/admin/class-welcome.php:286
2398
+ #: lite/templates/admin/addons.php:50
 
2399
  #: src/Admin/Tools/Views/Importer.php:363
2400
+ #: src/Lite/Admin/Pages/Addons.php:101
2401
  msgid "Upgrade Now"
2402
  msgstr ""
2403
 
2537
  msgstr ""
2538
 
2539
  #: includes/admin/settings-api.php:143
2540
+ #: includes/providers/class-constant-contact.php:512
2541
  msgid "Connect"
2542
  msgstr ""
2543
 
2623
  msgid "or"
2624
  msgstr ""
2625
 
2626
+ #: includes/class-form.php:319
2627
  #: includes/templates/class-blank.php:30
2628
  #: includes/templates/class-contact.php:72
2629
  #: includes/templates/class-subscribe.php:48
2632
  msgstr ""
2633
 
2634
  #. translators: %s - form name.
2635
+ #: includes/class-form.php:324
2636
  #: lite/wpforms-lite.php:143
2637
  #: src/Admin/Tools/Importers/ContactForm7.php:133
2638
  #: src/Admin/Tools/Importers/ContactForm7.php:448
2642
  msgid "New Entry: %s"
2643
  msgstr ""
2644
 
2645
+ #: includes/class-form.php:334
2646
  #: includes/class-process.php:541
2647
  #: includes/templates/class-contact.php:66
2648
  #: lite/wpforms-lite.php:270
2689
  msgstr ""
2690
 
2691
  #. translators: %s - URL to the troubleshooting guide.
2692
+ #: includes/class-frontend.php:1745
2693
  msgid "Heads up! WPForms has detected an issue with JavaScript on this page. JavaScript is required for this form to work properly, so this form may not work as expected. See our <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">troubleshooting guide</a> to learn more or contact support."
2694
  msgstr ""
2695
 
2696
+ #: includes/class-frontend.php:1758
2697
  msgid "This message is only displayed to site administrators."
2698
  msgstr ""
2699
 
4759
 
4760
  #: includes/providers/class-base.php:742
4761
  #: includes/providers/class-base.php:1303
4762
+ #: includes/providers/class-constant-contact.php:491
4763
  #: src/Providers/Provider/Settings/FormBuilder.php:433
4764
  #: src/Providers/Provider/Settings/PageIntegrations.php:153
4765
  msgid "Add New Account"
4851
  msgid "Please fill out all of the fields below to add your new provider account."
4852
  msgstr ""
4853
 
4854
+ #: includes/providers/class-constant-contact.php:114
4855
  msgid "Constant Contact Subscription stopped by conditional logic"
4856
  msgstr ""
4857
 
4858
+ #: includes/providers/class-constant-contact.php:132
4859
+ #: includes/providers/class-constant-contact.php:310
4860
+ #: includes/providers/class-constant-contact.php:395
4861
  msgid "Constant Contact API Error"
4862
  msgstr ""
4863
 
4864
+ #: includes/providers/class-constant-contact.php:402
4865
  msgid "API list error: Constant API error"
4866
  msgstr ""
4867
 
4868
+ #: includes/providers/class-constant-contact.php:494
4869
  msgid "Please fill out all of the fields below to register your new Constant Contact account."
4870
  msgstr ""
4871
 
4872
+ #: includes/providers/class-constant-contact.php:496
4873
+ #: includes/providers/class-constant-contact.php:597
4874
  msgid "Click here for documentation on connecting WPForms with Constant Contact."
4875
  msgstr ""
4876
 
4877
+ #: includes/providers/class-constant-contact.php:501
4878
+ #: includes/providers/class-constant-contact.php:602
4879
  msgid "Because Constant Contact requires external authentication, you will need to register WPForms with Constant Contact before you can proceed."
4880
  msgstr ""
4881
 
4882
+ #: includes/providers/class-constant-contact.php:505
4883
+ #: includes/providers/class-constant-contact.php:606
4884
  msgid "Click here to register with Constant Contact"
4885
  msgstr ""
4886
 
4887
+ #: includes/providers/class-constant-contact.php:508
4888
+ #: includes/providers/class-constant-contact.php:609
4889
  msgid "Authorization Code"
4890
  msgstr ""
4891
 
4892
+ #: includes/providers/class-constant-contact.php:510
4893
+ #: includes/providers/class-constant-contact.php:611
4894
  msgid "Account Nickname"
4895
  msgstr ""
4896
 
4897
+ #: includes/providers/class-constant-contact.php:552
4898
  msgid "Get the most out of <strong>WPForms</strong> &mdash; use it with an active Constant Contact account."
4899
  msgstr ""
4900
 
4901
+ #: includes/providers/class-constant-contact.php:561
4902
+ #: includes/providers/class-constant-contact.php:670
4903
  msgid "Try Constant Contact for Free"
4904
  msgstr ""
4905
 
4906
  #. translators: %s - WPForms Constant Contact internal URL.
4907
+ #: includes/providers/class-constant-contact.php:567
4908
  msgid "Learn More about the <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">power of email marketing</a>"
4909
  msgstr ""
4910
 
4911
+ #: includes/providers/class-constant-contact.php:661
4912
  msgid "Get the most out of the <strong>WPForms</strong> plugin &mdash; use it with an active Constant Contact account."
4913
  msgstr ""
4914
 
4915
+ #: includes/providers/class-constant-contact.php:673
4916
  msgid "Connect your existing account"
4917
  msgstr ""
4918
 
4919
  #. translators: %s - WPForms Constant Contact internal URL.
4920
+ #: includes/providers/class-constant-contact.php:678
4921
  msgid "Learn More about the <a href=\"%s\">power of email marketing</a>"
4922
  msgstr ""
4923
 
4924
+ #: includes/providers/class-constant-contact.php:761
4925
  msgid "Grow Your Website with WPForms + Email Marketing"
4926
  msgstr ""
4927
 
4928
+ #: includes/providers/class-constant-contact.php:762
4929
  msgid "Wondering if email marketing is really worth your time?"
4930
  msgstr ""
4931
 
4932
+ #: includes/providers/class-constant-contact.php:763
4933
  msgid "Email is hands-down the most effective way to nurture leads and turn them into customers, with a return on investment (ROI) of <strong>$44 back for every $1 spent</strong> according to DMA."
4934
  msgstr ""
4935
 
4936
+ #: includes/providers/class-constant-contact.php:764
4937
  msgid "Here are 3 big reasons why every smart business in the world has an email list:"
4938
  msgstr ""
4939
 
4940
+ #: includes/providers/class-constant-contact.php:769
4941
  msgid "<strong>Email is still #1</strong> - At least 91% of consumers check their email on a daily basis. You get direct access to your subscribers, without having to play by social media&#39;s rules and algorithms."
4942
  msgstr ""
4943
 
4944
+ #: includes/providers/class-constant-contact.php:770
4945
  msgid "<strong>You own your email list</strong> - Unlike with social media, your list is your property and no one can revoke your access to it."
4946
  msgstr ""
4947
 
4948
+ #: includes/providers/class-constant-contact.php:771
4949
  msgid "<strong>Email converts</strong> - People who buy products marketed through email spend 138% more than those who don&#39;t receive email offers."
4950
  msgstr ""
4951
 
4952
+ #: includes/providers/class-constant-contact.php:773
4953
  msgid "That&#39;s why it&#39;s crucial to start collecting email addresses and building your list as soon as possible."
4954
  msgstr ""
4955
 
4956
  #. translators: %s - WPBeginners.com Guide to Email Lists URL.
4957
+ #: includes/providers/class-constant-contact.php:779
4958
  msgid "For more details, see this guide on <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">why building your email list is so important</a>."
4959
  msgstr ""
4960
 
4961
+ #: includes/providers/class-constant-contact.php:793
4962
  msgid "You&#39;ve Already Started - Here&#39;s the Next Step (It&#39;s Easy)"
4963
  msgstr ""
4964
 
4965
+ #: includes/providers/class-constant-contact.php:794
4966
  msgid "Here are the 3 things you need to build an email list:"
4967
  msgstr ""
4968
 
4969
+ #: includes/providers/class-constant-contact.php:796
4970
  msgid "A Website or Blog"
4971
  msgstr ""
4972
 
4973
+ #: includes/providers/class-constant-contact.php:797
4974
  msgid "High-Converting Form Builder"
4975
  msgstr ""
4976
 
4977
+ #: includes/providers/class-constant-contact.php:798
4978
  msgid "The Best Email Marketing Service"
4979
  msgstr ""
4980
 
4981
+ #: includes/providers/class-constant-contact.php:800
4982
  msgid "With a powerful email marketing service like Constant Contact, you can instantly send out mass notifications and beautifully designed newsletters to engage your subscribers."
4983
  msgstr ""
4984
 
4985
+ #: includes/providers/class-constant-contact.php:803
4986
  msgid "Get Started with Constant Contact for Free"
4987
  msgstr ""
4988
 
4989
+ #: includes/providers/class-constant-contact.php:806
4990
  msgid "WPForms plugin makes it fast and easy to capture all kinds of visitor information right from your WordPress site - even if you don&#39;t have a Constant Contact account."
4991
  msgstr ""
4992
 
4993
+ #: includes/providers/class-constant-contact.php:807
4994
  msgid "But when you combine WPForms with Constant Contact, you can nurture your contacts and engage with them even after they leave your website. When you use Constant Contact + WPForms together, you can:"
4995
  msgstr ""
4996
 
4997
+ #: includes/providers/class-constant-contact.php:809
4998
  msgid "Seamlessly add new contacts to your email list"
4999
  msgstr ""
5000
 
5001
+ #: includes/providers/class-constant-contact.php:810
5002
  msgid "Create and send professional email newsletters"
5003
  msgstr ""
5004
 
5005
+ #: includes/providers/class-constant-contact.php:811
5006
  msgid "Get expert marketing and support"
5007
  msgstr ""
5008
 
5009
+ #: includes/providers/class-constant-contact.php:815
5010
  msgid "Try Constant Contact Today"
5011
  msgstr ""
5012
 
5013
+ #: includes/providers/class-constant-contact.php:819
5014
  msgid "WPForms Makes List Building Easy"
5015
  msgstr ""
5016
 
5017
+ #: includes/providers/class-constant-contact.php:820
5018
  msgid "When creating WPForms, our goal was to make a WordPress forms plugin that&#39;s both EASY and POWERFUL."
5019
  msgstr ""
5020
 
5021
+ #: includes/providers/class-constant-contact.php:821
5022
  msgid "We made the form creation process extremely intuitive, so you can create a form to start capturing emails within 5 minutes or less."
5023
  msgstr ""
5024
 
5025
+ #: includes/providers/class-constant-contact.php:822
5026
  msgid "Here&#39;s how it works."
5027
  msgstr ""
5028
 
5029
+ #: includes/providers/class-constant-contact.php:826
5030
  msgid "1. Select from our pre-built templates, or create a form from scratch."
5031
  msgstr ""
5032
 
5033
+ #: includes/providers/class-constant-contact.php:830
5034
  msgid "2. Drag and drop any field you want onto your signup form."
5035
  msgstr ""
5036
 
5037
+ #: includes/providers/class-constant-contact.php:834
5038
  msgid "3. Connect your Constant Contact email list."
5039
  msgstr ""
5040
 
5041
+ #: includes/providers/class-constant-contact.php:838
5042
  msgid "4. Add your new form to any post, page, or sidebar."
5043
  msgstr ""
5044
 
5045
+ #: includes/providers/class-constant-contact.php:841
5046
  msgid "It doesn&#39;t matter what kind of business you run, what kind of website you have, or what industry you are in - you need to start building your email list today."
5047
  msgstr ""
5048
 
5049
+ #: includes/providers/class-constant-contact.php:842
5050
  msgid "With Constant Contact + WPForms, growing your list is easy."
5051
  msgstr ""
5052
 
5126
  msgid "Search Addons"
5127
  msgstr ""
5128
 
5129
+ #: lite/templates/admin/addons.php:28
 
 
 
 
 
 
 
 
5130
  msgid "Unknown Addon"
5131
  msgstr ""
5132
 
5320
  msgid "<strong>Bonus:</strong> WPForms Lite users get <span class=\"green\">50% off regular price</span>, automatically applied at checkout."
5321
  msgstr ""
5322
 
5323
+ #: lite/wpforms-lite.php:650
5324
  msgid "View and Manage All Your Form Entries inside WordPress"
5325
  msgstr ""
5326
 
5327
+ #: lite/wpforms-lite.php:652
5328
  msgid "Form entries are not stored in WPForms Lite."
5329
  msgstr ""
5330
 
5331
+ #: lite/wpforms-lite.php:653
5332
  msgid "Once you upgrade to WPForms Pro, all future form entries will be stored in your WordPress database and displayed on this Entries screen."
5333
  msgstr ""
5334
 
5335
+ #: lite/wpforms-lite.php:657
5336
  msgid "View Entries in Dashboard"
5337
  msgstr ""
5338
 
5339
+ #: lite/wpforms-lite.php:658
5340
  msgid "Export Entries in a CSV File"
5341
  msgstr ""
5342
 
5343
+ #: lite/wpforms-lite.php:659
5344
  msgid "Add Notes / Comments"
5345
  msgstr ""
5346
 
5347
+ #: lite/wpforms-lite.php:660
5348
  msgid "Save Favorite Entries"
5349
  msgstr ""
5350
 
5351
+ #: lite/wpforms-lite.php:663
5352
  msgid "Mark Read / Unread"
5353
  msgstr ""
5354
 
5355
+ #: lite/wpforms-lite.php:664
5356
  msgid "Print Entries"
5357
  msgstr ""
5358
 
5359
+ #: lite/wpforms-lite.php:665
5360
  msgid "Resend Notifications"
5361
  msgstr ""
5362
 
5363
+ #: lite/wpforms-lite.php:666
5364
  msgid "See Geolocation Data"
5365
  msgstr ""
5366
 
5367
+ #: lite/wpforms-lite.php:672
5368
  msgid "Upgrade to WPForms Pro Now"
5369
  msgstr ""
5370
 
6647
  msgid "Collect payments for product and service orders with this ready-made form template. You can add and remove fields as needed."
6648
  msgstr ""
6649
 
6650
+ #: src/Lite/Admin/Pages/Addons.php:98
6651
+ msgid "WPForms Addons is a PRO feature."
6652
+ msgstr ""
6653
+
6654
+ #: src/Lite/Admin/Pages/Addons.php:99
6655
+ msgid "Please upgrade to the PRO plan to unlock them and more awesome features."
6656
+ msgstr ""
6657
+
6658
  #: src/Lite/Admin/Settings/Access.php:84
6659
  msgid "Access"
6660
  msgstr ""
6763
 
6764
  #: src/Logger/ListTable.php:258
6765
  #: src/Logger/ListTable.php:459
6766
+ #: src/SmartTags/SmartTags.php:111
6767
  msgid "Form ID"
6768
  msgstr ""
6769
 
6774
 
6775
  #: src/Logger/ListTable.php:260
6776
  #: src/Logger/ListTable.php:445
6777
+ #: src/SmartTags/SmartTags.php:116
6778
  msgid "Date"
6779
  msgstr ""
6780
 
6812
  msgstr ""
6813
 
6814
  #: src/Logger/ListTable.php:483
6815
+ #: src/SmartTags/SmartTags.php:119
6816
  msgid "User ID"
6817
  msgstr ""
6818
 
6904
  msgid "Missing required data in payload."
6905
  msgstr ""
6906
 
6907
+ #: src/SmartTags/SmartTags.php:107
6908
  msgid "Site Administrator Email"
6909
  msgstr ""
6910
 
6911
+ #: src/SmartTags/SmartTags.php:108
6912
  msgid "Field ID"
6913
  msgstr ""
6914
 
6915
+ #: src/SmartTags/SmartTags.php:109
6916
  msgid "Field HTML ID"
6917
  msgstr ""
6918
 
6919
+ #: src/SmartTags/SmartTags.php:110
6920
  msgid "Field Value"
6921
  msgstr ""
6922
 
6923
+ #: src/SmartTags/SmartTags.php:113
6924
  msgid "Embedded Post/Page Title"
6925
  msgstr ""
6926
 
6927
+ #: src/SmartTags/SmartTags.php:114
6928
  msgid "Embedded Post/Page URL"
6929
  msgstr ""
6930
 
6931
+ #: src/SmartTags/SmartTags.php:115
6932
  msgid "Embedded Post/Page ID"
6933
  msgstr ""
6934
 
6935
+ #: src/SmartTags/SmartTags.php:117
6936
  msgid "Query String Variable"
6937
  msgstr ""
6938
 
6939
+ #: src/SmartTags/SmartTags.php:118
6940
  msgid "User IP Address"
6941
  msgstr ""
6942
 
6943
+ #: src/SmartTags/SmartTags.php:120
6944
  msgid "User Display Name"
6945
  msgstr ""
6946
 
6947
+ #: src/SmartTags/SmartTags.php:121
6948
  msgid "User Full Name"
6949
  msgstr ""
6950
 
6951
+ #: src/SmartTags/SmartTags.php:122
6952
  msgid "User First Name"
6953
  msgstr ""
6954
 
6955
+ #: src/SmartTags/SmartTags.php:123
6956
  msgid "User Last Name"
6957
  msgstr ""
6958
 
6959
+ #: src/SmartTags/SmartTags.php:124
6960
  msgid "User Email"
6961
  msgstr ""
6962
 
6963
+ #: src/SmartTags/SmartTags.php:125
6964
  msgid "User Meta"
6965
  msgstr ""
6966
 
6967
+ #: src/SmartTags/SmartTags.php:126
6968
  msgid "Author ID"
6969
  msgstr ""
6970
 
6971
+ #: src/SmartTags/SmartTags.php:127
6972
  msgid "Author Name"
6973
  msgstr ""
6974
 
6975
+ #: src/SmartTags/SmartTags.php:128
6976
  msgid "Author Email"
6977
  msgstr ""
6978
 
6979
+ #: src/SmartTags/SmartTags.php:129
6980
  msgid "Referrer URL"
6981
  msgstr ""
6982
 
6983
+ #: src/SmartTags/SmartTags.php:130
6984
  msgid "Login URL"
6985
  msgstr ""
6986
 
6987
+ #: src/SmartTags/SmartTags.php:131
6988
  msgid "Logout URL"
6989
  msgstr ""
6990
 
6991
+ #: src/SmartTags/SmartTags.php:132
6992
  msgid "Register URL"
6993
  msgstr ""
6994
 
6995
+ #: src/SmartTags/SmartTags.php:133
6996
  msgid "Lost Password URL"
6997
  msgstr ""
6998
 
6999
  #: src/WPForms.php:126
7000
+ msgid "Property smart_tags was deprecated, use wpforms()->get( 'smart_tags' ) instead of wpforms()->smart_tags"
7001
  msgstr ""
7002
 
7003
  #: templates/admin/challenge/builder.php:15
changelog.txt CHANGED
@@ -1,5 +1,14 @@
1
  == Changelog ==
2
 
 
 
 
 
 
 
 
 
 
3
  = 1.6.7 =
4
  - Changed: Email Summaries can now be tweaked via the hook to have multiple "To" recipients.
5
  - Changed: Email Summaries subject line is changed to reduce a chance of going into spam folder.
1
  == Changelog ==
2
 
3
+ = 1.6.7.1 =
4
+ - Changed: Improved logic of pasting a text in the fields with word and character limits.
5
+ - Changed: Updated DOMPurify lib to 2.2.9.
6
+ - Changed: Some admin notices can be dismissed on a per-user basis.
7
+ - Fixed: Smart Tags don't parse dot and comma symbols well.
8
+ - Fixed: In rare cases, WPForms functions calls are not handled correctly inside the third-party frontend AJAX calls.
9
+ - Fixed: Incorrect `wpforms_smart_tag_process` filter deprecation notice.
10
+ - Fixed: Compatibility with the Elementor 3.1.x, 3.2.x and 3.3.x.
11
+
12
  = 1.6.7 =
13
  - Changed: Email Summaries can now be tweaked via the hook to have multiple "To" recipients.
14
  - Changed: Email Summaries subject line is changed to reduce a chance of going into spam folder.
includes/admin/admin.php CHANGED
@@ -379,7 +379,7 @@ function wpforms_check_php_version() {
379
  }
380
 
381
  // Display the notice, finally.
382
- WPForms_Admin_Notice::error(
383
  '<p>' .
384
  sprintf(
385
  wp_kses(
379
  }
380
 
381
  // Display the notice, finally.
382
+ \WPForms\Admin\Notice::error(
383
  '<p>' .
384
  sprintf(
385
  wp_kses(
includes/admin/ajax-actions.php CHANGED
@@ -97,54 +97,59 @@ function wpforms_new_form() {
97
 
98
  // Check for form name.
99
  if ( empty( $_POST['title'] ) ) {
100
- die( esc_html__( 'No form name provided', 'wpforms-lite' ) );
 
 
 
 
101
  }
102
 
103
  // Create form.
104
- $form_title = sanitize_text_field( $_POST['title'] );
105
- $form_template = sanitize_text_field( $_POST['template'] );
106
  $title_exists = get_page_by_title( $form_title, 'OBJECT', 'wpforms' );
107
  $form_id = wpforms()->form->add(
108
  $form_title,
109
- array(),
110
- array(
111
  'template' => $form_template,
112
- )
113
  );
114
- if ( null !== $title_exists ) {
 
115
  wp_update_post(
116
- array(
117
  'ID' => $form_id,
118
  'post_title' => $form_title . ' (ID #' . $form_id . ')',
119
- )
120
  );
121
  }
122
 
123
  if ( ! $form_id ) {
124
- die( esc_html__( 'Error creating form', 'wpforms-lite' ) );
125
  }
126
 
127
  if ( wpforms_current_user_can( 'edit_form_single', $form_id ) ) {
128
  wp_send_json_success(
129
- array(
130
  'id' => $form_id,
131
  'redirect' => add_query_arg(
132
- array(
133
  'view' => 'fields',
134
  'form_id' => $form_id,
135
  'newform' => '1',
136
- ),
137
  admin_url( 'admin.php?page=wpforms-builder' )
138
  ),
139
- )
140
  );
141
  }
142
 
143
  if ( wpforms_current_user_can( 'view_forms' ) ) {
144
- wp_send_json_success( array( 'redirect' => admin_url( 'admin.php?page=wpforms-overview' ) ) );
145
  }
146
 
147
- wp_send_json_success( array( 'redirect' => admin_url() ) );
148
  }
149
 
150
  add_action( 'wp_ajax_wpforms_new_form', 'wpforms_new_form' );
97
 
98
  // Check for form name.
99
  if ( empty( $_POST['title'] ) ) {
100
+ die( esc_html__( 'No form name provided.', 'wpforms-lite' ) );
101
+ }
102
+
103
+ if ( ! isset( $_POST['template'] ) ) {
104
+ $_POST['template'] = '';
105
  }
106
 
107
  // Create form.
108
+ $form_title = sanitize_text_field( wp_unslash( $_POST['title'] ) );
109
+ $form_template = sanitize_text_field( wp_unslash( $_POST['template'] ) );
110
  $title_exists = get_page_by_title( $form_title, 'OBJECT', 'wpforms' );
111
  $form_id = wpforms()->form->add(
112
  $form_title,
113
+ [],
114
+ [
115
  'template' => $form_template,
116
+ ]
117
  );
118
+
119
+ if ( $title_exists !== null ) {
120
  wp_update_post(
121
+ [
122
  'ID' => $form_id,
123
  'post_title' => $form_title . ' (ID #' . $form_id . ')',
124
+ ]
125
  );
126
  }
127
 
128
  if ( ! $form_id ) {
129
+ die( esc_html__( 'Error creating form.', 'wpforms-lite' ) );
130
  }
131
 
132
  if ( wpforms_current_user_can( 'edit_form_single', $form_id ) ) {
133
  wp_send_json_success(
134
+ [
135
  'id' => $form_id,
136
  'redirect' => add_query_arg(
137
+ [
138
  'view' => 'fields',
139
  'form_id' => $form_id,
140
  'newform' => '1',
141
+ ],
142
  admin_url( 'admin.php?page=wpforms-builder' )
143
  ),
144
+ ]
145
  );
146
  }
147
 
148
  if ( wpforms_current_user_can( 'view_forms' ) ) {
149
+ wp_send_json_success( [ 'redirect' => admin_url( 'admin.php?page=wpforms-overview' ) ] );
150
  }
151
 
152
+ wp_send_json_success( [ 'redirect' => admin_url() ] );
153
  }
154
 
155
  add_action( 'wp_ajax_wpforms_new_form', 'wpforms_new_form' );
includes/admin/builder/class-builder.php CHANGED
@@ -311,7 +311,7 @@ class WPForms_Builder {
311
  'dom-purify',
312
  WPFORMS_PLUGIN_URL . 'assets/js/purify.min.js',
313
  [],
314
- '2.2.8'
315
  );
316
 
317
  if ( wp_is_mobile() ) {
311
  'dom-purify',
312
  WPFORMS_PLUGIN_URL . 'assets/js/purify.min.js',
313
  [],
314
+ '2.2.9'
315
  );
316
 
317
  if ( wp_is_mobile() ) {
includes/admin/class-notices.php CHANGED
@@ -9,9 +9,6 @@
9
  * @example
10
  * WPForms_Admin_Notice::warning( 'Do something please.' );
11
  *
12
- * @todo Persistent, dismissible notices.
13
- * @link https://gist.github.com/monkeymonk/2ea17e2260daaecd0049c46c8d6c85fd
14
- *
15
  * @since 1.3.9
16
  */
17
  class WPForms_Admin_Notice {
@@ -77,7 +74,7 @@ class WPForms_Admin_Notice {
77
  * @since 1.3.9
78
  *
79
  * @param string $message Message to display.
80
- * @param string $type Type of the notice (default: '').
81
  */
82
  public static function add( $message, $type = '' ) {
83
 
9
  * @example
10
  * WPForms_Admin_Notice::warning( 'Do something please.' );
11
  *
 
 
 
12
  * @since 1.3.9
13
  */
14
  class WPForms_Admin_Notice {
74
  * @since 1.3.9
75
  *
76
  * @param string $message Message to display.
77
+ * @param string $type Type of the notice (default: '').
78
  */
79
  public static function add( $message, $type = '' ) {
80
 
includes/admin/class-review.php CHANGED
@@ -15,11 +15,11 @@ class WPForms_Review {
15
  public function __construct() {
16
 
17
  // Admin notice requesting review.
18
- add_action( 'admin_notices', array( $this, 'review_request' ) );
19
- add_action( 'wp_ajax_wpforms_review_dismiss', array( $this, 'review_dismiss' ) );
20
 
21
  // Admin footer text.
22
- add_filter( 'admin_footer_text', array( $this, 'admin_footer' ), 1, 2 );
23
  }
24
 
25
  /**
@@ -41,21 +41,31 @@ class WPForms_Review {
41
  }
42
 
43
  // Verify that we can do a check for reviews.
44
- $review = get_option( 'wpforms_review' );
45
- $time = time();
46
- $load = false;
47
 
48
- if ( ! $review ) {
49
- $review = array(
50
  'time' => $time,
51
  'dismissed' => false,
52
- );
53
- update_option( 'wpforms_review', $review );
54
- } else {
55
- // Check if it has been dismissed or not.
56
- if ( ( isset( $review['dismissed'] ) && ! $review['dismissed'] ) && ( isset( $review['time'] ) && ( ( $review['time'] + DAY_IN_SECONDS ) <= $time ) ) ) {
57
- $load = true;
58
- }
 
 
 
 
 
 
 
 
 
 
59
  }
60
 
61
  // If we cannot load, return early.
@@ -79,38 +89,35 @@ class WPForms_Review {
79
  public function review() {
80
 
81
  // Fetch total entries.
82
- $entries = wpforms()->entry->get_entries( array( 'number' => 50 ), true );
83
 
84
  // Only show review request if the site has collected at least 50 entries.
85
  if ( empty( $entries ) || $entries < 50 ) {
86
  return;
87
  }
88
 
 
 
89
  // We have a candidate! Output a review message.
90
  ?>
91
- <div class="notice notice-info is-dismissible wpforms-review-notice">
92
- <p><?php esc_html_e( 'Hey, I noticed you collected over 50 entries from WPForms - that’s awesome! Could you please do me a BIG favor and give it a 5-star rating on WordPress to help us spread the word and boost our motivation?', 'wpforms-lite' ); ?></p>
93
- <p><strong><?php echo wp_kses( __( '~ Syed Balkhi<br>Co-Founder of WPForms', 'wpforms-lite' ), array( 'br' => array() ) ); ?></strong></p>
94
- <p>
95
- <a href="https://wordpress.org/support/plugin/wpforms-lite/reviews/?filter=5#new-post" class="wpforms-dismiss-review-notice wpforms-review-out" target="_blank" rel="noopener"><?php esc_html_e( 'Ok, you deserve it', 'wpforms-lite' ); ?></a><br>
96
- <a href="#" class="wpforms-dismiss-review-notice" target="_blank" rel="noopener noreferrer"><?php esc_html_e( 'Nope, maybe later', 'wpforms-lite' ); ?></a><br>
97
- <a href="#" class="wpforms-dismiss-review-notice" target="_blank" rel="noopener noreferrer"><?php esc_html_e( 'I already did', 'wpforms-lite' ); ?></a>
98
- </p>
99
- </div>
100
- <script type="text/javascript">
101
- jQuery( function ( $ ) {
102
- $( document ).on( 'click', '.wpforms-dismiss-review-notice, .wpforms-review-notice button', function ( event ) {
103
- if ( ! $( this ).hasClass( 'wpforms-review-out' ) ) {
104
- event.preventDefault();
105
- }
106
- $.post( ajaxurl, {
107
- action: 'wpforms_review_dismiss'
108
- } );
109
- $( '.wpforms-review-notice' ).remove();
110
- } );
111
- } );
112
- </script>
113
  <?php
 
 
 
 
 
 
 
 
 
 
114
  }
115
 
116
  /**
@@ -121,7 +128,7 @@ class WPForms_Review {
121
  public function review_lite() {
122
 
123
  // Fetch when plugin was initially installed.
124
- $activated = get_option( 'wpforms_activated', array() );
125
 
126
  if ( ! empty( $activated['lite'] ) ) {
127
  // Only continue if plugin has been installed for at least 7 days.
@@ -130,6 +137,7 @@ class WPForms_Review {
130
  }
131
  } else {
132
  $activated['lite'] = time();
 
133
  update_option( 'wpforms_activated', $activated );
134
 
135
  return;
@@ -137,6 +145,7 @@ class WPForms_Review {
137
 
138
  // Only proceed with displaying if the user created at least one form.
139
  $form_count = wp_count_posts( 'wpforms' );
 
140
  if ( empty( $form_count->publish ) ) {
141
  return;
142
  }
@@ -150,45 +159,47 @@ class WPForms_Review {
150
  return;
151
  }
152
 
 
 
153
  // We have a candidate! Output a review message.
154
  ?>
155
- <div class="notice notice-info is-dismissible wpforms-review-notice">
156
- <p><?php esc_html_e( 'Hey, I noticed you created a contact form with WPForms - that’s awesome! Could you please do me a BIG favor and give it a 5-star rating on WordPress to help us spread the word and boost our motivation?', 'wpforms-lite' ); ?></p>
157
- <p><strong><?php echo wp_kses( __( '~ Syed Balkhi<br>Co-Founder of WPForms', 'wpforms-lite' ), array( 'br' => array() ) ); ?></strong></p>
158
- <p>
159
- <a href="https://wordpress.org/support/plugin/wpforms-lite/reviews/?filter=5#new-post" class="wpforms-dismiss-review-notice wpforms-review-out" target="_blank" rel="noopener noreferrer"><?php esc_html_e( 'Ok, you deserve it', 'wpforms-lite' ); ?></a><br>
160
- <a href="#" class="wpforms-dismiss-review-notice" target="_blank" rel="noopener noreferrer"><?php esc_html_e( 'Nope, maybe later', 'wpforms-lite' ); ?></a><br>
161
- <a href="#" class="wpforms-dismiss-review-notice" target="_blank" rel="noopener noreferrer"><?php esc_html_e( 'I already did', 'wpforms-lite' ); ?></a>
162
- </p>
163
- </div>
164
- <script type="text/javascript">
165
- jQuery( function ( $ ) {
166
- $( document ).on( 'click', '.wpforms-dismiss-review-notice, .wpforms-review-notice button', function ( event ) {
167
- if ( ! $( this ).hasClass( 'wpforms-review-out' ) ) {
168
- event.preventDefault();
169
- }
170
- $.post( ajaxurl, {
171
- action: 'wpforms_review_dismiss'
172
- } );
173
- $( '.wpforms-review-notice' ).remove();
174
- } );
175
- } );
176
- </script>
177
  <?php
 
 
 
 
 
 
 
 
 
 
178
  }
179
 
180
  /**
181
- * Dismiss the review admin notice
 
 
182
  *
183
  * @since 1.3.2
184
  */
185
  public function review_dismiss() {
186
 
187
- $review = get_option( 'wpforms_review', array() );
 
 
188
  $review['time'] = time();
189
  $review['dismissed'] = true;
190
 
191
  update_option( 'wpforms_review', $review );
 
192
  die;
193
  }
194
 
@@ -198,7 +209,7 @@ class WPForms_Review {
198
  *
199
  * @since 1.3.2
200
  *
201
- * @param string $text
202
  *
203
  * @return string
204
  */
@@ -209,16 +220,15 @@ class WPForms_Review {
209
  if ( ! empty( $current_screen->id ) && strpos( $current_screen->id, 'wpforms' ) !== false ) {
210
  $url = 'https://wordpress.org/support/plugin/wpforms-lite/reviews/?filter=5#new-post';
211
  $text = sprintf(
212
- wp_kses(
213
- /* translators: $1$s - WPForms plugin name; $2$s - WP.org review link; $3$s - WP.org review link. */
214
  __( 'Please rate %1$s <a href="%2$s" target="_blank" rel="noopener noreferrer">&#9733;&#9733;&#9733;&#9733;&#9733;</a> on <a href="%3$s" target="_blank" rel="noopener">WordPress.org</a> to help us spread the word. Thank you from the WPForms team!', 'wpforms-lite' ),
215
- array(
216
- 'a' => array(
217
- 'href' => array(),
218
- 'target' => array(),
219
- 'rel' => array(),
220
- ),
221
- )
222
  ),
223
  '<strong>WPForms</strong>',
224
  $url,
@@ -231,4 +241,4 @@ class WPForms_Review {
231
 
232
  }
233
 
234
- new WPForms_Review;
15
  public function __construct() {
16
 
17
  // Admin notice requesting review.
18
+ add_action( 'admin_init', [ $this, 'review_request' ] );
19
+ add_action( 'wp_ajax_wpforms_review_dismiss', [ $this, 'review_dismiss' ] );
20
 
21
  // Admin footer text.
22
+ add_filter( 'admin_footer_text', [ $this, 'admin_footer' ], 1, 2 );
23
  }
24
 
25
  /**
41
  }
42
 
43
  // Verify that we can do a check for reviews.
44
+ $notices = get_option( 'wpforms_admin_notices', [] );
45
+ $time = time();
46
+ $load = false;
47
 
48
+ if ( empty( $notices['review_request'] ) ) {
49
+ $notices['review_request'] = [
50
  'time' => $time,
51
  'dismissed' => false,
52
+ ];
53
+
54
+ update_option( 'wpforms_admin_notices', $notices );
55
+
56
+ return;
57
+ }
58
+
59
+ // Check if it has been dismissed or not.
60
+ if (
61
+ ( isset( $notices['review_request']['dismissed'] ) &&
62
+ ! $notices['review_request']['dismissed'] ) &&
63
+ (
64
+ isset( $notices['review_request']['time'] ) &&
65
+ ( ( $notices['review_request']['time'] + DAY_IN_SECONDS ) <= $time )
66
+ )
67
+ ) {
68
+ $load = true;
69
  }
70
 
71
  // If we cannot load, return early.
89
  public function review() {
90
 
91
  // Fetch total entries.
92
+ $entries = wpforms()->entry->get_entries( [ 'number' => 50 ], true );
93
 
94
  // Only show review request if the site has collected at least 50 entries.
95
  if ( empty( $entries ) || $entries < 50 ) {
96
  return;
97
  }
98
 
99
+ ob_start();
100
+
101
  // We have a candidate! Output a review message.
102
  ?>
103
+ <p><?php esc_html_e( 'Hey, I noticed you collected over 50 entries from WPForms - that’s awesome! Could you please do me a BIG favor and give it a 5-star rating on WordPress to help us spread the word and boost our motivation?', 'wpforms-lite' ); ?></p>
104
+ <p><strong><?php echo wp_kses( __( '~ Syed Balkhi<br>Co-Founder of WPForms', 'wpforms-lite' ), [ 'br' => [] ] ); ?></strong></p>
105
+ <p>
106
+ <a href="https://wordpress.org/support/plugin/wpforms-lite/reviews/?filter=5#new-post" class="wpforms-notice-dismiss wpforms-review-out" target="_blank" rel="noopener"><?php esc_html_e( 'Ok, you deserve it', 'wpforms-lite' ); ?></a><br>
107
+ <a href="#" class="wpforms-notice-dismiss" target="_blank" rel="noopener noreferrer"><?php esc_html_e( 'Nope, maybe later', 'wpforms-lite' ); ?></a><br>
108
+ <a href="#" class="wpforms-notice-dismiss" target="_blank" rel="noopener noreferrer"><?php esc_html_e( 'I already did', 'wpforms-lite' ); ?></a>
109
+ </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
110
  <?php
111
+
112
+ \WPForms\Admin\Notice::info(
113
+ ob_get_clean(),
114
+ [
115
+ 'dismiss' => \WPForms\Admin\Notice::DISMISS_GLOBAL,
116
+ 'slug' => 'review_request',
117
+ 'autop' => false,
118
+ 'class' => 'wpforms-review-notice',
119
+ ]
120
+ );
121
  }
122
 
123
  /**
128
  public function review_lite() {
129
 
130
  // Fetch when plugin was initially installed.
131
+ $activated = get_option( 'wpforms_activated', [] );
132
 
133
  if ( ! empty( $activated['lite'] ) ) {
134
  // Only continue if plugin has been installed for at least 7 days.
137
  }
138
  } else {
139
  $activated['lite'] = time();
140
+
141
  update_option( 'wpforms_activated', $activated );
142
 
143
  return;
145
 
146
  // Only proceed with displaying if the user created at least one form.
147
  $form_count = wp_count_posts( 'wpforms' );
148
+
149
  if ( empty( $form_count->publish ) ) {
150
  return;
151
  }
159
  return;
160
  }
161
 
162
+ ob_start();
163
+
164
  // We have a candidate! Output a review message.
165
  ?>
166
+ <p><?php esc_html_e( 'Hey, I noticed you created a contact form with WPForms - that’s awesome! Could you please do me a BIG favor and give it a 5-star rating on WordPress to help us spread the word and boost our motivation?', 'wpforms-lite' ); ?></p>
167
+ <p><strong><?php echo wp_kses( __( '~ Syed Balkhi<br>Co-Founder of WPForms', 'wpforms-lite' ), [ 'br' => [] ] ); ?></strong></p>
168
+ <p>
169
+ <a href="https://wordpress.org/support/plugin/wpforms-lite/reviews/?filter=5#new-post" class="wpforms-notice-dismiss wpforms-review-out" target="_blank" rel="noopener noreferrer"><?php esc_html_e( 'Ok, you deserve it', 'wpforms-lite' ); ?></a><br>
170
+ <a href="#" class="wpforms-notice-dismiss" target="_blank" rel="noopener noreferrer"><?php esc_html_e( 'Nope, maybe later', 'wpforms-lite' ); ?></a><br>
171
+ <a href="#" class="wpforms-notice-dismiss" target="_blank" rel="noopener noreferrer"><?php esc_html_e( 'I already did', 'wpforms-lite' ); ?></a>
172
+ </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
173
  <?php
174
+
175
+ \WPForms\Admin\Notice::info(
176
+ ob_get_clean(),
177
+ [
178
+ 'dismiss' => \WPForms\Admin\Notice::DISMISS_GLOBAL,
179
+ 'slug' => 'review_lite_request',
180
+ 'autop' => false,
181
+ 'class' => 'wpforms-review-notice',
182
+ ]
183
+ );
184
  }
185
 
186
  /**
187
+ * Dismiss the review admin notice.
188
+ *
189
+ * @deprecated 1.6.7.1
190
  *
191
  * @since 1.3.2
192
  */
193
  public function review_dismiss() {
194
 
195
+ _deprecated_function( __CLASS__ . '::' . __METHOD__, '1.6.7.1 of the WPForms plugin' );
196
+
197
+ $review = get_option( 'wpforms_review', [] );
198
  $review['time'] = time();
199
  $review['dismissed'] = true;
200
 
201
  update_option( 'wpforms_review', $review );
202
+
203
  die;
204
  }
205
 
209
  *
210
  * @since 1.3.2
211
  *
212
+ * @param string $text Footer text.
213
  *
214
  * @return string
215
  */
220
  if ( ! empty( $current_screen->id ) && strpos( $current_screen->id, 'wpforms' ) !== false ) {
221
  $url = 'https://wordpress.org/support/plugin/wpforms-lite/reviews/?filter=5#new-post';
222
  $text = sprintf(
223
+ wp_kses( /* translators: $1$s - WPForms plugin name; $2$s - WP.org review link; $3$s - WP.org review link. */
 
224
  __( 'Please rate %1$s <a href="%2$s" target="_blank" rel="noopener noreferrer">&#9733;&#9733;&#9733;&#9733;&#9733;</a> on <a href="%3$s" target="_blank" rel="noopener">WordPress.org</a> to help us spread the word. Thank you from the WPForms team!', 'wpforms-lite' ),
225
+ [
226
+ 'a' => [
227
+ 'href' => [],
228
+ 'target' => [],
229
+ 'rel' => [],
230
+ ],
231
+ ]
232
  ),
233
  '<strong>WPForms</strong>',
234
  $url,
241
 
242
  }
243
 
244
+ new WPForms_Review();
includes/admin/class-settings.php CHANGED
@@ -152,7 +152,7 @@ class WPForms_Settings {
152
  // Save settings.
153
  wpforms_update_settings( $settings );
154
 
155
- WPForms_Admin_Notice::success( esc_html__( 'Settings were successfully saved.', 'wpforms-lite' ) );
156
  }
157
 
158
  /**
152
  // Save settings.
153
  wpforms_update_settings( $settings );
154
 
155
+ \WPForms\Admin\Notice::success( esc_html__( 'Settings were successfully saved.', 'wpforms-lite' ) );
156
  }
157
 
158
  /**
includes/admin/class-tools.php DELETED
File without changes
includes/admin/overview/class-overview-table.php CHANGED
@@ -60,7 +60,7 @@ class WPForms_Overview_Table extends WP_List_Table {
60
  *
61
  * @since 1.0.0
62
  *
63
- * @param WP_Post $form
64
  *
65
  * @return string
66
  */
@@ -74,8 +74,8 @@ class WPForms_Overview_Table extends WP_List_Table {
74
  *
75
  * @since 1.0.0
76
  *
77
- * @param WP_Post $form
78
- * @param string $column_name
79
  *
80
  * @return string
81
  */
@@ -119,7 +119,7 @@ class WPForms_Overview_Table extends WP_List_Table {
119
  *
120
  * @since 1.0.0
121
  *
122
- * @param WP_Post $form
123
  *
124
  * @return string
125
  */
60
  *
61
  * @since 1.0.0
62
  *
63
+ * @param WP_Post $form Form.
64
  *
65
  * @return string
66
  */
74
  *
75
  * @since 1.0.0
76
  *
77
+ * @param WP_Post $form Form.
78
+ * @param string $column_name Column Name.
79
  *
80
  * @return string
81
  */
119
  *
120
  * @since 1.0.0
121
  *
122
+ * @param WP_Post $form Form.
123
  *
124
  * @return string
125
  */
includes/admin/overview/class-overview.php CHANGED
@@ -198,7 +198,7 @@ class WPForms_Overview {
198
  }
199
 
200
  if ( ! empty( $notice ) ) {
201
- WPForms_Admin_Notice::add( $notice['msg'], $notice['type'] );
202
  }
203
  }
204
 
198
  }
199
 
200
  if ( ! empty( $notice ) ) {
201
+ \WPForms\Admin\Notice::add( $notice['msg'], $notice['type'] );
202
  }
203
  }
204
 
includes/class-form.php CHANGED
@@ -20,8 +20,8 @@ class WPForms_Form_Handler {
20
  $this->register_cpt();
21
 
22
  // Add wpforms to new-content admin bar menu.
23
- add_action( 'admin_bar_menu', array( $this, 'admin_bar' ), 99 );
24
-
25
  }
26
 
27
  /**
@@ -34,7 +34,7 @@ class WPForms_Form_Handler {
34
  // Custom post type arguments, which can be filtered if needed.
35
  $args = apply_filters(
36
  'wpforms_post_type_args',
37
- array(
38
  'label' => 'WPForms',
39
  'public' => false,
40
  'exclude_from_search' => true,
@@ -43,10 +43,10 @@ class WPForms_Form_Handler {
43
  'rewrite' => false,
44
  'query_var' => false,
45
  'can_export' => false,
46
- 'supports' => array( 'title' ),
47
  'capability_type' => 'wpforms_form', // Not using 'capability_type' anywhere. It just has to be custom for security reasons.
48
  'map_meta_cap' => false, // Don't let WP to map meta caps to have a granular control over this process via 'map_meta_cap' filter.
49
- )
50
  );
51
 
52
  // Register the post type.
@@ -66,15 +66,56 @@ class WPForms_Form_Handler {
66
  return;
67
  }
68
 
69
- $args = array(
70
  'id' => 'wpforms',
71
  'title' => esc_html__( 'WPForms', 'wpforms-lite' ),
72
  'href' => admin_url( 'admin.php?page=wpforms-builder' ),
73
  'parent' => 'new-content',
74
- );
 
75
  $wp_admin_bar->add_node( $args );
76
  }
77
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
78
  /**
79
  * Fetch forms.
80
  *
@@ -85,11 +126,11 @@ class WPForms_Form_Handler {
85
  *
86
  * @return array|bool|null|WP_Post
87
  */
88
- public function get( $id = '', $args = array() ) {
89
 
90
  $args = apply_filters( 'wpforms_get_form_args', $args, $id );
91
 
92
- if ( false === $id ) {
93
  return false;
94
  }
95
 
@@ -112,7 +153,7 @@ class WPForms_Form_Handler {
112
  *
113
  * @return array|bool|null|WP_Post
114
  */
115
- protected function get_single( $id = '', $args = array() ) {
116
 
117
  $args = apply_filters( 'wpforms_get_single_form_args', $args, $id );
118
 
@@ -129,7 +170,7 @@ class WPForms_Form_Handler {
129
  $form = get_post( absint( $id ) );
130
 
131
  if ( ! empty( $args['content_only'] ) ) {
132
- $form = ! empty( $form ) && 'wpforms' === $form->post_type ? wpforms_decode( $form->post_content ) : false;
133
  }
134
 
135
  return $form;
@@ -144,17 +185,17 @@ class WPForms_Form_Handler {
144
  *
145
  * @return array
146
  */
147
- protected function get_multiple( $args = array() ) {
148
 
149
  $args = apply_filters( 'wpforms_get_multiple_forms_args', $args );
150
 
151
  // No ID provided, get multiple forms.
152
- $defaults = array(
153
  'orderby' => 'id',
154
  'order' => 'ASC',
155
  'no_found_rows' => true,
156
  'nopaging' => true,
157
- );
158
 
159
  $args = wp_parse_args( $args, $defaults );
160
 
@@ -172,10 +213,10 @@ class WPForms_Form_Handler {
172
  *
173
  * @return bool
174
  */
175
- public function delete( $ids = array() ) {
176
 
177
  if ( ! is_array( $ids ) ) {
178
- $ids = array( $ids );
179
  }
180
 
181
  $ids = array_map( 'absint', $ids );
@@ -216,7 +257,7 @@ class WPForms_Form_Handler {
216
  *
217
  * @return mixed
218
  */
219
- public function add( $title = '', $args = array(), $data = array() ) {
220
 
221
  // Must have a title.
222
  if ( empty( $title ) ) {
@@ -236,13 +277,13 @@ class WPForms_Form_Handler {
236
 
237
  $args = apply_filters( 'wpforms_create_form_args', $args, $data );
238
 
239
- $form_content = array(
240
  'field_id' => '0',
241
- 'settings' => array(
242
  'form_title' => sanitize_text_field( $title ),
243
  'form_desc' => '',
244
- ),
245
- );
246
 
247
  // Prevent $args['post_content'] from overwriting predefined $form_content.
248
  // Typically it happens if the form was created with a form template and a user was not redirected to a form editing screen afterwards.
@@ -254,12 +295,12 @@ class WPForms_Form_Handler {
254
  // Merge args and create the form.
255
  $form = wp_parse_args(
256
  $args,
257
- array(
258
  'post_title' => esc_html( $title ),
259
  'post_status' => 'publish',
260
  'post_type' => 'wpforms',
261
  'post_content' => wpforms_encode( $form_content ),
262
- )
263
  );
264
 
265
  $form_id = wp_insert_post( $form );
@@ -277,25 +318,25 @@ class WPForms_Form_Handler {
277
  $form_data['settings']['submit_text'] = esc_html__( 'Submit', 'wpforms-lite' );
278
  $form_data['settings']['submit_text_processing'] = esc_html__( 'Sending...', 'wpforms-lite' );
279
  $form_data['settings']['notification_enable'] = '1';
280
- $form_data['settings']['notifications'] = array(
281
- '1' => array(
282
  'email' => '{admin_email}',
283
  'subject' => sprintf( esc_html__( 'New Entry: %s', 'wpforms-lite' ), esc_html( $title ) ),
284
  'sender_name' => get_bloginfo( 'name' ),
285
  'sender_address' => '{admin_email}',
286
  'replyto' => '{field_id="1"}',
287
  'message' => '{all_fields}',
288
- ),
289
- );
290
- $form_data['settings']['confirmations'] = array(
291
- '1' => array(
292
  'type' => 'message',
293
  'message' => esc_html__( 'Thanks for contacting us! We will be in touch with you shortly.', 'wpforms-lite' ),
294
  'message_scroll' => '1',
295
- ),
296
- );
297
 
298
- $this->update( $form_id, $form_data, array( 'cap' => 'create_forms' ) );
299
  }
300
 
301
  do_action( 'wpforms_create_form', $form_id, $form, $data );
@@ -315,7 +356,7 @@ class WPForms_Form_Handler {
315
  * @return mixed
316
  * @internal param string $title
317
  */
318
- public function update( $form_id = '', $data = array(), $args = array() ) {
319
 
320
  if ( empty( $data ) ) {
321
  return false;
@@ -372,12 +413,12 @@ class WPForms_Form_Handler {
372
 
373
  $form = apply_filters(
374
  'wpforms_save_form_args',
375
- array(
376
  'ID' => $form_id,
377
  'post_title' => esc_html( $title ),
378
  'post_excerpt' => $desc,
379
  'post_content' => wpforms_encode( $data ),
380
- ),
381
  $data,
382
  $args
383
  );
@@ -442,7 +483,7 @@ class WPForms_Form_Handler {
442
  *
443
  * @return bool
444
  */
445
- public function duplicate( $ids = array() ) {
446
 
447
  // Check for permissions.
448
  if ( ! wpforms_current_user_can( 'create_forms' ) ) {
@@ -456,7 +497,7 @@ class WPForms_Form_Handler {
456
  remove_filter( 'content_save_pre', 'balanceTags', 50 );
457
 
458
  if ( ! is_array( $ids ) ) {
459
- $ids = array( $ids );
460
  }
461
 
462
  $ids = array_map( 'absint', $ids );
@@ -482,13 +523,13 @@ class WPForms_Form_Handler {
482
  $new_form_data['settings']['form_title'] = str_replace( '(ID #' . absint( $id ) . ')', '', $new_form_data['settings']['form_title'] );
483
 
484
  // Create the duplicate form.
485
- $new_form = array(
486
  'post_content' => wpforms_encode( $new_form_data ),
487
  'post_excerpt' => $form->post_excerpt,
488
  'post_status' => $form->post_status,
489
  'post_title' => $new_form_data['settings']['form_title'],
490
  'post_type' => $form->post_type,
491
- );
492
  $new_form_id = wp_insert_post( $new_form );
493
 
494
  if ( ! $new_form_id || is_wp_error( $new_form_id ) ) {
@@ -502,7 +543,7 @@ class WPForms_Form_Handler {
502
  $new_form_data['id'] = absint( $new_form_id );
503
 
504
  // Update new duplicate form.
505
- $new_form_id = $this->update( $new_form_id, $new_form_data, array( 'cap' => 'create_forms' ) );
506
 
507
  if ( ! $new_form_id || is_wp_error( $new_form_id ) ) {
508
  return false;
@@ -522,15 +563,15 @@ class WPForms_Form_Handler {
522
  *
523
  * @return mixed int or false
524
  */
525
- public function next_field_id( $form_id, $args = array() ) {
526
 
527
  if ( empty( $form_id ) ) {
528
  return false;
529
  }
530
 
531
- $defaults = array(
532
  'content_only' => true,
533
- );
534
 
535
  if ( isset( $args['cap'] ) ) {
536
  $defaults['cap'] = $args['cap'];
@@ -573,15 +614,15 @@ class WPForms_Form_Handler {
573
  *
574
  * @return false|array
575
  */
576
- public function get_meta( $form_id, $field = '', $args = array() ) {
577
 
578
  if ( empty( $form_id ) ) {
579
  return false;
580
  }
581
 
582
- $defaults = array(
583
  'content_only' => true,
584
- );
585
 
586
  if ( isset( $args['cap'] ) ) {
587
  $defaults['cap'] = $args['cap'];
@@ -589,12 +630,16 @@ class WPForms_Form_Handler {
589
 
590
  $data = $this->get( $form_id, $defaults );
591
 
592
- if ( isset( $data['meta'] ) ) {
593
- if ( empty( $field ) ) {
594
- return $data['meta'];
595
- } elseif ( isset( $data['meta'][ $field ] ) ) {
596
- return $data['meta'][ $field ];
597
- }
 
 
 
 
598
  }
599
 
600
  return false;
@@ -610,9 +655,9 @@ class WPForms_Form_Handler {
610
  * @param mixed $meta_value Meta value.
611
  * @param array $args Additional arguments.
612
  *
613
- * @return bool
614
  */
615
- public function update_meta( $form_id, $meta_key, $meta_value, $args = array() ) {
616
 
617
  if ( empty( $form_id ) || empty( $meta_key ) ) {
618
  return false;
@@ -639,10 +684,10 @@ class WPForms_Form_Handler {
639
 
640
  $data['meta'][ $meta_key ] = $meta_value;
641
 
642
- $form = array(
643
  'ID' => $form_id,
644
  'post_content' => wpforms_encode( $data ),
645
- );
646
  $form = apply_filters( 'wpforms_update_form_meta_args', $form, $data );
647
  $form_id = wp_update_post( $form );
648
 
@@ -660,9 +705,9 @@ class WPForms_Form_Handler {
660
  * @param string $meta_key Meta key.
661
  * @param array $args Additional arguments.
662
  *
663
- * @return bool
664
  */
665
- public function delete_meta( $form_id, $meta_key, $args = array() ) {
666
 
667
  if ( empty( $form_id ) || empty( $meta_key ) ) {
668
  return false;
@@ -689,10 +734,10 @@ class WPForms_Form_Handler {
689
 
690
  unset( $data['meta'][ $meta_key ] );
691
 
692
- $form = array(
693
  'ID' => $form_id,
694
  'post_content' => wpforms_encode( $data ),
695
- );
696
  $form = apply_filters( 'wpforms_delete_form_meta_args', $form, $data );
697
  $form_id = wp_update_post( $form );
698
 
@@ -710,17 +755,17 @@ class WPForms_Form_Handler {
710
  * @param string $field_id Field ID.
711
  * @param array $args Additional arguments.
712
  *
713
- * @return array|bool
714
  */
715
- public function get_field( $form_id, $field_id = '', $args = array() ) {
716
 
717
  if ( empty( $form_id ) ) {
718
  return false;
719
  }
720
 
721
- $defaults = array(
722
  'content_only' => true,
723
- );
724
 
725
  if ( isset( $args['cap'] ) ) {
726
  $defaults['cap'] = $args['cap'];
@@ -740,11 +785,12 @@ class WPForms_Form_Handler {
740
  * @param string $field_id Field ID.
741
  * @param array $args Additional arguments.
742
  *
743
- * @return array|bool
744
  */
745
- public function get_field_meta( $form_id, $field_id = '', $args = array() ) {
746
 
747
  $field = $this->get_field( $form_id, $field_id, $args );
 
748
  if ( ! $field ) {
749
  return false;
750
  }
20
  $this->register_cpt();
21
 
22
  // Add wpforms to new-content admin bar menu.
23
+ add_action( 'admin_bar_menu', [ $this, 'admin_bar' ], 99 );
24
+ add_action( 'wpforms_create_form', [ $this, 'track_first_form' ], 10, 3 );
25
  }
26
 
27
  /**
34
  // Custom post type arguments, which can be filtered if needed.
35
  $args = apply_filters(
36
  'wpforms_post_type_args',
37
+ [
38
  'label' => 'WPForms',
39
  'public' => false,
40
  'exclude_from_search' => true,
43
  'rewrite' => false,
44
  'query_var' => false,
45
  'can_export' => false,
46
+ 'supports' => [ 'title' ],
47
  'capability_type' => 'wpforms_form', // Not using 'capability_type' anywhere. It just has to be custom for security reasons.
48
  'map_meta_cap' => false, // Don't let WP to map meta caps to have a granular control over this process via 'map_meta_cap' filter.
49
+ ]
50
  );
51
 
52
  // Register the post type.
66
  return;
67
  }
68
 
69
+ $args = [
70
  'id' => 'wpforms',
71
  'title' => esc_html__( 'WPForms', 'wpforms-lite' ),
72
  'href' => admin_url( 'admin.php?page=wpforms-builder' ),
73
  'parent' => 'new-content',
74
+ ];
75
+
76
  $wp_admin_bar->add_node( $args );
77
  }
78
 
79
+ /**
80
+ * Preserve the timestamp when the very first form has been created.
81
+ *
82
+ * @since 1.6.7.1
83
+ *
84
+ * @param int $form_id Newly created form ID.
85
+ * @param array $form Array past to create a new form in wp_posts table.
86
+ * @param array $data Additional form data.
87
+ */
88
+ public function track_first_form( $form_id, $form, $data ) {
89
+
90
+ // Do we have the value already?
91
+ $time = get_option( 'wpforms_forms_first_created' );
92
+
93
+ // Check whether we have already saved this option - skip.
94
+ if ( ! empty( $time ) ) {
95
+ return;
96
+ }
97
+
98
+ // Check whether we have any forms other than the currently created one.
99
+ $other_form = wpforms()->form->get(
100
+ '',
101
+ [
102
+ 'order' => 'id',
103
+ 'orderby' => 'desc',
104
+ 'posts_per_page' => 1,
105
+ 'nopaging' => false,
106
+ 'fields' => 'ids',
107
+ 'post__not_in' => [ $form_id ],
108
+ ]
109
+ );
110
+
111
+ // As we have other forms - we are not certain about the situation, skip.
112
+ if ( ! empty( $other_form ) ) {
113
+ return;
114
+ }
115
+
116
+ add_option( 'wpforms_forms_first_created', time(), '', 'no' );
117
+ }
118
+
119
  /**
120
  * Fetch forms.
121
  *
126
  *
127
  * @return array|bool|null|WP_Post
128
  */
129
+ public function get( $id = '', $args = [] ) {
130
 
131
  $args = apply_filters( 'wpforms_get_form_args', $args, $id );
132
 
133
+ if ( $id === false ) {
134
  return false;
135
  }
136
 
153
  *
154
  * @return array|bool|null|WP_Post
155
  */
156
+ protected function get_single( $id = '', $args = [] ) {
157
 
158
  $args = apply_filters( 'wpforms_get_single_form_args', $args, $id );
159
 
170
  $form = get_post( absint( $id ) );
171
 
172
  if ( ! empty( $args['content_only'] ) ) {
173
+ $form = ! empty( $form ) && $form->post_type === 'wpforms' ? wpforms_decode( $form->post_content ) : false;
174
  }
175
 
176
  return $form;
185
  *
186
  * @return array
187
  */
188
+ protected function get_multiple( $args = [] ) {
189
 
190
  $args = apply_filters( 'wpforms_get_multiple_forms_args', $args );
191
 
192
  // No ID provided, get multiple forms.
193
+ $defaults = [
194
  'orderby' => 'id',
195
  'order' => 'ASC',
196
  'no_found_rows' => true,
197
  'nopaging' => true,
198
+ ];
199
 
200
  $args = wp_parse_args( $args, $defaults );
201
 
213
  *
214
  * @return bool
215
  */
216
+ public function delete( $ids = [] ) {
217
 
218
  if ( ! is_array( $ids ) ) {
219
+ $ids = [ $ids ];
220
  }
221
 
222
  $ids = array_map( 'absint', $ids );
257
  *
258
  * @return mixed
259
  */
260
+ public function add( $title = '', $args = [], $data = [] ) {
261
 
262
  // Must have a title.
263
  if ( empty( $title ) ) {
277
 
278
  $args = apply_filters( 'wpforms_create_form_args', $args, $data );
279
 
280
+ $form_content = [
281
  'field_id' => '0',
282
+ 'settings' => [
283
  'form_title' => sanitize_text_field( $title ),
284
  'form_desc' => '',
285
+ ],
286
+ ];
287
 
288
  // Prevent $args['post_content'] from overwriting predefined $form_content.
289
  // Typically it happens if the form was created with a form template and a user was not redirected to a form editing screen afterwards.
295
  // Merge args and create the form.
296
  $form = wp_parse_args(
297
  $args,
298
+ [
299
  'post_title' => esc_html( $title ),
300
  'post_status' => 'publish',
301
  'post_type' => 'wpforms',
302
  'post_content' => wpforms_encode( $form_content ),
303
+ ]
304
  );
305
 
306
  $form_id = wp_insert_post( $form );
318
  $form_data['settings']['submit_text'] = esc_html__( 'Submit', 'wpforms-lite' );
319
  $form_data['settings']['submit_text_processing'] = esc_html__( 'Sending...', 'wpforms-lite' );
320
  $form_data['settings']['notification_enable'] = '1';
321
+ $form_data['settings']['notifications'] = [
322
+ '1' => [
323
  'email' => '{admin_email}',
324
  'subject' => sprintf( esc_html__( 'New Entry: %s', 'wpforms-lite' ), esc_html( $title ) ),
325
  'sender_name' => get_bloginfo( 'name' ),
326
  'sender_address' => '{admin_email}',
327
  'replyto' => '{field_id="1"}',
328
  'message' => '{all_fields}',
329
+ ],
330
+ ];
331
+ $form_data['settings']['confirmations'] = [
332
+ '1' => [
333
  'type' => 'message',
334
  'message' => esc_html__( 'Thanks for contacting us! We will be in touch with you shortly.', 'wpforms-lite' ),
335
  'message_scroll' => '1',
336
+ ],
337
+ ];
338
 
339
+ $this->update( $form_id, $form_data, [ 'cap' => 'create_forms' ] );
340
  }
341
 
342
  do_action( 'wpforms_create_form', $form_id, $form, $data );
356
  * @return mixed
357
  * @internal param string $title
358
  */
359
+ public function update( $form_id = '', $data = [], $args = [] ) {
360
 
361
  if ( empty( $data ) ) {
362
  return false;
413
 
414
  $form = apply_filters(
415
  'wpforms_save_form_args',
416
+ [
417
  'ID' => $form_id,
418
  'post_title' => esc_html( $title ),
419
  'post_excerpt' => $desc,
420
  'post_content' => wpforms_encode( $data ),
421
+ ],
422
  $data,
423
  $args
424
  );
483
  *
484
  * @return bool
485
  */
486
+ public function duplicate( $ids = [] ) {
487
 
488
  // Check for permissions.
489
  if ( ! wpforms_current_user_can( 'create_forms' ) ) {
497
  remove_filter( 'content_save_pre', 'balanceTags', 50 );
498
 
499
  if ( ! is_array( $ids ) ) {
500
+ $ids = [ $ids ];
501
  }
502
 
503
  $ids = array_map( 'absint', $ids );
523
  $new_form_data['settings']['form_title'] = str_replace( '(ID #' . absint( $id ) . ')', '', $new_form_data['settings']['form_title'] );
524
 
525
  // Create the duplicate form.
526
+ $new_form = [
527
  'post_content' => wpforms_encode( $new_form_data ),
528
  'post_excerpt' => $form->post_excerpt,
529
  'post_status' => $form->post_status,
530
  'post_title' => $new_form_data['settings']['form_title'],
531
  'post_type' => $form->post_type,
532
+ ];
533
  $new_form_id = wp_insert_post( $new_form );
534
 
535
  if ( ! $new_form_id || is_wp_error( $new_form_id ) ) {
543
  $new_form_data['id'] = absint( $new_form_id );
544
 
545
  // Update new duplicate form.
546
+ $new_form_id = $this->update( $new_form_id, $new_form_data, [ 'cap' => 'create_forms' ] );
547
 
548
  if ( ! $new_form_id || is_wp_error( $new_form_id ) ) {
549
  return false;
563
  *
564
  * @return mixed int or false
565
  */
566
+ public function next_field_id( $form_id, $args = [] ) {
567
 
568
  if ( empty( $form_id ) ) {
569
  return false;
570
  }
571
 
572
+ $defaults = [
573
  'content_only' => true,
574
+ ];
575
 
576
  if ( isset( $args['cap'] ) ) {
577
  $defaults['cap'] = $args['cap'];
614
  *
615
  * @return false|array
616
  */
617
+ public function get_meta( $form_id, $field = '', $args = [] ) {
618
 
619
  if ( empty( $form_id ) ) {
620
  return false;
621
  }
622
 
623
+ $defaults = [
624
  'content_only' => true,
625
+ ];
626
 
627
  if ( isset( $args['cap'] ) ) {
628
  $defaults['cap'] = $args['cap'];
630
 
631
  $data = $this->get( $form_id, $defaults );
632
 
633
+ if ( ! isset( $data['meta'] ) ) {
634
+ return false;
635
+ }
636
+
637
+ if ( empty( $field ) ) {
638
+ return $data['meta'];
639
+ }
640
+
641
+ if ( isset( $data['meta'][ $field ] ) ) {
642
+ return $data['meta'][ $field ];
643
  }
644
 
645
  return false;
655
  * @param mixed $meta_value Meta value.
656
  * @param array $args Additional arguments.
657
  *
658
+ * @return false|int|WP_Error
659
  */
660
+ public function update_meta( $form_id, $meta_key, $meta_value, $args = [] ) {
661
 
662
  if ( empty( $form_id ) || empty( $meta_key ) ) {
663
  return false;
684
 
685
  $data['meta'][ $meta_key ] = $meta_value;
686
 
687
+ $form = [
688
  'ID' => $form_id,
689
  'post_content' => wpforms_encode( $data ),
690
+ ];
691
  $form = apply_filters( 'wpforms_update_form_meta_args', $form, $data );
692
  $form_id = wp_update_post( $form );
693
 
705
  * @param string $meta_key Meta key.
706
  * @param array $args Additional arguments.
707
  *
708
+ * @return false|int|WP_Error
709
  */
710
+ public function delete_meta( $form_id, $meta_key, $args = [] ) {
711
 
712
  if ( empty( $form_id ) || empty( $meta_key ) ) {
713
  return false;
734
 
735
  unset( $data['meta'][ $meta_key ] );
736
 
737
+ $form = [
738
  'ID' => $form_id,
739
  'post_content' => wpforms_encode( $data ),
740
+ ];
741
  $form = apply_filters( 'wpforms_delete_form_meta_args', $form, $data );
742
  $form_id = wp_update_post( $form );
743
 
755
  * @param string $field_id Field ID.
756
  * @param array $args Additional arguments.
757
  *
758
+ * @return array|false
759
  */
760
+ public function get_field( $form_id, $field_id = '', $args = [] ) {
761
 
762
  if ( empty( $form_id ) ) {
763
  return false;
764
  }
765
 
766
+ $defaults = [
767
  'content_only' => true,
768
+ ];
769
 
770
  if ( isset( $args['cap'] ) ) {
771
  $defaults['cap'] = $args['cap'];
785
  * @param string $field_id Field ID.
786
  * @param array $args Additional arguments.
787
  *
788
+ * @return array|false
789
  */
790
+ public function get_field_meta( $form_id, $field_id = '', $args = [] ) {
791
 
792
  $field = $this->get_field( $form_id, $field_id, $args );
793
+
794
  if ( ! $field ) {
795
  return false;
796
  }
includes/class-frontend.php CHANGED
@@ -65,32 +65,32 @@ class WPForms_Frontend {
65
  */
66
  public function __construct() {
67
 
68
- $this->forms = array();
69
 
70
  // Filters.
71
- add_filter( 'amp_skip_post', array( $this, 'amp_skip_post' ) );
72
 
73
  // Actions.
74
- add_action( 'wpforms_frontend_output_success', array( $this, 'confirmation' ), 10, 3 );
75
- add_action( 'wpforms_frontend_output', array( $this, 'head' ), 5, 5 );
76
- add_action( 'wpforms_frontend_output', array( $this, 'fields' ), 10, 5 );
77
- add_action( 'wpforms_display_field_before', array( $this, 'field_container_open' ), 5, 2 );
78
- add_action( 'wpforms_display_field_before', array( $this, 'field_label' ), 15, 2 );
79
- add_action( 'wpforms_display_field_before', array( $this, 'field_description' ), 20, 2 );
80
- add_action( 'wpforms_display_field_after', array( $this, 'field_error' ), 3, 2 );
81
- add_action( 'wpforms_display_field_after', array( $this, 'field_description' ), 5, 2 );
82
- add_action( 'wpforms_display_field_after', array( $this, 'field_container_close' ), 15, 2 );
83
- add_action( 'wpforms_frontend_output', array( $this, 'recaptcha' ), 20, 5 );
84
- add_action( 'wpforms_frontend_output', array( $this, 'foot' ), 25, 5 );
85
- add_action( 'wp_enqueue_scripts', array( $this, 'assets_header' ) );
86
- add_action( 'wp_enqueue_scripts', array( $this, 'recaptcha_noconflict' ), 9999 );
87
- add_action( 'wp_head', array( $this, 'missing_assets_error_js' ) );
88
- add_action( 'wp_footer', array( $this, 'assets_footer' ), 15 );
89
- add_action( 'wp_footer', array( $this, 'recaptcha_noconflict' ), 19 );
90
- add_action( 'wp_footer', array( $this, 'footer_end' ), 99 );
91
 
92
  // Register shortcode.
93
- add_shortcode( 'wpforms', array( $this, 'shortcode' ) );
94
  }
95
 
96
  /**
@@ -1671,7 +1671,15 @@ class WPForms_Frontend {
1671
  */
1672
  $skip = (bool) apply_filters( 'wpforms_frontend_missing_assets_error_js_disable', false );
1673
 
1674
- if ( ! wpforms_current_user_can() || wpforms_is_amp() || $skip ) {
 
 
 
 
 
 
 
 
1675
  return;
1676
  }
1677
 
65
  */
66
  public function __construct() {
67
 
68
+ $this->forms = [];
69
 
70
  // Filters.
71
+ add_filter( 'amp_skip_post', [ $this, 'amp_skip_post' ] );
72
 
73
  // Actions.
74
+ add_action( 'wpforms_frontend_output_success', [ $this, 'confirmation' ], 10, 3 );
75
+ add_action( 'wpforms_frontend_output', [ $this, 'head' ], 5, 5 );
76
+ add_action( 'wpforms_frontend_output', [ $this, 'fields' ], 10, 5 );
77
+ add_action( 'wpforms_display_field_before', [ $this, 'field_container_open' ], 5, 2 );
78
+ add_action( 'wpforms_display_field_before', [ $this, 'field_label' ], 15, 2 );
79
+ add_action( 'wpforms_display_field_before', [ $this, 'field_description' ], 20, 2 );
80
+ add_action( 'wpforms_display_field_after', [ $this, 'field_error' ], 3, 2 );
81
+ add_action( 'wpforms_display_field_after', [ $this, 'field_description' ], 5, 2 );
82
+ add_action( 'wpforms_display_field_after', [ $this, 'field_container_close' ], 15, 2 );
83
+ add_action( 'wpforms_frontend_output', [ $this, 'recaptcha' ], 20, 5 );
84
+ add_action( 'wpforms_frontend_output', [ $this, 'foot' ], 25, 5 );
85
+ add_action( 'wp_enqueue_scripts', [ $this, 'assets_header' ] );
86
+ add_action( 'wp_enqueue_scripts', [ $this, 'recaptcha_noconflict' ], 9999 );
87
+ add_action( 'wp_footer', [ $this, 'missing_assets_error_js' ] );
88
+ add_action( 'wp_footer', [ $this, 'assets_footer' ], 15 );
89
+ add_action( 'wp_footer', [ $this, 'recaptcha_noconflict' ], 19 );
90
+ add_action( 'wp_footer', [ $this, 'footer_end' ], 99 );
91
 
92
  // Register shortcode.
93
+ add_shortcode( 'wpforms', [ $this, 'shortcode' ] );
94
  }
95
 
96
  /**
1671
  */
1672
  $skip = (bool) apply_filters( 'wpforms_frontend_missing_assets_error_js_disable', false );
1673
 
1674
+ if ( $skip || ! wpforms_current_user_can() ) {
1675
+ return;
1676
+ }
1677
+
1678
+ if ( empty( $this->forms ) && ! $this->assets_global() ) {
1679
+ return;
1680
+ }
1681
+
1682
+ if ( wpforms_is_amp() ) {
1683
  return;
1684
  }
1685
 
includes/class-smart-tags.php DELETED
File without changes
includes/functions.php CHANGED
@@ -2355,30 +2355,27 @@ function wpforms_get_activated_timestamp( $type = '' ) {
2355
  *
2356
  * @since 1.5.8.2
2357
  * @since 1.6.5 Added filterable frontend ajax actions list as a fallback to missing referer cases.
 
2358
  *
2359
  * @return bool
2360
  */
2361
  function wpforms_is_frontend_ajax() {
2362
 
2363
- // It's an AJAX request.
2364
  if ( ! wp_doing_ajax() ) {
2365
  return false;
2366
  }
2367
 
2368
- // It targets admin-ajax.php.
2369
- if (
2370
- isset( $_SERVER['SCRIPT_FILENAME'] ) &&
2371
- basename( sanitize_text_field( wp_unslash( $_SERVER['SCRIPT_FILENAME'] ) ) ) !== 'admin-ajax.php'
2372
- ) {
2373
  return false;
2374
  }
2375
 
2376
- $ref = wp_get_raw_referer();
2377
- $action = isset( $_POST['action'] ) ? sanitize_key( $_POST['action'] ) : ''; // phpcs:ignore WordPress.Security.NonceVerification.Missing
2378
 
2379
- // It has a frontend AJAX action name if there's no referer.
2380
  if ( ! $ref ) {
2381
 
 
 
2382
  $frontend_actions = [
2383
  'wpforms_submit',
2384
  'wpforms_file_upload_speed_test',
@@ -2391,7 +2388,9 @@ function wpforms_is_frontend_ajax() {
2391
  'wpforms_form_abandonment',
2392
  ];
2393
 
2394
- // This hook is running on "plugins_loaded", mind the hooks order when using it.
 
 
2395
  $frontend_actions = (array) apply_filters( 'wpforms_is_frontend_ajax_frontend_actions', $frontend_actions );
2396
 
2397
  return in_array( $action, $frontend_actions, true );
@@ -2400,17 +2399,8 @@ function wpforms_is_frontend_ajax() {
2400
  $path = wp_parse_url( $ref, PHP_URL_PATH );
2401
  $admin_path = wp_parse_url( admin_url(), PHP_URL_PATH );
2402
 
2403
- // It does not contain an admin path.
2404
- if ( strpos( $path, $admin_path ) !== false ) {
2405
- return false;
2406
- }
2407
-
2408
- // It's a WPForms request.
2409
- if ( strpos( $action, 'wpforms' ) !== 0 ) {
2410
- return false;
2411
- }
2412
-
2413
- return true;
2414
  }
2415
 
2416
  /**
2355
  *
2356
  * @since 1.5.8.2
2357
  * @since 1.6.5 Added filterable frontend ajax actions list as a fallback to missing referer cases.
2358
+ * @since 1.6.7.1 Removed a requirement for an AJAX action to be a WPForms action if referer is not missing.
2359
  *
2360
  * @return bool
2361
  */
2362
  function wpforms_is_frontend_ajax() {
2363
 
 
2364
  if ( ! wp_doing_ajax() ) {
2365
  return false;
2366
  }
2367
 
2368
+ // Additional check to make sure the request targets admin-ajax.php.
2369
+ if ( isset( $_SERVER['SCRIPT_FILENAME'] ) && basename( sanitize_text_field( wp_unslash( $_SERVER['SCRIPT_FILENAME'] ) ) ) !== 'admin-ajax.php' ) {
 
 
 
2370
  return false;
2371
  }
2372
 
2373
+ $ref = wp_get_raw_referer();
 
2374
 
 
2375
  if ( ! $ref ) {
2376
 
2377
+ // Try to detect a frontend AJAX call indirectly by comparing the current action
2378
+ // with a known frontend actions list in case there's no HTTP referer.
2379
  $frontend_actions = [
2380
  'wpforms_submit',
2381
  'wpforms_file_upload_speed_test',
2388
  'wpforms_form_abandonment',
2389
  ];
2390
 
2391
+ $action = isset( $_REQUEST['action'] ) ? sanitize_key( $_REQUEST['action'] ) : ''; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
2392
+
2393
+ // This filter may be running as early as "plugins_loaded" hook. Please mind the hooks order when using it.
2394
  $frontend_actions = (array) apply_filters( 'wpforms_is_frontend_ajax_frontend_actions', $frontend_actions );
2395
 
2396
  return in_array( $action, $frontend_actions, true );
2399
  $path = wp_parse_url( $ref, PHP_URL_PATH );
2400
  $admin_path = wp_parse_url( admin_url(), PHP_URL_PATH );
2401
 
2402
+ // It's a frontend AJAX call if HTTP referer doesn't contain an admin path.
2403
+ return strpos( $path, $admin_path ) === false;
 
 
 
 
 
 
 
 
 
2404
  }
2405
 
2406
  /**
includes/providers/class-constant-contact.php CHANGED
@@ -11,6 +11,7 @@ class WPForms_Constant_Contact extends WPForms_Provider {
11
  * Provider access token.
12
  *
13
  * @since 1.3.6
 
14
  * @var string
15
  */
16
  public $access_token;
@@ -19,6 +20,7 @@ class WPForms_Constant_Contact extends WPForms_Provider {
19
  * Provider API key.
20
  *
21
  * @since 1.3.6
 
22
  * @var string
23
  */
24
  public $api_key = 'c58xq3r27udz59h9rrq7qnvf';
@@ -27,6 +29,7 @@ class WPForms_Constant_Contact extends WPForms_Provider {
27
  * Sign up link.
28
  *
29
  * @since 1.3.6
 
30
  * @var string
31
  */
32
  public $sign_up = 'https://constant-contact.evyy.net/c/11535/341874/3411?sharedid=wpforms';
@@ -46,12 +49,14 @@ class WPForms_Constant_Contact extends WPForms_Provider {
46
 
47
  if ( is_admin() ) {
48
  // Admin notice requesting connecting.
49
- add_action( 'admin_notices', array( $this, 'connect_request' ) );
50
- add_action( 'wp_ajax_wpforms_constant_contact_dismiss', array( $this, 'connect_dismiss' ) );
51
- add_action( 'wpforms_admin_page', array( $this, 'learn_more_page' ) );
 
52
 
53
  // Provide option to override sign up link.
54
  $sign_up = get_option( 'wpforms_constant_contact_signup', false );
 
55
  if ( $sign_up ) {
56
  $this->sign_up = esc_html( $sign_up );
57
  }
@@ -66,7 +71,7 @@ class WPForms_Constant_Contact extends WPForms_Provider {
66
  * @param array $fields List of fields with their data and settings.
67
  * @param array $entry Submitted entry values.
68
  * @param array $form_data Form data and settings.
69
- * @param int $entry_id Saved entry ID.
70
  *
71
  * @return void
72
  */
@@ -625,17 +630,18 @@ class WPForms_Constant_Contact extends WPForms_Provider {
625
  }
626
 
627
  // Don't display on WPForms admin content pages.
628
- if ( ! empty( $_GET['wpforms-page'] ) ) {
629
  return;
630
  }
631
 
632
  // Don't display if user is about to connect via Settings page.
633
- if ( ! empty( $_GET['wpforms-integration'] ) && $this->slug === $_GET['wpforms-integration'] ) {
634
  return;
635
  }
636
 
637
- // Only display the notice is the Constant Contact option is set and
638
  // there are previous Constant Contact connections created.
 
639
  $cc_notice = get_option( 'wpforms_constant_contact', false );
640
  $providers = wpforms_get_providers_options();
641
 
@@ -646,42 +652,42 @@ class WPForms_Constant_Contact extends WPForms_Provider {
646
  // Output the notice message.
647
  $connect = admin_url( 'admin.php?page=wpforms-settings&wpforms-integration=constant-contact#!wpforms-tab-providers' );
648
  $learn_more = admin_url( 'admin.php?page=wpforms-page&wpforms-page=constant-contact' );
 
 
649
  ?>
650
- <div class="notice notice-info is-dismissible wpforms-constant-contact-notice">
651
- <p>
652
- <?php
653
- echo wp_kses(
654
- __( 'Get the most out of the <strong>WPForms</strong> plugin &mdash; use it with an active Constant Contact account.', 'wpforms-lite' ),
655
- array(
656
- 'strong' => array(),
657
- )
658
- );
659
- ?>
660
- </p>
661
- <p>
662
- <a href="<?php echo esc_url( $this->sign_up ); ?>" class="button-primary" target="_blank" rel="noopener noreferrer">
663
- <?php esc_html_e( 'Try Constant Contact for Free', 'wpforms-lite' ); ?>
664
- </a>
665
- <a href="<?php echo esc_url( $connect ); ?>" class="button-secondary">
666
- <?php esc_html_e( 'Connect your existing account', 'wpforms-lite' ); ?>
667
- </a>
668
- <?php
669
- printf(
670
- wp_kses(
671
- /* translators: %s - WPForms Constant Contact internal URL. */
672
- __( 'Learn More about the <a href="%s">power of email marketing</a>', 'wpforms-lite' ),
673
- array(
674
- 'a' => array(
675
- 'href' => array(),
676
- ),
677
- )
678
- ),
679
- esc_url( $learn_more )
680
- );
681
- ?>
682
- </p>
683
- </div>
684
- <style type="text/css">
685
  .wpforms-constant-contact-notice {
686
  border-left-color: #1a5285;
687
  }
@@ -700,26 +706,37 @@ class WPForms_Constant_Contact extends WPForms_Provider {
700
  margin: 0 10px 0 0;
701
  }
702
  </style>
703
- <script type="text/javascript">
704
- jQuery( function ( $ ) {
705
- $( document ).on( 'click', '.wpforms-constant-contact-notice button', function ( event ) {
706
- event.preventDefault();
707
- $.post( ajaxurl, { action: 'wpforms_constant_contact_dismiss' } );
708
- $( '.wpforms-constant-contact-notice' ).remove();
709
- } );
710
- } );
711
- </script>
712
  <?php
 
 
 
 
 
 
 
 
 
 
 
 
713
  }
714
 
715
  /**
716
  * Dismiss the Constant Contact admin notice.
717
  *
718
  * @since 1.3.6
 
 
 
719
  */
720
- public function connect_dismiss() {
 
 
 
 
721
 
722
  delete_option( 'wpforms_constant_contact' );
 
723
  wp_send_json_success();
724
  }
725
 
@@ -824,7 +841,8 @@ class WPForms_Constant_Contact extends WPForms_Provider {
824
  <p><?php esc_html_e( 'It doesn&#39;t matter what kind of business you run, what kind of website you have, or what industry you are in - you need to start building your email list today.', 'wpforms-lite' ); ?></p>
825
  <p><?php esc_html_e( 'With Constant Contact + WPForms, growing your list is easy.', 'wpforms-lite' ); ?></p>
826
  </div>
827
- <style type="text/css">
 
828
  .notice {
829
  display: none;
830
  }
@@ -971,4 +989,4 @@ class WPForms_Constant_Contact extends WPForms_Provider {
971
  }
972
  }
973
 
974
- new WPForms_Constant_Contact;
11
  * Provider access token.
12
  *
13
  * @since 1.3.6
14
+ *
15
  * @var string
16
  */
17
  public $access_token;
20
  * Provider API key.
21
  *
22
  * @since 1.3.6
23
+ *
24
  * @var string
25
  */
26
  public $api_key = 'c58xq3r27udz59h9rrq7qnvf';
29
  * Sign up link.
30
  *
31
  * @since 1.3.6
32
+ *
33
  * @var string
34
  */
35
  public $sign_up = 'https://constant-contact.evyy.net/c/11535/341874/3411?sharedid=wpforms';
49
 
50
  if ( is_admin() ) {
51
  // Admin notice requesting connecting.
52
+ $this->connect_request();
53
+
54
+ add_action( 'wpforms_admin_notice_dismiss_ajax', [ $this, 'connect_dismiss' ] );
55
+ add_action( 'wpforms_admin_page', [ $this, 'learn_more_page' ] );
56
 
57
  // Provide option to override sign up link.
58
  $sign_up = get_option( 'wpforms_constant_contact_signup', false );
59
+
60
  if ( $sign_up ) {
61
  $this->sign_up = esc_html( $sign_up );
62
  }
71
  * @param array $fields List of fields with their data and settings.
72
  * @param array $entry Submitted entry values.
73
  * @param array $form_data Form data and settings.
74
+ * @param int $entry_id Saved entry ID.
75
  *
76
  * @return void
77
  */
630
  }
631
 
632
  // Don't display on WPForms admin content pages.
633
+ if ( ! empty( $_GET['wpforms-page'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
634
  return;
635
  }
636
 
637
  // Don't display if user is about to connect via Settings page.
638
+ if ( ! empty( $_GET['wpforms-integration'] ) && $this->slug === $_GET['wpforms-integration'] ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
639
  return;
640
  }
641
 
642
+ // Only display the notice if the Constant Contact option is set and
643
  // there are previous Constant Contact connections created.
644
+ // Please do not delete 'wpforms_constant_contact' option check from the code.
645
  $cc_notice = get_option( 'wpforms_constant_contact', false );
646
  $providers = wpforms_get_providers_options();
647
 
652
  // Output the notice message.
653
  $connect = admin_url( 'admin.php?page=wpforms-settings&wpforms-integration=constant-contact#!wpforms-tab-providers' );
654
  $learn_more = admin_url( 'admin.php?page=wpforms-page&wpforms-page=constant-contact' );
655
+
656
+ ob_start();
657
  ?>
658
+ <p>
659
+ <?php
660
+ echo wp_kses(
661
+ __( 'Get the most out of the <strong>WPForms</strong> plugin &mdash; use it with an active Constant Contact account.', 'wpforms-lite' ),
662
+ [
663
+ 'strong' => [],
664
+ ]
665
+ );
666
+ ?>
667
+ </p>
668
+ <p>
669
+ <a href="<?php echo esc_url( $this->sign_up ); ?>" class="button-primary" target="_blank" rel="noopener noreferrer">
670
+ <?php esc_html_e( 'Try Constant Contact for Free', 'wpforms-lite' ); ?>
671
+ </a>
672
+ <a href="<?php echo esc_url( $connect ); ?>" class="button-secondary">
673
+ <?php esc_html_e( 'Connect your existing account', 'wpforms-lite' ); ?>
674
+ </a>
675
+ <?php
676
+ printf(
677
+ wp_kses( /* translators: %s - WPForms Constant Contact internal URL. */
678
+ __( 'Learn More about the <a href="%s">power of email marketing</a>', 'wpforms-lite' ),
679
+ [
680
+ 'a' => [
681
+ 'href' => [],
682
+ ],
683
+ ]
684
+ ),
685
+ esc_url( $learn_more )
686
+ );
687
+ ?>
688
+ </p>
689
+
690
+ <style>
 
 
691
  .wpforms-constant-contact-notice {
692
  border-left-color: #1a5285;
693
  }
706
  margin: 0 10px 0 0;
707
  }
708
  </style>
 
 
 
 
 
 
 
 
 
709
  <?php
710
+
711
+ $notice = ob_get_clean();
712
+
713
+ \WPForms\Admin\Notice::info(
714
+ $notice,
715
+ [
716
+ 'dismiss' => \WPForms\Admin\Notice::DISMISS_GLOBAL,
717
+ 'slug' => 'constant_contact_connect',
718
+ 'autop' => false,
719
+ 'class' => 'wpforms-constant-contact-notice',
720
+ ]
721
+ );
722
  }
723
 
724
  /**
725
  * Dismiss the Constant Contact admin notice.
726
  *
727
  * @since 1.3.6
728
+ * @since 1.6.7.1 Added parameter $notice_id.
729
+ *
730
+ * @param string $notice_id Notice ID (slug).
731
  */
732
+ public function connect_dismiss( $notice_id = '' ) {
733
+
734
+ if ( $notice_id !== 'global-constant_contact_connect' ) {
735
+ return;
736
+ }
737
 
738
  delete_option( 'wpforms_constant_contact' );
739
+
740
  wp_send_json_success();
741
  }
742
 
841
  <p><?php esc_html_e( 'It doesn&#39;t matter what kind of business you run, what kind of website you have, or what industry you are in - you need to start building your email list today.', 'wpforms-lite' ); ?></p>
842
  <p><?php esc_html_e( 'With Constant Contact + WPForms, growing your list is easy.', 'wpforms-lite' ); ?></p>
843
  </div>
844
+
845
+ <style>
846
  .notice {
847
  display: none;
848
  }
989
  }
990
  }
991
 
992
+ new WPForms_Constant_Contact();
lite/templates/admin/addons.php CHANGED
@@ -18,15 +18,6 @@ if ( ! defined( 'ABSPATH' ) ) {
18
  <?php esc_html_e( 'WPForms Addons', 'wpforms-lite' ); ?>
19
  <input type="search" placeholder="<?php esc_html_e( 'Search Addons', 'wpforms-lite' ); ?>" id="wpforms-admin-addons-search">
20
  </h1>
21
- <div class="notice notice-info" style="display: block;">
22
- <p><strong><?php esc_html_e( 'Form Addons are a PRO feature.', 'wpforms-lite' ); ?></strong></p>
23
- <p><?php esc_html_e( 'Please upgrade to the PRO plan to unlock them and more awesome features.', 'wpforms-lite' ); ?></p>
24
- <p>
25
- <a href="<?php echo esc_url( $upgrade_link ); ?>" class="wpforms-btn wpforms-btn-orange wpforms-btn-md wpforms-upgrade-modal" target="_blank" rel="noopener noreferrer">
26
- <?php esc_html_e( 'Upgrade Now', 'wpforms-lite' ); ?>
27
- </a>
28
- </p>
29
- </div>
30
  <div class="wpforms-admin-content">
31
  <div id="wpforms-admin-addons-list">
32
  <div class="list">
18
  <?php esc_html_e( 'WPForms Addons', 'wpforms-lite' ); ?>
19
  <input type="search" placeholder="<?php esc_html_e( 'Search Addons', 'wpforms-lite' ); ?>" id="wpforms-admin-addons-search">
20
  </h1>
 
 
 
 
 
 
 
 
 
21
  <div class="wpforms-admin-content">
22
  <div id="wpforms-admin-addons-list">
23
  <div class="list">
lite/wpforms-lite.php CHANGED
@@ -530,7 +530,7 @@ class WPForms_Lite {
530
  }
531
  ?>
532
 
533
- <style type="text/css">
534
  .wpforms-admin-content {
535
  -webkit-filter: blur(3px);
536
  -moz-filter: blur(3px);
@@ -629,6 +629,7 @@ class WPForms_Lite {
629
  float: left;
630
  }
631
  </style>
 
632
  <script type="text/javascript">
633
  jQuery( function ( $ ) {
634
  var userAgent = window.navigator.userAgent,
@@ -956,7 +957,7 @@ class WPForms_Lite {
956
  }
957
 
958
  /**
959
- * Notify user that addons are a pro feature.
960
  *
961
  * @since 1.0.0
962
  * @deprecated 1.6.7
@@ -965,6 +966,10 @@ class WPForms_Lite {
965
 
966
  _deprecated_function( __CLASS__ . '::' . __METHOD__, '1.6.7 of WPForms plugin', "wpforms()->get( 'addons_page' )->output()" );
967
 
 
 
 
 
968
  wpforms()->get( 'addons_page' )->output();
969
  }
970
 
530
  }
531
  ?>
532
 
533
+ <style>
534
  .wpforms-admin-content {
535
  -webkit-filter: blur(3px);
536
  -moz-filter: blur(3px);
629
  float: left;
630
  }
631
  </style>
632
+
633
  <script type="text/javascript">
634
  jQuery( function ( $ ) {
635
  var userAgent = window.navigator.userAgent,
957
  }
958
 
959
  /**
960
+ * Addons page.
961
  *
962
  * @since 1.0.0
963
  * @deprecated 1.6.7
966
 
967
  _deprecated_function( __CLASS__ . '::' . __METHOD__, '1.6.7 of WPForms plugin', "wpforms()->get( 'addons_page' )->output()" );
968
 
969
+ if ( ! wpforms_is_admin_page( 'addons' ) ) {
970
+ return;
971
+ }
972
+
973
  wpforms()->get( 'addons_page' )->output();
974
  }
975
 
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: wpforms, jaredatch, smub, slaFFik
3
  Tags: contact form, contact form plugin, forms, form builder, custom form, contact button, contact me, custom contact form, form manager, form, forms builder, forms creator, captcha, recaptcha, Akismet, email form, web form, feedback form, payment form, survey form, donation form, email submit form, message form, mailchimp, mailchimp form, aweber, aweber form, paypal, paypal form, stripe, stripe form, getresponse, getresponse form, email subscription, contact form widget, user registration form, wordpress registration, wordpress login form, feedback
4
  Requires at least: 4.9
5
  Tested up to: 5.7
6
- Stable tag: 1.6.7
7
  Requires PHP: 5.5
8
  License: GNU General Public License v2.0 or later
9
 
@@ -418,6 +418,15 @@ Syed Balkhi
418
 
419
  == Changelog ==
420
 
 
 
 
 
 
 
 
 
 
421
  = 1.6.7 =
422
  - Changed: Email Summaries can now be tweaked via the hook to have multiple "To" recipients.
423
  - Changed: Email Summaries subject line is changed to reduce a chance of going into spam folder.
3
  Tags: contact form, contact form plugin, forms, form builder, custom form, contact button, contact me, custom contact form, form manager, form, forms builder, forms creator, captcha, recaptcha, Akismet, email form, web form, feedback form, payment form, survey form, donation form, email submit form, message form, mailchimp, mailchimp form, aweber, aweber form, paypal, paypal form, stripe, stripe form, getresponse, getresponse form, email subscription, contact form widget, user registration form, wordpress registration, wordpress login form, feedback
4
  Requires at least: 4.9
5
  Tested up to: 5.7
6
+ Stable tag: 1.6.7.1
7
  Requires PHP: 5.5
8
  License: GNU General Public License v2.0 or later
9
 
418
 
419
  == Changelog ==
420
 
421
+ = 1.6.7.1 =
422
+ - Changed: Improved logic of pasting a text in the fields with word and character limits.
423
+ - Changed: Updated DOMPurify lib to 2.2.9.
424
+ - Changed: Some admin notices can be dismissed on a per-user basis.
425
+ - Fixed: Smart Tags don't parse dot and comma symbols well.
426
+ - Fixed: In rare cases, WPForms functions calls are not handled correctly inside the third-party frontend AJAX calls.
427
+ - Fixed: Incorrect `wpforms_smart_tag_process` filter deprecation notice.
428
+ - Fixed: Compatibility with the Elementor 3.1.x, 3.2.x and 3.3.x.
429
+
430
  = 1.6.7 =
431
  - Changed: Email Summaries can now be tweaked via the hook to have multiple "To" recipients.
432
  - Changed: Email Summaries subject line is changed to reduce a chance of going into spam folder.
src/Admin/Notice.php ADDED
@@ -0,0 +1,365 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPForms\Admin;
4
+
5
+ /**
6
+ * Dismissible admin notices.
7
+ *
8
+ * @since 1.6.7.1
9
+ *
10
+ * @example Dismissible - global:
11
+ * \WPForms\Admin\Notice::error(
12
+ * 'Fatal error!',
13
+ * [
14
+ * 'dismiss' => \WPForms\Admin\Notice::DISMISS_GLOBAL,
15
+ * 'slug' => 'fatal_error_3678975',
16
+ * ]
17
+ * );
18
+ *
19
+ * @example Dismissible - per user:
20
+ * \WPForms\Admin\Notice::warning(
21
+ * 'Do something please.',
22
+ * [
23
+ * 'dismiss' => \WPForms\Admin\Notice::DISMISS_USER,
24
+ * 'slug' => 'do_something_1238943',
25
+ * ]
26
+ * );
27
+ *
28
+ * @example Dismissible - global, add custom class to output and disable auto paragraph in text:
29
+ * \WPForms\Admin\Notice::error(
30
+ * 'Fatal error!',
31
+ * [
32
+ * 'dismiss' => \WPForms\Admin\Notice::DISMISS_GLOBAL,
33
+ * 'slug' => 'fatal_error_348975',
34
+ * 'autop' => false,
35
+ * 'class' => 'some-additional-class',
36
+ * ]
37
+ * );
38
+ *
39
+ * @example Not dismissible:
40
+ * \WPForms\Admin\Notice::success( 'Everything is good!' );
41
+ */
42
+ class Notice {
43
+
44
+ /**
45
+ * Not dismissible.
46
+ *
47
+ * Constant attended to use as the value of the $args['dismiss'] argument.
48
+ * DISMISS_NONE means that the notice is not dismissible.
49
+ *
50
+ * @since 1.6.7.1
51
+ */
52
+ const DISMISS_NONE = 0;
53
+
54
+ /**
55
+ * Dismissible global.
56
+ *
57
+ * Constant attended to use as the value of the $args['dismiss'] argument.
58
+ * DISMISS_GLOBAL means that the notice will have the dismiss button, and after clicking this button, the notice will be dismissed for all users.
59
+ *
60
+ * @since 1.6.7.1
61
+ */
62
+ const DISMISS_GLOBAL = 1;
63
+
64
+ /**
65
+ * Dismissible per user.
66
+ *
67
+ * Constant attended to use as the value of the $args['dismiss'] argument.
68
+ * DISMISS_USER means that the notice will have the dismiss button, and after clicking this button, the notice will be dismissed only for the current user..
69
+ *
70
+ * @since 1.6.7.1
71
+ */
72
+ const DISMISS_USER = 2;
73
+
74
+ /**
75
+ * Added notices.
76
+ *
77
+ * @since 1.6.7.1
78
+ *
79
+ * @var array
80
+ */
81
+ private $notices = [];
82
+
83
+ /**
84
+ * Init.
85
+ *
86
+ * @since 1.6.7.1
87
+ */
88
+ public function init() {
89
+
90
+ $this->hooks();
91
+ }
92
+
93
+ /**
94
+ * Hooks.
95
+ *
96
+ * @since 1.6.7.1
97
+ */
98
+ public function hooks() {
99
+
100
+ add_action( 'admin_notices', [ $this, 'display' ], PHP_INT_MAX );
101
+ add_action( 'wp_ajax_wpforms_notice_dismiss', [ $this, 'dismiss_ajax' ] );
102
+ }
103
+
104
+ /**
105
+ * Enqueue assets.
106
+ *
107
+ * @since 1.6.7.1
108
+ */
109
+ private function enqueues() {
110
+
111
+ $min = wpforms_get_min_suffix();
112
+
113
+ wp_enqueue_script(
114
+ 'wpforms-admin-notices',
115
+ WPFORMS_PLUGIN_URL . "assets/js/components/admin/notices{$min}.js",
116
+ [ 'jquery' ],
117
+ WPFORMS_VERSION,
118
+ true
119
+ );
120
+
121
+ wp_localize_script(
122
+ 'wpforms-admin-notices',
123
+ 'wpforms_admin_notices',
124
+ [
125
+ 'ajax_url' => admin_url( 'admin-ajax.php' ),
126
+ 'nonce' => wp_create_nonce( 'wpforms-admin' ),
127
+ ]
128
+ );
129
+ }
130
+
131
+ /**
132
+ * Display the notices.
133
+ *
134
+ * @since 1.6.7.1
135
+ */
136
+ public function display() {
137
+
138
+ $dismissed_notices = get_user_meta( get_current_user_id(), 'wpforms_admin_notices', true );
139
+ $dismissed_notices = is_array( $dismissed_notices ) ? $dismissed_notices : [];
140
+ $dismissed_notices = array_merge( $dismissed_notices, (array) get_option( 'wpforms_admin_notices', [] ) );
141
+
142
+ foreach ( $this->notices as $slug => $notice ) {
143
+ if ( isset( $dismissed_notices[ $slug ] ) && ! empty( $dismissed_notices[ $slug ]['dismissed'] ) ) {
144
+ unset( $this->notices[ $slug ] );
145
+ }
146
+ }
147
+
148
+ $output = implode( '', $this->notices );
149
+
150
+ echo $output; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
151
+
152
+ // Enqueue script only when it's needed.
153
+ if ( strpos( $output, 'is-dismissible' ) !== false ) {
154
+ $this->enqueues();
155
+ }
156
+ }
157
+
158
+ /**
159
+ * Add notice to the registry.
160
+ *
161
+ * @since 1.6.7.1
162
+ *
163
+ * @param string $message Message to display.
164
+ * @param string $type Type of the notice. Can be [ '' (default) | 'info' | 'error' | 'success' | 'warning' ].
165
+ * @param array $args The array of additional arguments. Please see the $defaults array below.
166
+ */
167
+ public static function add( $message, $type = '', $args = [] ) {
168
+
169
+ static $uniq_id = 0;
170
+
171
+ $defaults = [
172
+ 'dismiss' => self::DISMISS_NONE, // Dismissible level: one of the self::DISMISS_* const. By default notice is not dismissible.
173
+ 'slug' => '', // Slug. Should be unique if dismissible is not equal self::DISMISS_NONE.
174
+ 'autop' => true, // `false` if not needed to pass message through wpautop().
175
+ 'class' => '', // Additional CSS class.
176
+ ];
177
+
178
+ $args = wp_parse_args( $args, $defaults );
179
+
180
+ $dismissible = (int) $args['dismiss'];
181
+ $dismissible = $dismissible > self::DISMISS_USER ? self::DISMISS_USER : $dismissible;
182
+
183
+ $class = $dismissible > self::DISMISS_NONE ? ' is-dismissible' : '';
184
+ $global = ( $dismissible === self::DISMISS_GLOBAL ) ? 'global-' : '';
185
+ $slug = sanitize_key( $args['slug'] );
186
+
187
+ ++$uniq_id;
188
+
189
+ $uniq_id += ( $uniq_id === (int) $slug ) ? 1 : 0;
190
+
191
+ $id = 'wpforms-notice-' . $global;
192
+ $id .= empty( $slug ) ? $uniq_id : $slug;
193
+ $type = ! empty( $type ) ? 'notice-' . esc_attr( sanitize_key( $type ) ) : '';
194
+ $class = empty( $args['class'] ) ? $class : $class . ' ' . esc_attr( sanitize_key( $args['class'] ) );
195
+ $message = $args['autop'] ? wpautop( $message ) : $message;
196
+ $notice = sprintf(
197
+ '<div class="notice wpforms-notice %s%s" id="%s">%s</div>',
198
+ esc_attr( $type ),
199
+ esc_attr( $class ),
200
+ esc_attr( $id ),
201
+ $message
202
+ );
203
+
204
+ if ( empty( $slug ) ) {
205
+ wpforms()->get( 'notice' )->notices[] = $notice;
206
+ } else {
207
+ wpforms()->get( 'notice' )->notices[ $slug ] = $notice;
208
+ }
209
+ }
210
+
211
+ /**
212
+ * Add info notice.
213
+ *
214
+ * @since 1.6.7.1
215
+ *
216
+ * @param string $message Message to display.
217
+ * @param array $args Array of additional arguments. Details in the self::add() method.
218
+ */
219
+ public static function info( $message, $args = [] ) {
220
+
221
+ self::add( $message, 'info', $args );
222
+ }
223
+
224
+ /**
225
+ * Add error notice.
226
+ *
227
+ * @since 1.6.7.1
228
+ *
229
+ * @param string $message Message to display.
230
+ * @param array $args Array of additional arguments. Details in the self::add() method.
231
+ */
232
+ public static function error( $message, $args = [] ) {
233
+
234
+ self::add( $message, 'error', $args );
235
+ }
236
+
237
+ /**
238
+ * Add success notice.
239
+ *
240
+ * @since 1.6.7.1
241
+ *
242
+ * @param string $message Message to display.
243
+ * @param array $args Array of additional arguments. Details in the self::add() method.
244
+ */
245
+ public static function success( $message, $args = [] ) {
246
+
247
+ self::add( $message, 'success', $args );
248
+ }
249
+
250
+ /**
251
+ * Add warning notice.
252
+ *
253
+ * @since 1.6.7.1
254
+ *
255
+ * @param string $message Message to display.
256
+ * @param array $args Array of additional arguments. Details in the self::add() method.
257
+ */
258
+ public static function warning( $message, $args = [] ) {
259
+
260
+ self::add( $message, 'warning', $args );
261
+ }
262
+
263
+ /**
264
+ * AJAX routine that updates dismissed notices meta data.
265
+ *
266
+ * @since 1.6.7.1
267
+ */
268
+ public function dismiss_ajax() {
269
+
270
+ // Run a security check.
271
+ check_ajax_referer( 'wpforms-admin', 'nonce' );
272
+
273
+ // Sanitize POST data.
274
+ $post = array_map( 'sanitize_key', wp_unslash( $_POST ) );
275
+
276
+ // Update notices meta data.
277
+ if ( strpos( $post['id'], 'global-' ) !== false ) {
278
+
279
+ // Check for permissions.
280
+ if ( ! wpforms_current_user_can() ) {
281
+ wp_send_json_error();
282
+ }
283
+
284
+ $notices = $this->dismiss_global( $post['id'] );
285
+ $level = self::DISMISS_GLOBAL;
286
+
287
+ } else {
288
+
289
+ $notices = $this->dismiss_user( $post['id'] );
290
+ $level = self::DISMISS_USER;
291
+ }
292
+
293
+ /**
294
+ * Allows developers to apply additional logic to the dismissing notice process.
295
+ * Executes after updating option or user meta (according to the notice level).
296
+ *
297
+ * @since 1.6.7.1
298
+ *
299
+ * @param string $notice_id Notice ID (slug).
300
+ * @param integer $level Notice level.
301
+ * @param array $notices Dismissed notices.
302
+ */
303
+ do_action( 'wpforms_admin_notice_dismiss_ajax', $post['id'], $level, $notices );
304
+
305
+ if ( ! wpforms_debug() ) {
306
+ wp_send_json_success();
307
+ }
308
+
309
+ wp_send_json_success(
310
+ [
311
+ 'id' => $post['id'],
312
+ 'time' => time(),
313
+ 'level' => $level,
314
+ 'notices' => $notices,
315
+ ]
316
+ );
317
+ }
318
+
319
+ /**
320
+ * AJAX sub-routine that updates dismissed notices option.
321
+ *
322
+ * @since 1.6.7.1
323
+ *
324
+ * @param string $id Notice Id.
325
+ *
326
+ * @return array Notices.
327
+ */
328
+ private function dismiss_global( $id ) {
329
+
330
+ $id = str_replace( 'global-', '', $id );
331
+ $notices = get_option( 'wpforms_admin_notices', [] );
332
+ $notices[ $id ] = [
333
+ 'time' => time(),
334
+ 'dismissed' => true,
335
+ ];
336
+
337
+ update_option( 'wpforms_admin_notices', $notices, true );
338
+
339
+ return $notices;
340
+ }
341
+
342
+ /**
343
+ * AJAX sub-routine that updates dismissed notices user meta.
344
+ *
345
+ * @since 1.6.7.1
346
+ *
347
+ * @param string $id Notice Id.
348
+ *
349
+ * @return array Notices.
350
+ */
351
+ private function dismiss_user( $id ) {
352
+
353
+ $user_id = get_current_user_id();
354
+ $notices = get_user_meta( $user_id, 'wpforms_admin_notices', true );
355
+ $notices = ! is_array( $notices ) ? [] : $notices;
356
+ $notices[ $id ] = [
357
+ 'time' => time(),
358
+ 'dismissed' => true,
359
+ ];
360
+
361
+ update_user_meta( $user_id, 'wpforms_admin_notices', $notices );
362
+
363
+ return $notices;
364
+ }
365
+ }
src/Admin/Settings/Captcha.php CHANGED
@@ -280,7 +280,7 @@ class Captcha {
280
  return;
281
  }
282
 
283
- \WPForms_Admin_Notice::info( esc_html__( 'A preview of your CAPTCHA is displayed below. Please view to verify the CAPTCHA settings are correct.', 'wpforms-lite' ) );
284
  }
285
 
286
  /**
280
  return;
281
  }
282
 
283
+ \WPForms\Admin\Notice::info( esc_html__( 'A preview of your CAPTCHA is displayed below. Please view to verify the CAPTCHA settings are correct.', 'wpforms-lite' ) );
284
  }
285
 
286
  /**
src/Integrations/UsageTracking/UsageTracking.php CHANGED
@@ -122,11 +122,12 @@ class UsageTracking implements IntegrationInterface {
122
 
123
  $theme_data = wp_get_theme();
124
  $activated_dates = get_option( 'wpforms_activated', [] );
 
125
  $forms = $this->get_all_forms();
126
  $forms_total = count( $forms );
127
  $entries_total = $this->get_entries_total();
128
 
129
- return [
130
  // Generic data (environment).
131
  'url' => home_url(),
132
  'php_version' => PHP_MAJOR_VERSION . '.' . PHP_MINOR_VERSION,
@@ -161,6 +162,12 @@ class UsageTracking implements IntegrationInterface {
161
  'wpforms_multiple_notifications' => count( $this->get_forms_with_multiple_notifications( $forms ) ),
162
  'wpforms_ajax_form_submissions' => count( $this->get_ajax_form_submissions( $forms ) ),
163
  ];
 
 
 
 
 
 
164
  }
165
 
166
  /**
@@ -228,6 +235,8 @@ class UsageTracking implements IntegrationInterface {
228
  * We use `wp_timezone_string()` when it's available (WP 5.3+),
229
  * otherwise fallback to the same code, copy-pasted.
230
  *
 
 
231
  * @since 1.6.1
232
  *
233
  * @return string
122
 
123
  $theme_data = wp_get_theme();
124
  $activated_dates = get_option( 'wpforms_activated', [] );
125
+ $first_form_date = get_option( 'wpforms_forms_first_created' );
126
  $forms = $this->get_all_forms();
127
  $forms_total = count( $forms );
128
  $entries_total = $this->get_entries_total();
129
 
130
+ $data = [
131
  // Generic data (environment).
132
  'url' => home_url(),
133
  'php_version' => PHP_MAJOR_VERSION . '.' . PHP_MINOR_VERSION,
162
  'wpforms_multiple_notifications' => count( $this->get_forms_with_multiple_notifications( $forms ) ),
163
  'wpforms_ajax_form_submissions' => count( $this->get_ajax_form_submissions( $forms ) ),
164
  ];
165
+
166
+ if ( ! empty( $first_form_date ) ) {
167
+ $data['wpforms_forms_first_created'] = $first_form_date;
168
+ }
169
+
170
+ return $data;
171
  }
172
 
173
  /**
235
  * We use `wp_timezone_string()` when it's available (WP 5.3+),
236
  * otherwise fallback to the same code, copy-pasted.
237
  *
238
+ * @see wp_timezone_string()
239
+ *
240
  * @since 1.6.1
241
  *
242
  * @return string
src/Lite/Admin/Pages/Addons.php CHANGED
@@ -53,6 +53,7 @@ class Addons {
53
  public function hooks() {
54
 
55
  add_action( 'admin_enqueue_scripts', [ $this, 'enqueues' ] );
 
56
  add_action( 'wpforms_admin_page', [ $this, 'output' ] );
57
  }
58
 
@@ -79,6 +80,33 @@ class Addons {
79
  );
80
  }
81
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
82
  /**
83
  * Render the Addons page.
84
  *
53
  public function hooks() {
54
 
55
  add_action( 'admin_enqueue_scripts', [ $this, 'enqueues' ] );
56
+ add_action( 'admin_notices', [ $this, 'notices' ] );
57
  add_action( 'wpforms_admin_page', [ $this, 'output' ] );
58
  }
59
 
80
  );
81
  }
82
 
83
+ /**
84
+ * Notices.
85
+ *
86
+ * @since 1.6.7.1
87
+ */
88
+ public function notices() {
89
+
90
+ $notice = sprintf(
91
+ '<p><strong>%1$s</strong></p>
92
+ <p>%2$s</p>
93
+ <p>
94
+ <a href="%3$s" class="wpforms-btn wpforms-btn-orange wpforms-btn-md" rel="noopener noreferrer">
95
+ %4$s
96
+ </a>
97
+ </p>',
98
+ esc_html__( 'WPForms Addons is a PRO feature.', 'wpforms-lite' ),
99
+ esc_html__( 'Please upgrade to the PRO plan to unlock them and more awesome features.', 'wpforms-lite' ),
100
+ esc_url( wpforms_admin_upgrade_link( 'addons' ) ),
101
+ esc_html__( 'Upgrade Now', 'wpforms-lite' )
102
+ );
103
+
104
+ \WPForms\Admin\Notice::info(
105
+ $notice,
106
+ [ 'autop' => false ]
107
+ );
108
+ }
109
+
110
  /**
111
  * Render the Addons page.
112
  *
src/Loader.php CHANGED
@@ -74,6 +74,10 @@ class Loader {
74
 
75
  array_push(
76
  $this->classes,
 
 
 
 
77
  [
78
  'name' => 'Admin\Addons\Addons',
79
  'id' => 'addons',
74
 
75
  array_push(
76
  $this->classes,
77
+ [
78
+ 'name' => 'Admin\Notice',
79
+ 'id' => 'notice',
80
+ ],
81
  [
82
  'name' => 'Admin\Addons\Addons',
83
  'id' => 'addons',
src/SmartTags/SmartTag/Generic.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPForms\SmartTags\SmartTag;
4
+
5
+ /**
6
+ * Class Generic.
7
+ *
8
+ * @since 1.6.7.1
9
+ */
10
+ class Generic extends SmartTag {
11
+
12
+ /**
13
+ * Mock for the get_value method.
14
+ *
15
+ * @since 1.6.7.1
16
+ *
17
+ * @param array $form_data Form data.
18
+ * @param array $fields List of fields.
19
+ * @param string $entry_id Entry ID.
20
+ *
21
+ * @return null
22
+ */
23
+ public function get_value( $form_data, $fields = [], $entry_id = '' ) {
24
+
25
+ return null;
26
+ }
27
+ }
src/SmartTags/SmartTag/SmartTag.php CHANGED
@@ -60,14 +60,21 @@ abstract class SmartTag {
60
  *
61
  * @return array
62
  */
63
- final protected function get_attributes() {
64
 
65
  if ( ! empty( $this->attributes ) ) {
66
- $this->attributes;
67
  }
68
 
69
- preg_match_all( '/(\w+)=["\'](.+?)["\']/', $this->smart_tag, $attributes );
70
- $this->attributes = array_combine( $attributes[1], $attributes[2] );
 
 
 
 
 
 
 
71
 
72
  return $this->attributes;
73
  }
60
  *
61
  * @return array
62
  */
63
+ public function get_attributes() {
64
 
65
  if ( ! empty( $this->attributes ) ) {
66
+ return $this->attributes;
67
  }
68
 
69
+ /**
70
+ * (\w+) an attribute name and also the first capturing group. Lowercase or uppercase letters, digits, underscore.
71
+ * = the equal sign.
72
+ * (["\']) single or double quote, the second capturing group.
73
+ * (.+?) an attribute value within the quotes, and also the third capturing group. Any number of any characters except new line. Lazy mode - match as few characters as possible to allow multiple attributes on one line.
74
+ * \2 - repeat the second capturing group.
75
+ */
76
+ preg_match_all( '/(\w+)=(["\'])(.+?)\2/', $this->smart_tag, $attributes );
77
+ $this->attributes = array_combine( $attributes[1], $attributes[3] );
78
 
79
  return $this->attributes;
80
  }
src/SmartTags/SmartTags.php CHANGED
@@ -2,6 +2,9 @@
2
 
3
  namespace WPForms\SmartTags;
4
 
 
 
 
5
  /**
6
  * Class SmartTags.
7
  *
@@ -142,7 +145,14 @@ class SmartTags {
142
  */
143
  private function get_all_smart_tags( $content ) {
144
 
145
- preg_match_all( '~{([a-z0-9_]+)(|[\s=][\w\s="\'\\\/:|-]+)}~', $content, $smart_tags );
 
 
 
 
 
 
 
146
 
147
  return array_combine( $smart_tags[0], $smart_tags[1] );
148
  }
@@ -168,48 +178,78 @@ class SmartTags {
168
  }
169
 
170
  foreach ( $smart_tags as $smart_tag => $tag_name ) {
171
-
172
- $class = $this->get_smart_tag_class_name( $tag_name );
173
-
174
- if ( ! $class ) {
175
- /**
176
- * Modify content for unregistered smart tags.
177
- *
178
- * @since 1.4.0
179
- * @deprecated 1.6.7
180
- *
181
- * @param string Content of the Smart Tag.
182
- * @param string Tag name of the Smart Tag.
183
- */
184
- $content = (string) apply_filters_deprecated(
185
- 'wpforms_smart_tag_process',
186
- [ $content, $tag_name ],
187
- '1.6.7',
188
- 'wpforms_smarttags_process_{$tag_name}_value'
189
- );
190
-
191
- continue;
192
- }
193
 
194
  /**
195
- * Modify a smart tag value.
196
  *
197
  * @since 1.6.7
 
198
  *
199
- * @param string Smart Tag value.
200
- * @param array Form data.
201
- * @param string List of fields.
202
- * @param int Entry ID.
 
203
  */
204
- $value = (string) apply_filters(
205
  "wpforms_smarttags_process_{$tag_name}_value",
206
- ( new $class( $smart_tag ) )->get_value( $form_data, $fields, $entry_id ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
207
  $form_data,
208
  $fields,
209
- $entry_id
 
210
  );
211
 
212
- $content = $this->replace( $smart_tag, $value, $content );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
213
  }
214
 
215
  return $content;
@@ -241,7 +281,7 @@ class SmartTags {
241
  protected function get_smart_tag_class_name( $smart_tag_name ) {
242
 
243
  if ( ! $this->has_smart_tag( $smart_tag_name ) ) {
244
- return '';
245
  }
246
 
247
  $class_name = str_replace( ' ', '', ucwords( str_replace( '_', ' ', $smart_tag_name ) ) );
@@ -257,12 +297,12 @@ class SmartTags {
257
  *
258
  * @since 1.6.7
259
  *
260
- * @param string The value.
261
- * @param string Smart tag name.
262
  */
263
  $full_class_name = apply_filters( 'wpforms_smarttags_get_smart_tag_class_name', '', $smart_tag_name );
264
 
265
- return class_exists( $full_class_name ) ? $full_class_name : '';
266
  }
267
 
268
  /**
2
 
3
  namespace WPForms\SmartTags;
4
 
5
+ use WPForms\SmartTags\SmartTag\Generic;
6
+ use WPForms\SmartTags\SmartTag\SmartTag;
7
+
8
  /**
9
  * Class SmartTags.
10
  *
145
  */
146
  private function get_all_smart_tags( $content ) {
147
 
148
+ /**
149
+ * A smart tag should start and end with a curly brace.
150
+ * ([a-z0-9_]+) a smart tag name and also the first capturing group. Lowercase letters, digits, and an underscore.
151
+ * (|[ =][^\n}]*) - second capturing group:
152
+ * | no characters at all or the following:
153
+ * [ =][^\n}]* space or equal sign and any number of any characters except new line and closing curly brace.
154
+ */
155
+ preg_match_all( '~{([a-z0-9_]+)(|[ =][^\n}]*)}~', $content, $smart_tags );
156
 
157
  return array_combine( $smart_tags[0], $smart_tags[1] );
158
  }
178
  }
179
 
180
  foreach ( $smart_tags as $smart_tag => $tag_name ) {
181
+ $class_name = $this->get_smart_tag_class_name( $tag_name );
182
+ $smart_tag_object = new $class_name( $smart_tag );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
183
 
184
  /**
185
+ * Modify the smart tag value.
186
  *
187
  * @since 1.6.7
188
+ * @since 1.6.7.1 Added the 5th argument.
189
  *
190
+ * @param null|string $value Smart Tag value.
191
+ * @param array $form_data Form data.
192
+ * @param string $fields List of fields.
193
+ * @param int $entry_id Entry ID.
194
+ * @param SmartTag $smart_tag_object The smart tag object or the Generic object for those cases when class unregistered.
195
  */
196
+ $value = apply_filters(
197
  "wpforms_smarttags_process_{$tag_name}_value",
198
+ $smart_tag_object->get_value( $form_data, $fields, $entry_id ),
199
+ $form_data,
200
+ $fields,
201
+ $entry_id,
202
+ $smart_tag_object
203
+ );
204
+
205
+ /**
206
+ * Modify a smart tag value.
207
+ *
208
+ * @since 1.6.7.1
209
+ *
210
+ * @param null|string $value Smart Tag value.
211
+ * @param string $tag_name Smart tag name.
212
+ * @param array $form_data Form data.
213
+ * @param string $fields List of fields.
214
+ * @param int $entry_id Entry ID.
215
+ * @param SmartTag $smart_tag_object The smart tag object or the Generic object for those cases when class unregistered.
216
+ */
217
+ $value = apply_filters(
218
+ 'wpforms_smarttags_process_value',
219
+ $value,
220
+ $tag_name,
221
  $form_data,
222
  $fields,
223
+ $entry_id,
224
+ $smart_tag_object
225
  );
226
 
227
+ if ( ! is_null( $value ) ) {
228
+ $content = $this->replace( $smart_tag, $value, $content );
229
+ }
230
+
231
+ /**
232
+ * Modify content with smart tags.
233
+ *
234
+ * @since 1.4.0
235
+ * @since 1.6.7.1 Added 3rd, 4th, 5th, 6th arguments.
236
+ *
237
+ * @param string $content Content of the Smart Tag.
238
+ * @param string $tag_name Tag name of the Smart Tag.
239
+ * @param array $form_data Form data.
240
+ * @param string $fields List of fields.
241
+ * @param int $entry_id Entry ID.
242
+ * @param SmartTag $smart_tag_object The smart tag object or the Generic object for those cases when class unregistered.
243
+ */
244
+ $content = (string) apply_filters(
245
+ 'wpforms_smart_tag_process',
246
+ $content,
247
+ $tag_name,
248
+ $form_data,
249
+ $fields,
250
+ $entry_id,
251
+ $smart_tag_object
252
+ );
253
  }
254
 
255
  return $content;
281
  protected function get_smart_tag_class_name( $smart_tag_name ) {
282
 
283
  if ( ! $this->has_smart_tag( $smart_tag_name ) ) {
284
+ return Generic::class;
285
  }
286
 
287
  $class_name = str_replace( ' ', '', ucwords( str_replace( '_', ' ', $smart_tag_name ) ) );
297
  *
298
  * @since 1.6.7
299
  *
300
+ * @param string $class_name The value.
301
+ * @param string $smart_tag_name Smart tag name.
302
  */
303
  $full_class_name = apply_filters( 'wpforms_smarttags_get_smart_tag_class_name', '', $smart_tag_name );
304
 
305
+ return class_exists( $full_class_name ) ? $full_class_name : Generic::class;
306
  }
307
 
308
  /**
src/WPForms.php CHANGED
@@ -98,7 +98,7 @@ namespace WPForms {
98
  *
99
  * @var array
100
  */
101
- private $registry = array();
102
 
103
  /**
104
  * Paid returns true, free (Lite) returns false.
@@ -110,8 +110,8 @@ namespace WPForms {
110
  public $pro = false;
111
 
112
  /**
113
- * Backward compatibility method for accessing the class registry in an old way
114
- * e.g. 'wpforms()->form' or 'wpforms()->entry'
115
  *
116
  * @since 1.5.7
117
  *
@@ -121,10 +121,10 @@ namespace WPForms {
121
  */
122
  public function __get( $name ) {
123
 
124
- if ( 'smart_tags' === $name ) {
125
  trigger_error( // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_trigger_error
126
  esc_html__(
127
- "Property smart_tags was deprecated use wpforms()->get( 'smart_tags' ) instead of wpforms()->smart_tags",
128
  'wpforms-lite'
129
  ),
130
  E_USER_DEPRECATED
@@ -147,11 +147,12 @@ namespace WPForms {
147
  public static function instance() {
148
 
149
  if (
150
- null === self::$instance ||
151
  ! self::$instance instanceof self
152
  ) {
153
 
154
  self::$instance = new self();
 
155
  self::$instance->constants();
156
  self::$instance->includes();
157
 
@@ -162,8 +163,8 @@ namespace WPForms {
162
  require_once WPFORMS_PLUGIN_DIR . 'lite/wpforms-lite.php';
163
  }
164
 
165
- add_action( 'init', array( self::$instance, 'load_textdomain' ), 10 );
166
- add_action( 'plugins_loaded', array( self::$instance, 'objects' ), 10 );
167
  }
168
 
169
  return self::$instance;
@@ -182,6 +183,7 @@ namespace WPForms {
182
  // Plugin Slug - Determine plugin type and set slug accordingly.
183
  if ( apply_filters( 'wpforms_allow_pro_version', file_exists( WPFORMS_PLUGIN_DIR . 'pro/wpforms-pro.php' ) ) ) {
184
  $this->pro = true;
 
185
  define( 'WPFORMS_PLUGIN_SLUG', 'wpforms' );
186
  } else {
187
  define( 'WPFORMS_PLUGIN_SLUG', 'wpforms-lite' );
@@ -277,30 +279,30 @@ namespace WPForms {
277
  /*
278
  * Load PHP 5.5 email subsystem.
279
  */
280
- add_action( 'wpforms_loaded', array( '\WPForms\Emails\Summaries', 'get_instance' ) );
281
  }
282
 
283
  /*
284
  * Load admin components. Exclude from frontend.
285
  */
286
  if ( is_admin() ) {
287
- add_action( 'wpforms_loaded', array( '\WPForms\Admin\Loader', 'get_instance' ) );
288
  }
289
 
290
  /*
291
  * Load form components.
292
  */
293
- add_action( 'wpforms_loaded', array( '\WPForms\Forms\Loader', 'get_instance' ) );
294
 
295
  /*
296
  * Properly init the providers loader, that will handle all the related logic and further loading.
297
  */
298
- add_action( 'wpforms_loaded', array( '\WPForms\Providers\Loader', 'get_instance' ) );
299
 
300
  /*
301
  * Properly init the integrations loader, that will handle all the related logic and further loading.
302
  */
303
- add_action( 'wpforms_loaded', array( '\WPForms\Integrations\Loader', 'get_instance' ) );
304
  }
305
 
306
  /**
@@ -354,6 +356,7 @@ namespace WPForms {
354
  $callback = function () use ( $full_name, $id, $run ) {
355
 
356
  $instance = new $full_name();
 
357
  if ( $id && ! array_key_exists( $id, $this->registry ) ) {
358
  $this->registry[ $id ] = $instance;
359
  }
@@ -418,7 +421,7 @@ namespace WPForms {
418
 
419
  $tables = $wpdb->get_results( "SHOW TABLES LIKE '" . $wpdb->prefix . "wpforms_%'", 'ARRAY_N' ); // phpcs:ignore
420
 
421
- return ! empty( $tables ) ? wp_list_pluck( $tables, 0 ) : array();
422
  }
423
  }
424
  }
@@ -433,13 +436,14 @@ namespace {
433
  * @return WPForms\WPForms
434
  */
435
  function wpforms() {
 
436
  return WPForms\WPForms::instance();
437
  }
438
 
439
  /**
440
  * Adding an alias for backward-compatibility with plugins
441
- * that still use class_exists('WPForms')
442
- * instead of function_exists('wpforms'), which is preferred.
443
  *
444
  * In 1.5.0 we removed support for PHP 5.2
445
  * and moved former WPForms class to a namespace: WPForms\WPForms.
98
  *
99
  * @var array
100
  */
101
+ private $registry = [];
102
 
103
  /**
104
  * Paid returns true, free (Lite) returns false.
110
  public $pro = false;
111
 
112
  /**
113
+ * Backward compatibility method for accessing the class registry in an old way,
114
+ * e.g. 'wpforms()->form' or 'wpforms()->entry'.
115
  *
116
  * @since 1.5.7
117
  *
121
  */
122
  public function __get( $name ) {
123
 
124
+ if ( $name === 'smart_tags' ) {
125
  trigger_error( // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_trigger_error
126
  esc_html__(
127
+ "Property smart_tags was deprecated, use wpforms()->get( 'smart_tags' ) instead of wpforms()->smart_tags",
128
  'wpforms-lite'
129
  ),
130
  E_USER_DEPRECATED
147
  public static function instance() {
148
 
149
  if (
150
+ self::$instance === null ||
151
  ! self::$instance instanceof self
152
  ) {
153
 
154
  self::$instance = new self();
155
+
156
  self::$instance->constants();
157
  self::$instance->includes();
158
 
163
  require_once WPFORMS_PLUGIN_DIR . 'lite/wpforms-lite.php';
164
  }
165
 
166
+ add_action( 'init', [ self::$instance, 'load_textdomain' ], 10 );
167
+ add_action( 'plugins_loaded', [ self::$instance, 'objects' ], 10 );
168
  }
169
 
170
  return self::$instance;
183
  // Plugin Slug - Determine plugin type and set slug accordingly.
184
  if ( apply_filters( 'wpforms_allow_pro_version', file_exists( WPFORMS_PLUGIN_DIR . 'pro/wpforms-pro.php' ) ) ) {
185
  $this->pro = true;
186
+
187
  define( 'WPFORMS_PLUGIN_SLUG', 'wpforms' );
188
  } else {
189
  define( 'WPFORMS_PLUGIN_SLUG', 'wpforms-lite' );
279
  /*
280
  * Load PHP 5.5 email subsystem.
281
  */
282
+ add_action( 'wpforms_loaded', [ '\WPForms\Emails\Summaries', 'get_instance' ] );
283
  }
284
 
285
  /*
286
  * Load admin components. Exclude from frontend.
287
  */
288
  if ( is_admin() ) {
289
+ add_action( 'wpforms_loaded', [ '\WPForms\Admin\Loader', 'get_instance' ] );
290
  }
291
 
292
  /*
293
  * Load form components.
294
  */
295
+ add_action( 'wpforms_loaded', [ '\WPForms\Forms\Loader', 'get_instance' ] );
296
 
297
  /*
298
  * Properly init the providers loader, that will handle all the related logic and further loading.
299
  */
300
+ add_action( 'wpforms_loaded', [ '\WPForms\Providers\Loader', 'get_instance' ] );
301
 
302
  /*
303
  * Properly init the integrations loader, that will handle all the related logic and further loading.
304
  */
305
+ add_action( 'wpforms_loaded', [ '\WPForms\Integrations\Loader', 'get_instance' ] );
306
  }
307
 
308
  /**
356
  $callback = function () use ( $full_name, $id, $run ) {
357
 
358
  $instance = new $full_name();
359
+
360
  if ( $id && ! array_key_exists( $id, $this->registry ) ) {
361
  $this->registry[ $id ] = $instance;
362
  }
421
 
422
  $tables = $wpdb->get_results( "SHOW TABLES LIKE '" . $wpdb->prefix . "wpforms_%'", 'ARRAY_N' ); // phpcs:ignore
423
 
424
+ return ! empty( $tables ) ? wp_list_pluck( $tables, 0 ) : [];
425
  }
426
  }
427
  }
436
  * @return WPForms\WPForms
437
  */
438
  function wpforms() {
439
+
440
  return WPForms\WPForms::instance();
441
  }
442
 
443
  /**
444
  * Adding an alias for backward-compatibility with plugins
445
+ * that still use class_exists( 'WPForms' )
446
+ * instead of function_exists( 'wpforms' ), which is preferred.
447
  *
448
  * In 1.5.0 we removed support for PHP 5.2
449
  * and moved former WPForms class to a namespace: WPForms\WPForms.
wpforms.php CHANGED
@@ -7,7 +7,7 @@
7
  * Requires PHP: 5.5
8
  * Author: WPForms
9
  * Author URI: https://wpforms.com
10
- * Version: 1.6.7
11
  * Text Domain: wpforms-lite
12
  * Domain Path: assets/languages
13
  *
@@ -32,7 +32,7 @@ if ( ! defined( 'ABSPATH' ) ) {
32
 
33
  // Plugin version.
34
  if ( ! defined( 'WPFORMS_VERSION' ) ) {
35
- define( 'WPFORMS_VERSION', '1.6.7' );
36
  }
37
 
38
  // Plugin Folder Path.
7
  * Requires PHP: 5.5
8
  * Author: WPForms
9
  * Author URI: https://wpforms.com
10
+ * Version: 1.6.7.1
11
  * Text Domain: wpforms-lite
12
  * Domain Path: assets/languages
13
  *
32
 
33
  // Plugin version.
34
  if ( ! defined( 'WPFORMS_VERSION' ) ) {
35
+ define( 'WPFORMS_VERSION', '1.6.7.1' );
36
  }
37
 
38
  // Plugin Folder Path.