One Click Demo Import - Version 3.0.0

Version Description

Release Date - 31 March 2021

  • IMPORTANT: Support for PHP 5.5 or lower has been discontinued. If you are running one of those versions, you MUST upgrade PHP before installing or upgrading to One Click Demo Import v3.0. Failure to do that will disable One Click Demo Import functionality.
  • IMPORTANT: Support for WordPress core v4.9 or lower has been discontinued. If you are running one of those versions, you MUST upgrade WordPress core before installing or upgrading to One Click Demo Import v3.0. Failure to do that could cause issues with the One Click Demo Import functionality.
  • Added support for recommended theme plugins.
  • Added useful single page demo content imports.
  • Added recommended plugins installer.
  • Updated the UI/UX of the plugin.
  • Fixed PHP8 warning.
  • Fixed deprecated WP function wp_slash_strings_only.
Download this release

Release Info

Developer capuderg
Plugin Icon 128x128 One Click Demo Import
Version 3.0.0
Comparing to
See all releases

Code changes from version 2.6.1 to 3.0.0

Files changed (59) hide show
  1. assets/css/main.css +1281 -216
  2. assets/css/main.min.css +1 -0
  3. assets/demo-content/about-page.xml +112 -0
  4. assets/demo-content/book-now-page.xml +568 -0
  5. assets/demo-content/contact-page.xml +167 -0
  6. assets/demo-content/faq-page.xml +157 -0
  7. assets/demo-content/meet-the-team-page.xml +287 -0
  8. assets/demo-content/menu-page.xml +684 -0
  9. assets/demo-content/portfolio-page.xml +254 -0
  10. assets/demo-content/services-page.xml +138 -0
  11. assets/demo-content/shop-page.xml +450 -0
  12. assets/demo-content/testimonials-page.xml +229 -0
  13. assets/images/error.svg +4 -0
  14. assets/images/icons/brush.svg +3 -0
  15. assets/images/icons/check-solid-white.svg +1 -0
  16. assets/images/icons/content.svg +3 -0
  17. assets/images/icons/copy.svg +3 -0
  18. assets/images/icons/info-circle.svg +3 -0
  19. assets/images/icons/layout.svg +3 -0
  20. assets/images/icons/lock.svg +3 -0
  21. assets/images/icons/long-arrow-alt-left-blue.svg +1 -0
  22. assets/images/icons/plugins.svg +3 -0
  23. assets/images/icons/question-circle.svg +3 -0
  24. assets/images/icons/redux.svg +4 -0
  25. assets/images/icons/star.svg +3 -0
  26. assets/images/icons/widgets.svg +3 -0
  27. assets/images/importing.svg +74 -0
  28. assets/images/loader.svg +5 -0
  29. assets/images/success.svg +4 -0
  30. assets/images/warning.svg +4 -0
  31. assets/js/main.js +504 -138
  32. assets/js/main.min.js +1 -0
  33. inc/CreateDemoContent/DemoContentCreator.php +436 -0
  34. inc/CustomizerImporter.php +9 -9
  35. inc/Downloader.php +6 -6
  36. inc/Helpers.php +136 -56
  37. inc/ImportActions.php +23 -23
  38. inc/Importer.php +4 -4
  39. inc/OneClickDemoImport.php +206 -100
  40. inc/PluginInstaller.php +587 -0
  41. inc/PluginInstallerSkin.php +66 -0
  42. inc/PluginInstallerSkinSilent.php +51 -0
  43. inc/ReduxImporter.php +8 -8
  44. inc/ViewHelpers.php +64 -0
  45. inc/WPCLICommands.php +33 -33
  46. inc/WXRImporter.php +1 -1
  47. inc/WidgetImporter.php +19 -19
  48. languages/one-click-demo-import.pot +939 -0
  49. languages/pt-ocdi.pot +0 -521
  50. one-click-demo-import.php +28 -13
  51. readme.txt +49 -69
  52. vendor/awesomemotive/wp-content-importer-v2/README.md +3 -0
  53. vendor/awesomemotive/wp-content-importer-v2/src/WXRImporter.php +1 -1
  54. vendor/composer/ClassLoader.php +1 -1
  55. vendor/composer/installed.json +7 -7
  56. views/create-content.php +77 -0
  57. views/import.php +126 -0
  58. views/install-plugins.php +68 -0
  59. views/plugin-page.php +308 -152
assets/css/main.css CHANGED
@@ -1,365 +1,1430 @@
1
- /* Overriding WordPress native styles */
 
 
2
 
3
  .ocdi {
4
- max-width: none;
5
  }
6
 
7
  .ocdi h2 {
8
- text-align: inherit;
 
 
 
 
9
  }
10
 
11
  .ocdi h2:first-child,
12
  .ocdi h3:first-child {
13
- margin-top: 0;
14
  }
15
 
16
  .ocdi hr {
17
- margin: 2.62em 0;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
  }
19
 
20
  .feature-section + hr {
21
- margin-top: 0;
22
  }
23
 
24
  #wpbody select {
25
- height: auto;
26
- padding: .62em;
27
- line-height: inherit;
28
  }
29
 
30
- .ocdi .notice {
31
- display: block !important;
 
 
 
 
 
 
 
 
 
 
 
 
 
32
  }
33
 
34
- /* Plugin elements */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
 
36
  .ocdi__demo-import-files {
37
- width: 100%;
38
  }
39
 
40
  .ocdi__demo-import-preview-image-message {
41
- font-style: italic;
42
  }
43
 
44
- /* Plugin title */
45
-
46
  .ocdi__title:before {
47
- width: auto;
48
- height: auto;
49
- font-size: inherit;
50
  }
51
 
52
- /* Plugin intro text */
 
 
 
 
 
 
 
53
 
54
- .ocdi__intro-text ul {
55
- padding: 0 4%;
56
- list-style-type: square;
 
57
  }
58
 
59
- /* Plugin switch import mode link*/
60
- .ocdi__import-mode-switch {
61
- float: right;
 
62
  }
63
 
64
- /* Plugin multi select import and Plugin file upload containers */
 
 
 
 
65
 
66
- .ocdi__file-upload,
67
- .ocdi__multi-select-import,
68
- .ocdi__demo-import-notice:not(:empty) {
69
- padding: 4%;
70
- margin: 1.62em 0;
71
- background-color: #ffffff;
72
- border: 1px solid #e5e5e5;
 
73
  }
74
 
75
- .ocdi__file-upload {
76
- margin: 0;
77
- margin-bottom: -1px;
78
  }
79
 
80
- .ocdi__file-upload span {
81
- font-size: .81em;
82
- font-weight: normal;
83
- opacity: .66;
84
  }
85
 
86
- .ocdi__demo-import-notice:not(:empty) {
87
- border: 0;
88
- border-left: 4px solid #00a0d2;
89
- -webkit-box-shadow: 0 1px 1px 0 rgba(0,0,0,.1);
90
- box-shadow: 0 1px 1px 0 rgba(0,0,0,.1);
91
  }
92
 
93
- [dir="rtl"] .ocdi__demo-import-notice:not(:empty) {
94
- border: 0;
95
- border-right: 4px solid #00a0d2;
 
96
  }
97
 
98
- /* Plugin button */
 
 
 
99
 
100
- .ocdi__button-container {
101
- margin-top: 1.62em;
 
 
 
 
 
 
 
 
 
 
 
102
  }
103
 
104
- /* AJAX loader */
 
 
 
 
 
105
 
106
- p.ocdi__ajax-loader {
107
- font-size: 1.5em;
108
- display: none;
109
  }
110
 
111
- .ocdi__ajax-loader .spinner {
112
- display: inline-block;
113
- float: none;
114
- visibility: visible;
115
- margin-bottom: 6px;
116
  }
117
 
 
 
 
118
 
119
- /* New grid layout */
 
 
 
 
 
120
 
121
  .ocdi__gl-navigation li a {
122
- -webkit-box-shadow: none;
123
- box-shadow: none;
 
 
 
 
 
 
 
 
124
  }
125
 
126
  .ocdi__gl-item {
127
- float: left;
128
- width: 100%;
129
- margin: 0 0 20px 0;
130
- position: relative;
131
- border: 1px solid #ddd;
132
- -webkit-box-shadow: 0 1px 1px -1px rgba(0,0,0,0.1);
133
- box-shadow: 0 1px 1px -1px rgba(0,0,0,0.1);
134
- -webkit-box-sizing: border-box;
135
- -moz-box-sizing: border-box;
136
- box-sizing: border-box;
137
  }
138
 
139
  .ocdi__gl-item-image-container {
140
- display: block;
141
- overflow: hidden;
142
- position: relative;
143
- -webkit-backface-visibility: hidden;
144
- -webkit-transition: opacity 0.2s ease-in-out;
145
- transition: opacity 0.2s ease-in-out;
146
  }
147
 
148
  .ocdi__gl-item-image-container::after {
149
- content: "";
150
- display: block;
151
- padding-top: 66.66666%;
152
  }
153
 
154
  .ocdi__gl-item-image {
155
- height: auto;
156
- position: absolute;
157
- left: 0;
158
- top: 0;
159
- width: 100%;
160
- -webkit-transition: opacity 0.2s ease-in-out;
161
- transition: opacity 0.2s ease-in-out;
162
  }
163
 
164
  .ocdi__gl-item-image--no-image {
165
- display: inline-block;
166
- width: 50%;
167
- text-align: center;
168
- position: absolute;
169
- top: 45%;
170
- right: 25%;
171
- left: 25%;
172
  }
173
 
174
  .ocdi__gl-item-footer {
175
- height: 30px;
176
- margin: 0;
177
- padding: 10px;
178
- -webkit-box-shadow: inset 0 1px 0 rgba(0,0,0,0.1);
179
- box-shadow: inset 0 1px 0 rgba(0,0,0,0.1);
180
- background: #ffffff;
181
- background: rgba(255,255,255,0.65);
182
  }
183
 
184
- h4.ocdi__gl-item-title {
185
- width: 70%;
186
- overflow: hidden;
187
- white-space: nowrap;
188
- text-overflow: ellipsis;
189
- display: inline-block;
190
- margin: 6px 0 0 0;
 
 
 
 
191
  }
192
 
193
- .ocdi__gl-item-footer--with-preview h4.ocdi__gl-item-title {
194
- width: calc(100% - 140px);
 
 
195
  }
196
 
197
- .ocdi__gl-item-button {
198
- float: right;
 
199
  }
200
 
201
  .ocdi__gl-item-button + .ocdi__gl-item-button {
202
- margin-right: 5px;
203
  }
204
 
205
  @media (max-width: 782px) {
206
- h4.ocdi__gl-item-title,
207
- .ocdi__gl-item-footer--with-preview h4.ocdi__gl-item-title {
208
- width: 100%;
209
- margin-bottom: 10px;
210
- }
 
 
 
211
 
212
- .ocdi__gl-item-button {
213
- width: calc(50% - 10px);
214
- margin-bottom: 10px;
215
- }
216
 
217
- .ocdi__gl-item-button + .ocdi__gl-item-button {
218
- float: left;
219
- }
220
 
221
- .ocdi__gl-item-footer {
222
- height: 72px;
223
- }
224
  }
225
 
226
  .ocdi__gl-header {
227
- display: inline-block;
228
- width: calc(100% - 40px);
229
- background-color: #ffffff;
230
- margin-bottom: 20px;
231
- padding: 0 20px;
 
 
 
232
  }
233
 
234
  .ocdi__gl-navigation {
235
- font-size: 13px;
236
- width: 100%;
237
- float: left;
 
238
  }
239
 
240
  .ocdi__gl-navigation ul {
241
- list-style-type: none;
242
- margin: 0;
243
- padding: 0;
244
- overflow: hidden;
245
  }
246
 
247
  .ocdi__gl-navigation li {
248
- float: left;
249
- margin: 0 15px;
250
  }
251
 
252
- .ocdi__gl-navigation li.active a,
253
- .ocdi__gl-navigation li.active a:hover {
254
- border-bottom: 4px solid #666666;
 
255
  }
256
 
257
  .ocdi__gl-navigation li a {
258
- display: block;
259
- text-align: center;
260
- text-decoration: none;
261
- color: #444444;
262
- border-bottom: 4px solid #ffffff;
263
- padding: 15px 0;
 
 
 
 
264
  }
265
 
266
  .ocdi__gl-navigation li a:hover {
267
- color: #00a0d2;
268
- border-bottom: 4px solid #ffffff;
269
- cursor:pointer;
 
 
 
270
  }
271
 
272
  .ocdi__gl-search-input {
273
- width: 100%;
274
- margin: 10px 0;
 
 
 
275
  }
276
 
277
  @media (min-width: 640px) {
278
- .ocdi__gl-navigation {
279
- width: calc(100% - 180px);
280
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
281
 
282
- .ocdi__gl-navigation li {
283
- margin: 0;
284
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
285
 
286
- .ocdi__gl-navigation li a {
287
- padding: 15px;
288
- }
 
289
 
290
- .ocdi__gl-search-input {
291
- display: inline-block;
292
- width: 180px;
293
- height: 30px;
294
- margin: 0;
295
- margin-top: 11px;
296
- }
297
 
298
- .ocdi__gl-item-container {
299
- margin-right: -20px;
300
- }
 
 
 
301
 
302
- .ocdi__gl-item {
303
- width: calc(50% - 20px);
304
- margin: 0 20px 20px 0;
305
- }
 
 
 
 
 
 
306
  }
307
 
308
  @media (min-width: 1120px) {
309
- .ocdi__gl-item-container {
310
- margin-right: -30px;
311
- }
 
 
 
 
 
 
 
 
 
 
 
312
 
313
- .ocdi__gl-item {
314
- width: calc(33.333% - 30px);
315
- margin: 0 30px 30px 0;
316
- }
 
317
  }
318
 
319
- /* Grid animations */
320
- @keyframes ocdi-fade {
321
- from {
322
- opacity: 1;
323
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
324
 
325
- to {
326
- opacity: 0;
327
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
328
  }
329
 
330
  .ocdi-is-fadeout {
331
- animation: ocdi-fade linear 200ms 1 forwards;
 
332
  }
333
 
334
  .ocdi-is-fadein {
335
- animation: ocdi-fade linear 200ms 1 reverse forwards;
336
  }
337
 
338
- /* Grid layout modal window */
339
-
340
  .ocdi__modal-image-container {
341
- width: 100%;
342
- height: 180px;
343
- margin: 0;
344
- overflow: hidden;
345
  }
346
 
347
- .ocdi__modal-item-title {
348
- margin-top: 0.5em;
349
- font-weight: bold;
350
  }
351
 
352
- .ocdi__modal-image-container img {
353
- width: 100%;
 
354
  }
355
 
356
  .ocdi__modal-notice.ocdi__demo-import-notice:not(:empty) {
357
- border: 1px solid #e5e5e5;
358
- border-left: 4px solid #00a0d2;
359
- margin: 1em 0 0;
360
  }
361
 
362
- /* Redux */
363
- .ocdi__redux-option-name-label {
364
- margin-right: 5px;
365
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #wpcontent {
2
+ padding-left: 0;
3
+ }
4
 
5
  .ocdi {
6
+ max-width: none;
7
  }
8
 
9
  .ocdi h2 {
10
+ text-align: inherit;
11
+ font-size: 32px;
12
+ line-height: 39px;
13
+ font-weight: 500;
14
+ margin-bottom: 20px;
15
  }
16
 
17
  .ocdi h2:first-child,
18
  .ocdi h3:first-child {
19
+ margin-top: 0;
20
  }
21
 
22
  .ocdi hr {
23
+ margin: 30px 0;
24
+ }
25
+
26
+ .ocdi .notice,
27
+ .ocdi .update-nag,
28
+ .ocdi #update-nag {
29
+ display: block !important;
30
+ margin: 0 0 30px 0;
31
+ }
32
+
33
+ .ocdi-notices-wrapper {
34
+ display: none;
35
+ }
36
+
37
+ .ocdi-notices-wrapper .notice,
38
+ .ocdi-notices-wrapper .update-nag,
39
+ .ocdi-notices-wrapper #update-nag {
40
+ margin: 0 0 15px 0;
41
+ }
42
+
43
+ .ocdi-notices-wrapper .notice:last-child,
44
+ .ocdi-notices-wrapper .update-nag:last-child,
45
+ .ocdi-notices-wrapper #update-nag:last-child {
46
+ margin-bottom: 30px;
47
+ }
48
+
49
+ .ocdi__admin-notices .ocdi-notices-wrapper {
50
+ display: block;
51
+ }
52
+
53
+ .ocdi-button-disabled {
54
+ opacity: 0.6 !important;
55
+ cursor: not-allowed !important;
56
+ }
57
+
58
+ .ocdi-content-notice {
59
+ padding: 25px;
60
+ background: #E5F5FA;
61
+ border-radius: 6px;
62
+ margin: 30px;
63
+ }
64
+
65
+ .ocdi-content-notice p {
66
+ font-size: 14px;
67
+ line-height: 24px;
68
+ color: #444444;
69
+ margin: 0 0 10px 0;
70
+ }
71
+
72
+ .ocdi-content-notice p:last-child {
73
+ margin-bottom: 0;
74
+ }
75
+
76
+ .ocdi-importing, .ocdi-imported {
77
+ display: none;
78
+ text-align: center;
79
+ padding: 30px;
80
+ }
81
+
82
+ .ocdi-importing p, .ocdi-imported p {
83
+ font-size: 16px;
84
+ line-height: 19px;
85
+ font-weight: 300;
86
+ color: #444444;
87
+ margin: 0 0 10px 0;
88
+ }
89
+
90
+ .ocdi-importing p:last-child, .ocdi-imported p:last-child {
91
+ margin-bottom: 0;
92
+ }
93
+
94
+ .ocdi-importing-header h2, .ocdi-imported-header h2 {
95
+ font-size: 24px;
96
+ line-height: 29px;
97
+ margin-bottom: 10px;
98
+ }
99
+
100
+ .ocdi-importing-header p, .ocdi-imported-header p {
101
+ margin-bottom: 5px;
102
+ }
103
+
104
+ .ocdi-importing-header p:last-child, .ocdi-imported-header p:last-child {
105
+ margin-bottom: 0;
106
+ }
107
+
108
+ .ocdi-importing-content, .ocdi-imported-content {
109
+ margin: 0 20px;
110
+ }
111
+
112
+ .ocdi-importing-content-importing, .ocdi-imported-content-importing {
113
+ width: 415px;
114
+ height: 228px;
115
+ margin: 50px 0 20px 0;
116
+ }
117
+
118
+ .ocdi-importing-content-imported, .ocdi-imported-content-imported {
119
+ margin: 80px 0 50px 0;
120
+ }
121
+
122
+ .ocdi-importing-content-imported--success, .ocdi-imported-content-imported--success {
123
+ width: 156px;
124
+ height: 124px;
125
+ }
126
+
127
+ .ocdi-importing-content-imported--error, .ocdi-importing-content-imported--warning, .ocdi-imported-content-imported--error, .ocdi-imported-content-imported--warning {
128
+ width: 124px;
129
+ height: 124px;
130
+ }
131
+
132
+ .ocdi-importing-content .notice, .ocdi-imported-content .notice {
133
+ text-align: left;
134
+ margin: 30px 0;
135
+ }
136
+
137
+ .ocdi-importing-content .notice p, .ocdi-imported-content .notice p {
138
+ padding: 15px 3px;
139
+ font-size: 14px;
140
+ line-height: 22px;
141
+ color: #777777;
142
+ }
143
+
144
+ .ocdi-importing-footer, .ocdi-imported-footer {
145
+ display: -webkit-box;
146
+ display: -ms-flexbox;
147
+ display: flex;
148
+ -webkit-box-pack: center;
149
+ -ms-flex-pack: center;
150
+ justify-content: center;
151
+ -webkit-box-align: center;
152
+ -ms-flex-align: center;
153
+ align-items: center;
154
+ -ms-flex-wrap: wrap;
155
+ flex-wrap: wrap;
156
+ min-height: 100px;
157
+ background-color: #F8F8F8;
158
+ border-top: 1px solid #dddddd;
159
+ margin: 30px -30px -30px;
160
+ }
161
+
162
+ .ocdi-importing-footer a.button, .ocdi-imported-footer a.button {
163
+ -webkit-box-flex: 0;
164
+ -ms-flex: 0 1 25%;
165
+ flex: 0 1 25%;
166
+ margin-right: 30px;
167
+ }
168
+
169
+ .ocdi-importing-footer a.button:last-child, .ocdi-imported-footer a.button:last-child {
170
+ margin-right: 0;
171
+ }
172
+
173
+ .ocdi .button.button-hero {
174
+ font-size: 16px;
175
+ line-height: 20px;
176
+ font-weight: 500;
177
+ min-height: 40px;
178
+ padding: 9px 18px;
179
+ }
180
+
181
+ .ocdi .button.button-hero.ocdi__button.button-primary:disabled, .ocdi .button.button-hero.ocdi__button.button-primary[disabled] {
182
+ color: #ffffff !important;
183
+ background: #999999 !important;
184
+ border-color: #999999 !important;
185
+ opacity: 0.5;
186
+ }
187
+
188
+ .ocdi__redux-option-name-input {
189
+ margin-left: 10px;
190
+ width: 137px;
191
+ border-radius: 3px !important;
192
+ padding: 0 10px !important;
193
+ font-size: 13px !important;
194
+ line-height: 16px !important;
195
+ }
196
+
197
+ .ocdi-hide-input {
198
+ width: 0.1px !important;
199
+ height: 0.1px !important;
200
+ opacity: 0 !important;
201
+ overflow: hidden !important;
202
+ position: absolute !important;
203
+ z-index: -1 !important;
204
  }
205
 
206
  .feature-section + hr {
207
+ margin-top: 0;
208
  }
209
 
210
  #wpbody select {
211
+ height: auto;
212
+ padding: .62em;
213
+ line-height: inherit;
214
  }
215
 
216
+ .ocdi__title-container {
217
+ height: 30px;
218
+ background-color: #ffffff;
219
+ padding: 20px 30px;
220
+ -webkit-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.07);
221
+ box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.07);
222
+ display: -webkit-box;
223
+ display: -ms-flexbox;
224
+ display: flex;
225
+ -webkit-box-align: center;
226
+ -ms-flex-align: center;
227
+ align-items: center;
228
+ -webkit-box-pack: justify;
229
+ -ms-flex-pack: justify;
230
+ justify-content: space-between;
231
  }
232
 
233
+ .ocdi__title-container-title {
234
+ margin: 0;
235
+ font-size: 24px;
236
+ line-height: 29px;
237
+ font-weight: 700;
238
+ }
239
+
240
+ .ocdi__title-container-icon {
241
+ width: 19px;
242
+ height: 19px;
243
+ }
244
+
245
+ .ocdi__content-container {
246
+ padding: 30px;
247
+ }
248
+
249
+ .ocdi__content-container-content {
250
+ display: -webkit-box;
251
+ display: -ms-flexbox;
252
+ display: flex;
253
+ }
254
+
255
+ .ocdi__content-container-content--main {
256
+ -webkit-box-flex: 1;
257
+ -ms-flex: 1;
258
+ flex: 1;
259
+ margin-right: 30px;
260
+ background: #ffffff;
261
+ -webkit-box-sizing: border-box;
262
+ box-sizing: border-box;
263
+ border: 1px solid #dddddd;
264
+ -webkit-box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.07);
265
+ box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.07);
266
+ }
267
+
268
+ .ocdi__content-container-content--side {
269
+ width: 373px;
270
+ }
271
+
272
+ .ocdi__content-container-content--side .ocdi__card-content {
273
+ padding: 0;
274
+ }
275
+
276
+ .ocdi__content-container-content--side .screenshot {
277
+ height: 278px;
278
+ }
279
+
280
+ .ocdi__content-container-content--side .screenshot.blank {
281
+ border: 1px solid #CCD0D4;
282
+ -webkit-filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.07));
283
+ filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.07));
284
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAALElEQVQYGWO8d+/efwYkoKioiMRjYGBC4WHhUK6A8T8QIJt8//59ZC493AAAQssKpBK4F5AAAAAASUVORK5CYII=);
285
+ }
286
+
287
+ .ocdi__content-container-content--side .ocdi__card-footer {
288
+ padding: 15px;
289
+ }
290
+
291
+ .ocdi__content-container-content--side .ocdi__card-footer h3 {
292
+ font-size: 16px;
293
+ line-height: 19px;
294
+ font-weight: 500;
295
+ margin: 0;
296
+ }
297
+
298
+ .ocdi__content-container-content--side img {
299
+ width: 100%;
300
+ }
301
+
302
+ .ocdi__content-container-content .ocdi-install-plugins-content-header,
303
+ .ocdi__content-container-content .ocdi-create-content-header {
304
+ padding: 30px;
305
+ border-bottom: 1px solid #dddddd;
306
+ }
307
+
308
+ .ocdi__content-container-content .ocdi-install-plugins-content-header h2,
309
+ .ocdi__content-container-content .ocdi-create-content-header h2 {
310
+ font-size: 22px;
311
+ line-height: 26px;
312
+ font-weight: normal;
313
+ margin: 0 0 6px 0;
314
+ }
315
+
316
+ .ocdi__content-container-content .ocdi-install-plugins-content-header p,
317
+ .ocdi__content-container-content .ocdi-create-content-header p {
318
+ font-size: 16px;
319
+ line-height: 22px;
320
+ font-weight: 300;
321
+ color: #444444;
322
+ margin: 0 0 10px 0;
323
+ }
324
+
325
+ .ocdi__content-container-content .ocdi-install-plugins-content-header p:last-child,
326
+ .ocdi__content-container-content .ocdi-create-content-header p:last-child {
327
+ margin: 0;
328
+ }
329
+
330
+ .ocdi__content-container-content .ocdi-install-plugins-content-header .notice,
331
+ .ocdi__content-container-content .ocdi-create-content-header .notice {
332
+ margin: 30px 0 0;
333
+ }
334
+
335
+ .ocdi__content-container-content .ocdi-install-plugins-content-header .notice p,
336
+ .ocdi__content-container-content .ocdi-create-content-header .notice p {
337
+ margin: .5em 0;
338
+ font-size: 13px;
339
+ line-height: 1.5;
340
+ color: #3c434a;
341
+ font-weight: normal;
342
+ }
343
+
344
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item,
345
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .content-item,
346
+ .ocdi__content-container-content .ocdi-create-content-content .plugin-item,
347
+ .ocdi__content-container-content .ocdi-create-content-content .content-item {
348
+ display: -webkit-box;
349
+ display: -ms-flexbox;
350
+ display: flex;
351
+ -webkit-box-pack: justify;
352
+ -ms-flex-pack: justify;
353
+ justify-content: space-between;
354
+ -webkit-box-align: center;
355
+ -ms-flex-align: center;
356
+ align-items: center;
357
+ margin: 0 30px;
358
+ padding: 25px 0;
359
+ border-bottom: 1px solid #eeeeee;
360
+ }
361
+
362
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item .ocdi-loading,
363
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .content-item .ocdi-loading,
364
+ .ocdi__content-container-content .ocdi-create-content-content .plugin-item .ocdi-loading,
365
+ .ocdi__content-container-content .ocdi-create-content-content .content-item .ocdi-loading {
366
+ display: none;
367
+ }
368
+
369
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item--active,
370
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .content-item--active,
371
+ .ocdi__content-container-content .ocdi-create-content-content .plugin-item--active,
372
+ .ocdi__content-container-content .ocdi-create-content-content .content-item--active {
373
+ cursor: default;
374
+ }
375
+
376
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item--active .plugin-item-checkbox input[type=checkbox]:checked + .checkbox,
377
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item--active .content-item-checkbox input[type=checkbox]:checked + .checkbox,
378
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .content-item--active .plugin-item-checkbox input[type=checkbox]:checked + .checkbox,
379
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .content-item--active .content-item-checkbox input[type=checkbox]:checked + .checkbox,
380
+ .ocdi__content-container-content .ocdi-create-content-content .plugin-item--active .plugin-item-checkbox input[type=checkbox]:checked + .checkbox,
381
+ .ocdi__content-container-content .ocdi-create-content-content .plugin-item--active .content-item-checkbox input[type=checkbox]:checked + .checkbox,
382
+ .ocdi__content-container-content .ocdi-create-content-content .content-item--active .plugin-item-checkbox input[type=checkbox]:checked + .checkbox,
383
+ .ocdi__content-container-content .ocdi-create-content-content .content-item--active .content-item-checkbox input[type=checkbox]:checked + .checkbox {
384
+ border: none;
385
+ background: #64B450;
386
+ }
387
+
388
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item--active .plugin-item-checkbox input[type=checkbox]:checked + .checkbox .ocdi-check-icon,
389
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item--active .content-item-checkbox input[type=checkbox]:checked + .checkbox .ocdi-check-icon,
390
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .content-item--active .plugin-item-checkbox input[type=checkbox]:checked + .checkbox .ocdi-check-icon,
391
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .content-item--active .content-item-checkbox input[type=checkbox]:checked + .checkbox .ocdi-check-icon,
392
+ .ocdi__content-container-content .ocdi-create-content-content .plugin-item--active .plugin-item-checkbox input[type=checkbox]:checked + .checkbox .ocdi-check-icon,
393
+ .ocdi__content-container-content .ocdi-create-content-content .plugin-item--active .content-item-checkbox input[type=checkbox]:checked + .checkbox .ocdi-check-icon,
394
+ .ocdi__content-container-content .ocdi-create-content-content .content-item--active .plugin-item-checkbox input[type=checkbox]:checked + .checkbox .ocdi-check-icon,
395
+ .ocdi__content-container-content .ocdi-create-content-content .content-item--active .content-item-checkbox input[type=checkbox]:checked + .checkbox .ocdi-check-icon {
396
+ display: inline-block;
397
+ }
398
+
399
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item--active .plugin-item-checkbox input[type=checkbox]:checked + .checkbox::after,
400
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item--active .content-item-checkbox input[type=checkbox]:checked + .checkbox::after,
401
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .content-item--active .plugin-item-checkbox input[type=checkbox]:checked + .checkbox::after,
402
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .content-item--active .content-item-checkbox input[type=checkbox]:checked + .checkbox::after,
403
+ .ocdi__content-container-content .ocdi-create-content-content .plugin-item--active .plugin-item-checkbox input[type=checkbox]:checked + .checkbox::after,
404
+ .ocdi__content-container-content .ocdi-create-content-content .plugin-item--active .content-item-checkbox input[type=checkbox]:checked + .checkbox::after,
405
+ .ocdi__content-container-content .ocdi-create-content-content .content-item--active .plugin-item-checkbox input[type=checkbox]:checked + .checkbox::after,
406
+ .ocdi__content-container-content .ocdi-create-content-content .content-item--active .content-item-checkbox input[type=checkbox]:checked + .checkbox::after {
407
+ display: none !important;
408
+ }
409
+
410
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item--required,
411
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .content-item--required,
412
+ .ocdi__content-container-content .ocdi-create-content-content .plugin-item--required,
413
+ .ocdi__content-container-content .ocdi-create-content-content .content-item--required {
414
+ cursor: default;
415
+ }
416
+
417
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item--loading .ocdi-loading,
418
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .content-item--loading .ocdi-loading,
419
+ .ocdi__content-container-content .ocdi-create-content-content .plugin-item--loading .ocdi-loading,
420
+ .ocdi__content-container-content .ocdi-create-content-content .content-item--loading .ocdi-loading {
421
+ display: block;
422
+ }
423
+
424
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item--loading .plugin-item-checkbox input[type=checkbox] + .checkbox,
425
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item--loading .content-item-checkbox input[type=checkbox] + .checkbox,
426
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .content-item--loading .plugin-item-checkbox input[type=checkbox] + .checkbox,
427
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .content-item--loading .content-item-checkbox input[type=checkbox] + .checkbox,
428
+ .ocdi__content-container-content .ocdi-create-content-content .plugin-item--loading .plugin-item-checkbox input[type=checkbox] + .checkbox,
429
+ .ocdi__content-container-content .ocdi-create-content-content .plugin-item--loading .content-item-checkbox input[type=checkbox] + .checkbox,
430
+ .ocdi__content-container-content .ocdi-create-content-content .content-item--loading .plugin-item-checkbox input[type=checkbox] + .checkbox,
431
+ .ocdi__content-container-content .ocdi-create-content-content .content-item--loading .content-item-checkbox input[type=checkbox] + .checkbox {
432
+ border: none !important;
433
+ }
434
+
435
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item--loading .plugin-item-checkbox input[type=checkbox] + .checkbox .ocdi-lock-icon,
436
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item--loading .content-item-checkbox input[type=checkbox] + .checkbox .ocdi-lock-icon,
437
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .content-item--loading .plugin-item-checkbox input[type=checkbox] + .checkbox .ocdi-lock-icon,
438
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .content-item--loading .content-item-checkbox input[type=checkbox] + .checkbox .ocdi-lock-icon,
439
+ .ocdi__content-container-content .ocdi-create-content-content .plugin-item--loading .plugin-item-checkbox input[type=checkbox] + .checkbox .ocdi-lock-icon,
440
+ .ocdi__content-container-content .ocdi-create-content-content .plugin-item--loading .content-item-checkbox input[type=checkbox] + .checkbox .ocdi-lock-icon,
441
+ .ocdi__content-container-content .ocdi-create-content-content .content-item--loading .plugin-item-checkbox input[type=checkbox] + .checkbox .ocdi-lock-icon,
442
+ .ocdi__content-container-content .ocdi-create-content-content .content-item--loading .content-item-checkbox input[type=checkbox] + .checkbox .ocdi-lock-icon {
443
+ display: none !important;
444
+ }
445
+
446
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item--loading .plugin-item-checkbox input[type=checkbox] + .checkbox::after,
447
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item--loading .content-item-checkbox input[type=checkbox] + .checkbox::after,
448
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .content-item--loading .plugin-item-checkbox input[type=checkbox] + .checkbox::after,
449
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .content-item--loading .content-item-checkbox input[type=checkbox] + .checkbox::after,
450
+ .ocdi__content-container-content .ocdi-create-content-content .plugin-item--loading .plugin-item-checkbox input[type=checkbox] + .checkbox::after,
451
+ .ocdi__content-container-content .ocdi-create-content-content .plugin-item--loading .content-item-checkbox input[type=checkbox] + .checkbox::after,
452
+ .ocdi__content-container-content .ocdi-create-content-content .content-item--loading .plugin-item-checkbox input[type=checkbox] + .checkbox::after,
453
+ .ocdi__content-container-content .ocdi-create-content-content .content-item--loading .content-item-checkbox input[type=checkbox] + .checkbox::after {
454
+ display: none !important;
455
+ }
456
+
457
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item-content,
458
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .content-item-content,
459
+ .ocdi__content-container-content .ocdi-create-content-content .plugin-item-content,
460
+ .ocdi__content-container-content .ocdi-create-content-content .content-item-content {
461
+ margin-right: 15px;
462
+ }
463
+
464
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item-content-title,
465
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .content-item-content-title,
466
+ .ocdi__content-container-content .ocdi-create-content-content .plugin-item-content-title,
467
+ .ocdi__content-container-content .ocdi-create-content-content .content-item-content-title {
468
+ display: -webkit-box;
469
+ display: -ms-flexbox;
470
+ display: flex;
471
+ -webkit-box-align: center;
472
+ -ms-flex-align: center;
473
+ align-items: center;
474
+ margin: 0 0 4px 0;
475
+ }
476
+
477
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item-content-title span,
478
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .content-item-content-title span,
479
+ .ocdi__content-container-content .ocdi-create-content-content .plugin-item-content-title span,
480
+ .ocdi__content-container-content .ocdi-create-content-content .content-item-content-title span {
481
+ margin-left: 5px;
482
+ background-color: #FFB900;
483
+ width: 16px;
484
+ height: 16px;
485
+ border-radius: 8px;
486
+ margin-top: -1px;
487
+ }
488
+
489
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item-content-title span img,
490
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .content-item-content-title span img,
491
+ .ocdi__content-container-content .ocdi-create-content-content .plugin-item-content-title span img,
492
+ .ocdi__content-container-content .ocdi-create-content-content .content-item-content-title span img {
493
+ width: 10px;
494
+ height: 10px;
495
+ margin: 3px;
496
+ }
497
+
498
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item-info p,
499
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .content-item-info p,
500
+ .ocdi__content-container-content .ocdi-create-content-content .plugin-item-info p,
501
+ .ocdi__content-container-content .ocdi-create-content-content .content-item-info p {
502
+ color: #00a32a !important;
503
+ }
504
+
505
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item-error p,
506
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .content-item-error p,
507
+ .ocdi__content-container-content .ocdi-create-content-content .plugin-item-error p,
508
+ .ocdi__content-container-content .ocdi-create-content-content .content-item-error p {
509
+ color: #d63638 !important;
510
+ }
511
+
512
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item:last-child,
513
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .content-item:last-child,
514
+ .ocdi__content-container-content .ocdi-create-content-content .plugin-item:last-child,
515
+ .ocdi__content-container-content .ocdi-create-content-content .content-item:last-child {
516
+ padding-bottom: 30px;
517
+ border-bottom: none;
518
+ }
519
+
520
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item label,
521
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .content-item label,
522
+ .ocdi__content-container-content .ocdi-create-content-content .plugin-item label,
523
+ .ocdi__content-container-content .ocdi-create-content-content .content-item label {
524
+ display: block;
525
+ }
526
+
527
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item h3,
528
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .content-item h3,
529
+ .ocdi__content-container-content .ocdi-create-content-content .plugin-item h3,
530
+ .ocdi__content-container-content .ocdi-create-content-content .content-item h3 {
531
+ font-size: 18px;
532
+ line-height: 22px;
533
+ color: #444444;
534
+ font-weight: 500;
535
+ margin: 0;
536
+ }
537
+
538
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item p,
539
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .content-item p,
540
+ .ocdi__content-container-content .ocdi-create-content-content .plugin-item p,
541
+ .ocdi__content-container-content .ocdi-create-content-content .content-item p {
542
+ font-size: 14px;
543
+ line-height: 17px;
544
+ color: #777777;
545
+ margin: 0 0 6px 0;
546
+ }
547
+
548
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item p:last-child,
549
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .content-item p:last-child,
550
+ .ocdi__content-container-content .ocdi-create-content-content .plugin-item p:last-child,
551
+ .ocdi__content-container-content .ocdi-create-content-content .content-item p:last-child {
552
+ margin: 0;
553
+ }
554
+
555
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item .plugin-item-checkbox .checkbox,
556
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item .content-item-checkbox .checkbox,
557
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .content-item .plugin-item-checkbox .checkbox,
558
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .content-item .content-item-checkbox .checkbox,
559
+ .ocdi__content-container-content .ocdi-create-content-content .plugin-item .plugin-item-checkbox .checkbox,
560
+ .ocdi__content-container-content .ocdi-create-content-content .plugin-item .content-item-checkbox .checkbox,
561
+ .ocdi__content-container-content .ocdi-create-content-content .content-item .plugin-item-checkbox .checkbox,
562
+ .ocdi__content-container-content .ocdi-create-content-content .content-item .content-item-checkbox .checkbox {
563
+ -webkit-box-sizing: border-box;
564
+ box-sizing: border-box;
565
+ position: relative;
566
+ display: block;
567
+ background: #f1f1f1;
568
+ width: 32px;
569
+ height: 32px;
570
+ border-radius: 16px;
571
+ border: 1px solid #dddddd;
572
+ }
573
+
574
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item .plugin-item-checkbox .checkbox .ocdi-check-icon,
575
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item .content-item-checkbox .checkbox .ocdi-check-icon,
576
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .content-item .plugin-item-checkbox .checkbox .ocdi-check-icon,
577
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .content-item .content-item-checkbox .checkbox .ocdi-check-icon,
578
+ .ocdi__content-container-content .ocdi-create-content-content .plugin-item .plugin-item-checkbox .checkbox .ocdi-check-icon,
579
+ .ocdi__content-container-content .ocdi-create-content-content .plugin-item .content-item-checkbox .checkbox .ocdi-check-icon,
580
+ .ocdi__content-container-content .ocdi-create-content-content .content-item .plugin-item-checkbox .checkbox .ocdi-check-icon,
581
+ .ocdi__content-container-content .ocdi-create-content-content .content-item .content-item-checkbox .checkbox .ocdi-check-icon {
582
+ display: none;
583
+ width: 20px;
584
+ height: 20px;
585
+ margin: 6px;
586
+ }
587
+
588
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item .plugin-item-checkbox .checkbox .ocdi-lock-icon,
589
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item .content-item-checkbox .checkbox .ocdi-lock-icon,
590
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .content-item .plugin-item-checkbox .checkbox .ocdi-lock-icon,
591
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .content-item .content-item-checkbox .checkbox .ocdi-lock-icon,
592
+ .ocdi__content-container-content .ocdi-create-content-content .plugin-item .plugin-item-checkbox .checkbox .ocdi-lock-icon,
593
+ .ocdi__content-container-content .ocdi-create-content-content .plugin-item .content-item-checkbox .checkbox .ocdi-lock-icon,
594
+ .ocdi__content-container-content .ocdi-create-content-content .content-item .plugin-item-checkbox .checkbox .ocdi-lock-icon,
595
+ .ocdi__content-container-content .ocdi-create-content-content .content-item .content-item-checkbox .checkbox .ocdi-lock-icon {
596
+ position: absolute;
597
+ width: 14px;
598
+ height: 17px;
599
+ bottom: -5px;
600
+ right: -2px;
601
+ }
602
+
603
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item .plugin-item-checkbox input[type=checkbox],
604
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item .content-item-checkbox input[type=checkbox],
605
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .content-item .plugin-item-checkbox input[type=checkbox],
606
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .content-item .content-item-checkbox input[type=checkbox],
607
+ .ocdi__content-container-content .ocdi-create-content-content .plugin-item .plugin-item-checkbox input[type=checkbox],
608
+ .ocdi__content-container-content .ocdi-create-content-content .plugin-item .content-item-checkbox input[type=checkbox],
609
+ .ocdi__content-container-content .ocdi-create-content-content .content-item .plugin-item-checkbox input[type=checkbox],
610
+ .ocdi__content-container-content .ocdi-create-content-content .content-item .content-item-checkbox input[type=checkbox] {
611
+ display: none;
612
+ }
613
+
614
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item .plugin-item-checkbox input[type=checkbox]:checked + .checkbox::after,
615
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item .content-item-checkbox input[type=checkbox]:checked + .checkbox::after,
616
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .content-item .plugin-item-checkbox input[type=checkbox]:checked + .checkbox::after,
617
+ .ocdi__content-container-content .ocdi-install-plugins-content-content .content-item .content-item-checkbox input[type=checkbox]:checked + .checkbox::after,
618
+ .ocdi__content-container-content .ocdi-create-content-content .plugin-item .plugin-item-checkbox input[type=checkbox]:checked + .checkbox::after,
619
+ .ocdi__content-container-content .ocdi-create-content-content .plugin-item .content-item-checkbox input[type=checkbox]:checked + .checkbox::after,
620
+ .ocdi__content-container-content .ocdi-create-content-content .content-item .plugin-item-checkbox input[type=checkbox]:checked + .checkbox::after,
621
+ .ocdi__content-container-content .ocdi-create-content-content .content-item .content-item-checkbox input[type=checkbox]:checked + .checkbox::after {
622
+ content: '';
623
+ display: block;
624
+ font-size: 10px;
625
+ background: #007cba;
626
+ width: 20px;
627
+ height: 20px;
628
+ border-radius: 10px;
629
+ margin: 5px;
630
+ }
631
+
632
+ .ocdi__content-container-content .ocdi-install-plugins-content-content-notice,
633
+ .ocdi__content-container-content .ocdi-create-content-content-notice {
634
+ display: none;
635
+ padding: 25px;
636
+ background: #E5F5FA;
637
+ border-radius: 6px;
638
+ margin: -10px 30px 30px 30px;
639
+ }
640
+
641
+ .ocdi__content-container-content .ocdi-install-plugins-content-content-notice p,
642
+ .ocdi__content-container-content .ocdi-create-content-content-notice p {
643
+ font-size: 14px;
644
+ line-height: 24px;
645
+ color: #444444;
646
+ margin: 0 0 10px 0;
647
+ }
648
+
649
+ .ocdi__content-container-content .ocdi-install-plugins-content-content-notice p:last-child,
650
+ .ocdi__content-container-content .ocdi-create-content-content-notice p:last-child {
651
+ margin-bottom: 0;
652
+ }
653
+
654
+ .ocdi__content-container-content .ocdi-install-plugins-content-footer,
655
+ .ocdi__content-container-content .ocdi-create-content-footer {
656
+ padding: 30px;
657
+ background: #fafafa;
658
+ border-top: 1px solid #dddddd;
659
+ display: -webkit-box;
660
+ display: -ms-flexbox;
661
+ display: flex;
662
+ -webkit-box-pack: justify;
663
+ -ms-flex-pack: justify;
664
+ justify-content: space-between;
665
+ -webkit-box-align: center;
666
+ -ms-flex-align: center;
667
+ align-items: center;
668
+ }
669
+
670
+ .ocdi__content-container-content .ocdi-install-plugins-content-footer .button,
671
+ .ocdi__content-container-content .ocdi-create-content-footer .button {
672
+ font-size: 16px;
673
+ line-height: 19px;
674
+ padding: 10px 18px;
675
+ display: -webkit-box;
676
+ display: -ms-flexbox;
677
+ display: flex;
678
+ -webkit-box-align: center;
679
+ -ms-flex-align: center;
680
+ align-items: center;
681
+ }
682
+
683
+ .ocdi__content-container-content .ocdi-install-plugins-content-footer .button img,
684
+ .ocdi__content-container-content .ocdi-create-content-footer .button img {
685
+ width: 16px;
686
+ height: auto;
687
+ margin-right: 5px;
688
+ }
689
+
690
+ .ocdi__intro-text p {
691
+ font-size: 18px;
692
+ line-height: 26px;
693
+ font-weight: 300;
694
+ color: #666666;
695
+ margin: 0 0 24px;
696
+ }
697
+
698
+ .ocdi__intro-text ul {
699
+ padding: 0 4%;
700
+ list-style-type: square;
701
+ }
702
+
703
+ .ocdi__theme-about {
704
+ margin-bottom: 30px;
705
+ display: -webkit-box;
706
+ display: -ms-flexbox;
707
+ display: flex;
708
+ -webkit-box-pack: justify;
709
+ -ms-flex-pack: justify;
710
+ justify-content: space-between;
711
+ }
712
+
713
+ .ocdi__theme-about-screenshots {
714
+ -webkit-box-flex: 11;
715
+ -ms-flex: 11;
716
+ flex: 11;
717
+ margin-right: 30px;
718
+ }
719
+
720
+ .ocdi__theme-about-screenshots .screenshot {
721
+ -webkit-box-sizing: border-box;
722
+ box-sizing: border-box;
723
+ }
724
+
725
+ .ocdi__theme-about-screenshots .screenshot img {
726
+ border: 1px solid #CCD0D4;
727
+ -webkit-filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.07));
728
+ filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.07));
729
+ }
730
+
731
+ .ocdi__theme-about-screenshots .screenshot.blank {
732
+ border: 1px solid #CCD0D4;
733
+ -webkit-filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.07));
734
+ filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.07));
735
+ min-height: 500px;
736
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAALElEQVQYGWO8d+/efwYkoKioiMRjYGBC4WHhUK6A8T8QIJt8//59ZC493AAAQssKpBK4F5AAAAAASUVORK5CYII=);
737
+ }
738
+
739
+ .ocdi__theme-about-screenshots img {
740
+ width: 100%;
741
+ }
742
+
743
+ .ocdi__theme-about-info {
744
+ -webkit-box-flex: 10;
745
+ -ms-flex: 10;
746
+ flex: 10;
747
+ display: -webkit-box;
748
+ display: -ms-flexbox;
749
+ display: flex;
750
+ -webkit-box-orient: vertical;
751
+ -webkit-box-direction: normal;
752
+ -ms-flex-direction: column;
753
+ flex-direction: column;
754
+ -webkit-box-pack: justify;
755
+ -ms-flex-pack: justify;
756
+ justify-content: space-between;
757
+ }
758
+
759
+ .ocdi__theme-about-info .theme-title {
760
+ display: -webkit-box;
761
+ display: -ms-flexbox;
762
+ display: flex;
763
+ -webkit-box-align: baseline;
764
+ -ms-flex-align: baseline;
765
+ align-items: baseline;
766
+ }
767
+
768
+ .ocdi__theme-about-info .theme-title .theme-name {
769
+ margin-bottom: 16px;
770
+ }
771
+
772
+ .ocdi__theme-about-info .theme-title .theme-version {
773
+ margin-left: 10px;
774
+ color: #72777C;
775
+ font-size: 13px;
776
+ line-height: 16px;
777
+ }
778
+
779
+ .ocdi__theme-about-info .theme-author {
780
+ font-size: 16px;
781
+ line-height: 19px;
782
+ color: #72777C;
783
+ margin: 0 0 20px;
784
+ }
785
+
786
+ .ocdi__theme-about-info .theme-description {
787
+ font-size: 16px;
788
+ line-height: 24px;
789
+ color: #555555;
790
+ margin: 0 0 20px;
791
+ }
792
+
793
+ .ocdi__theme-about-info .theme-tags {
794
+ font-size: 13px;
795
+ line-height: 20px;
796
+ color: #555555;
797
+ margin: 4px 0 0;
798
+ }
799
+
800
+ .ocdi__theme-about-info .theme-tags span {
801
+ font-weight: 700;
802
+ }
803
+
804
+ .ocdi__theme-about-info .ocdi-import-mode-switch {
805
+ float: right;
806
+ font-size: 14px;
807
+ line-height: 17px;
808
+ }
809
+
810
+ @media (max-width: 880px) {
811
+ .ocdi__theme-about {
812
+ -webkit-box-orient: vertical;
813
+ -webkit-box-direction: normal;
814
+ -ms-flex-direction: column;
815
+ flex-direction: column;
816
+ }
817
+ .ocdi__theme-about-screenshots {
818
+ margin: 0 0 30px 0;
819
+ }
820
+ }
821
 
822
  .ocdi__demo-import-files {
823
+ width: 100%;
824
  }
825
 
826
  .ocdi__demo-import-preview-image-message {
827
+ font-style: italic;
828
  }
829
 
 
 
830
  .ocdi__title:before {
831
+ width: auto;
832
+ height: auto;
833
+ font-size: inherit;
834
  }
835
 
836
+ .ocdi__multi-select-import, .ocdi__demo-import-notice:not(:empty) {
837
+ padding: 20px;
838
+ margin: 30px 0;
839
+ font-size: 14px;
840
+ line-height: 19px;
841
+ background-color: #ffffff;
842
+ border: 1px solid #e5e5e5;
843
+ }
844
 
845
+ .ocdi__file-upload-container {
846
+ border: 1px solid #dddddd;
847
+ -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.07);
848
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.07);
849
  }
850
 
851
+ .ocdi__file-upload-container--header {
852
+ padding: 30px;
853
+ border-bottom: 1px solid #dddddd;
854
+ background-color: #ffffff;
855
  }
856
 
857
+ .ocdi__file-upload-container--header h2 {
858
+ font-size: 22px;
859
+ line-height: 27px;
860
+ margin: 0;
861
+ }
862
 
863
+ .ocdi__file-upload-container-items {
864
+ padding: 30px 30px 0 30px;
865
+ background-color: #ffffff;
866
+ display: -webkit-box;
867
+ display: -ms-flexbox;
868
+ display: flex;
869
+ -ms-flex-wrap: wrap;
870
+ flex-wrap: wrap;
871
  }
872
 
873
+ .ocdi__file-upload-container-items--second-row {
874
+ padding-top: 0;
 
875
  }
876
 
877
+ .ocdi__file-upload-container-items .ocdi__card {
878
+ -webkit-box-shadow: none;
879
+ box-shadow: none;
 
880
  }
881
 
882
+ .ocdi__file-upload-container-items .ocdi__card-content {
883
+ position: relative;
 
 
 
884
  }
885
 
886
+ .ocdi__file-upload-container-items .ocdi__card-content-info {
887
+ position: absolute;
888
+ right: 10px;
889
+ top: 10px;
890
  }
891
 
892
+ .ocdi__file-upload-container-items .ocdi__card-content-info img {
893
+ width: 16px;
894
+ height: 16px;
895
+ }
896
 
897
+ .ocdi__file-upload-container--footer {
898
+ padding: 30px;
899
+ background-color: #fafafa;
900
+ border-top: 1px solid #dddddd;
901
+ display: -webkit-box;
902
+ display: -ms-flexbox;
903
+ display: flex;
904
+ -webkit-box-pack: justify;
905
+ -ms-flex-pack: justify;
906
+ justify-content: space-between;
907
+ -webkit-box-align: center;
908
+ -ms-flex-align: center;
909
+ align-items: center;
910
  }
911
 
912
+ .ocdi__demo-import-notice:not(:empty) {
913
+ border: 0;
914
+ border-left: 4px solid #00a0d2;
915
+ -webkit-box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1);
916
+ box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1);
917
+ }
918
 
919
+ [dir="rtl"] .ocdi__demo-import-notice:not(:empty) {
920
+ border: 0;
921
+ border-right: 4px solid #00a0d2;
922
  }
923
 
924
+ .ocdi__button-container {
925
+ margin-top: 30px;
 
 
 
926
  }
927
 
928
+ .ocdi__ajax-loader {
929
+ font-size: 1.5em;
930
+ }
931
 
932
+ .ocdi__ajax-loader .spinner {
933
+ display: inline-block;
934
+ float: none;
935
+ visibility: visible;
936
+ margin-bottom: 6px;
937
+ }
938
 
939
  .ocdi__gl-navigation li a {
940
+ -webkit-box-shadow: none;
941
+ box-shadow: none;
942
+ }
943
+
944
+ .ocdi__gl-item-container {
945
+ display: -webkit-box;
946
+ display: -ms-flexbox;
947
+ display: flex;
948
+ -ms-flex-wrap: wrap;
949
+ flex-wrap: wrap;
950
  }
951
 
952
  .ocdi__gl-item {
953
+ -webkit-box-flex: 0;
954
+ -ms-flex: 0 0 100%;
955
+ flex: 0 0 100%;
956
+ margin-bottom: 20px;
957
+ border: 1px solid #ddd;
958
+ -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.07);
959
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.07);
960
+ -webkit-box-sizing: border-box;
961
+ box-sizing: border-box;
962
+ background-color: #fafafa;
963
  }
964
 
965
  .ocdi__gl-item-image-container {
966
+ display: block;
967
+ overflow: hidden;
968
+ position: relative;
969
+ -webkit-backface-visibility: hidden;
970
+ -webkit-transition: opacity 0.2s ease-in-out;
971
+ transition: opacity 0.2s ease-in-out;
972
  }
973
 
974
  .ocdi__gl-item-image-container::after {
975
+ content: "";
976
+ display: block;
977
+ padding-top: 66.66666%;
978
  }
979
 
980
  .ocdi__gl-item-image {
981
+ height: auto;
982
+ position: absolute;
983
+ left: 0;
984
+ top: 0;
985
+ width: 100%;
986
+ -webkit-transition: opacity 0.2s ease-in-out;
987
+ transition: opacity 0.2s ease-in-out;
988
  }
989
 
990
  .ocdi__gl-item-image--no-image {
991
+ display: inline-block;
992
+ width: 50%;
993
+ text-align: center;
994
+ position: absolute;
995
+ top: 45%;
996
+ right: 25%;
997
+ left: 25%;
998
  }
999
 
1000
  .ocdi__gl-item-footer {
1001
+ margin: 0;
1002
+ padding: 8px 10px;
1003
+ border-top: 1px solid #dddddd;
1004
+ background: #ffffff;
1005
+ background: rgba(255, 255, 255, 0.65);
 
 
1006
  }
1007
 
1008
+ .ocdi__gl-item-title {
1009
+ white-space: nowrap;
1010
+ text-overflow: ellipsis;
1011
+ display: block;
1012
+ margin: 0;
1013
+ font-size: 16px;
1014
+ line-height: 19px;
1015
+ text-align: center;
1016
+ font-weight: 500;
1017
+ color: #23282d;
1018
+ padding: 5px 0 6px;
1019
  }
1020
 
1021
+ @media (max-width: 782px) {
1022
+ .ocdi__gl-item-title {
1023
+ padding: 12px 0 13px;
1024
+ }
1025
  }
1026
 
1027
+ .ocdi__gl-item-buttons {
1028
+ display: none;
1029
+ text-align: center;
1030
  }
1031
 
1032
  .ocdi__gl-item-button + .ocdi__gl-item-button {
1033
+ margin-left: 15px;
1034
  }
1035
 
1036
  @media (max-width: 782px) {
1037
+ .ocdi__gl-item-button {
1038
+ width: calc(50% - 10px);
1039
+ margin-bottom: 10px;
1040
+ }
1041
+ .ocdi__gl-item-button + .ocdi__gl-item-button {
1042
+ float: left;
1043
+ }
1044
+ }
1045
 
1046
+ .ocdi__gl-item:hover .ocdi__gl-item-buttons {
1047
+ display: block;
1048
+ }
 
1049
 
1050
+ .ocdi__gl-item:hover .ocdi__gl-item-title {
1051
+ display: none;
1052
+ }
1053
 
1054
+ .ocdi__gl-item:hover .ocdi__gl-item-footer {
1055
+ background: #ffffff;
 
1056
  }
1057
 
1058
  .ocdi__gl-header {
1059
+ display: inline-block;
1060
+ width: calc(100% - 24px);
1061
+ background-color: #ffffff;
1062
+ border: 1px solid #ccd0d4;
1063
+ -webkit-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.07);
1064
+ box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.07);
1065
+ margin-bottom: 30px;
1066
+ padding: 0 11px;
1067
  }
1068
 
1069
  .ocdi__gl-navigation {
1070
+ font-size: 13px;
1071
+ line-height: 16px;
1072
+ width: 100%;
1073
+ float: left;
1074
  }
1075
 
1076
  .ocdi__gl-navigation ul {
1077
+ list-style-type: none;
1078
+ margin: 0;
1079
+ padding: 0;
1080
+ overflow: hidden;
1081
  }
1082
 
1083
  .ocdi__gl-navigation li {
1084
+ margin: 0;
 
1085
  }
1086
 
1087
+ .ocdi__gl-navigation li.active a span,
1088
+ .ocdi__gl-navigation li.active a:hover span {
1089
+ padding-bottom: 14px;
1090
+ border-bottom: 4px solid #666666;
1091
  }
1092
 
1093
  .ocdi__gl-navigation li a {
1094
+ display: block;
1095
+ text-align: center;
1096
+ text-decoration: none;
1097
+ color: #23282D;
1098
+ padding: 18px 10px;
1099
+ }
1100
+
1101
+ .ocdi__gl-navigation li a span {
1102
+ padding-bottom: 14px;
1103
+ border-bottom: 4px solid #ffffff;
1104
  }
1105
 
1106
  .ocdi__gl-navigation li a:hover {
1107
+ color: #00a0d2;
1108
+ cursor: pointer;
1109
+ }
1110
+
1111
+ .ocdi__gl-navigation li a:hover span {
1112
+ border-bottom: 4px solid #ffffff;
1113
  }
1114
 
1115
  .ocdi__gl-search-input {
1116
+ width: 100%;
1117
+ margin: 10px 0;
1118
+ font-size: 13px;
1119
+ line-height: 16px;
1120
+ color: #72777C !important;
1121
  }
1122
 
1123
  @media (min-width: 640px) {
1124
+ .ocdi__gl-navigation {
1125
+ width: calc(100% - 280px);
1126
+ }
1127
+ .ocdi__gl-navigation li {
1128
+ margin: 0 15px;
1129
+ float: left;
1130
+ }
1131
+ .ocdi__gl-navigation li a {
1132
+ padding: 18px 10px;
1133
+ }
1134
+ .ocdi__gl-search-input {
1135
+ display: inline-block;
1136
+ width: 280px;
1137
+ height: 30px;
1138
+ margin: 0;
1139
+ margin-top: 11px;
1140
+ }
1141
+ .ocdi__gl-item-container {
1142
+ margin-right: -20px;
1143
+ }
1144
+ .ocdi__gl-item {
1145
+ -webkit-box-flex: 0;
1146
+ -ms-flex: 0 0 calc(50% - 20px);
1147
+ flex: 0 0 calc(50% - 20px);
1148
+ margin-right: 20px;
1149
+ }
1150
+ }
1151
+
1152
+ @media (min-width: 1120px) {
1153
+ .ocdi__gl-item-container {
1154
+ margin-right: -30px;
1155
+ }
1156
+ .ocdi__gl-item {
1157
+ -webkit-box-flex: 0;
1158
+ -ms-flex: 0 0 calc(33.33% - 30px);
1159
+ flex: 0 0 calc(33.33% - 30px);
1160
+ margin-bottom: 30px;
1161
+ margin-right: 30px;
1162
+ }
1163
+ }
1164
+
1165
+ .ocdi__card {
1166
+ background: #ffffff;
1167
+ text-align: center;
1168
+ -webkit-box-sizing: border-box;
1169
+ box-sizing: border-box;
1170
+ border: 1px solid #dddddd;
1171
+ -webkit-box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.07);
1172
+ box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.07);
1173
+ display: -webkit-box;
1174
+ display: -ms-flexbox;
1175
+ display: flex;
1176
+ -webkit-box-orient: vertical;
1177
+ -webkit-box-direction: normal;
1178
+ -ms-flex-direction: column;
1179
+ flex-direction: column;
1180
+ -webkit-box-pack: justify;
1181
+ -ms-flex-pack: justify;
1182
+ justify-content: space-between;
1183
+ }
1184
+
1185
+ .ocdi__card-content {
1186
+ padding: 30px;
1187
+ }
1188
+
1189
+ .ocdi__card-content .ocdi-icon--content {
1190
+ width: 53px;
1191
+ height: 53px;
1192
+ }
1193
+
1194
+ .ocdi__card-content .ocdi-icon--widgets {
1195
+ width: 56px;
1196
+ height: 49px;
1197
+ }
1198
+
1199
+ .ocdi__card-content .ocdi-icon--brush {
1200
+ width: 55px;
1201
+ height: 52px;
1202
+ }
1203
+
1204
+ .ocdi__card-content .ocdi-icon--redux {
1205
+ width: 82px;
1206
+ height: 70px;
1207
+ }
1208
+
1209
+ .ocdi__card-content .ocdi-icon--plugins {
1210
+ width: 65px;
1211
+ height: 64px;
1212
+ }
1213
+
1214
+ .ocdi__card-content .ocdi-icon--copy {
1215
+ width: 42px;
1216
+ height: 52px;
1217
+ }
1218
+
1219
+ .ocdi__card-content .ocdi-icon--layout {
1220
+ width: 53px;
1221
+ height: 52px;
1222
+ }
1223
 
1224
+ .ocdi__card-content .ocdi-icon-container {
1225
+ height: 70px;
1226
+ display: -webkit-box;
1227
+ display: -ms-flexbox;
1228
+ display: flex;
1229
+ -webkit-box-align: center;
1230
+ -ms-flex-align: center;
1231
+ align-items: center;
1232
+ -webkit-box-pack: center;
1233
+ -ms-flex-pack: center;
1234
+ justify-content: center;
1235
+ }
1236
+
1237
+ .ocdi__card-content h3 {
1238
+ margin: 5px 0;
1239
+ font-size: 16px;
1240
+ line-height: 20px;
1241
+ font-weight: 500;
1242
+ }
1243
+
1244
+ .ocdi__card-content p {
1245
+ margin: 0;
1246
+ font-size: 13px;
1247
+ line-height: 16px;
1248
+ color: #666666;
1249
+ }
1250
+
1251
+ .ocdi__card-footer {
1252
+ background: #fafafa;
1253
+ -webkit-box-shadow: 0px -1px 0px #DDDDDD;
1254
+ box-shadow: 0px -1px 0px #DDDDDD;
1255
+ padding: 10px;
1256
+ display: -webkit-box;
1257
+ display: -ms-flexbox;
1258
+ display: flex;
1259
+ -webkit-box-pack: center;
1260
+ -ms-flex-pack: center;
1261
+ justify-content: center;
1262
+ -webkit-box-align: center;
1263
+ -ms-flex-align: center;
1264
+ align-items: center;
1265
+ }
1266
+
1267
+ .ocdi__card-footer .button-secondary {
1268
+ background: #fafafa;
1269
+ }
1270
 
1271
+ .ocdi__card-footer input[type="file"] {
1272
+ width: 200px;
1273
+ padding: 4px 0;
1274
+ }
1275
 
1276
+ .ocdi__card-footer .button-disabled {
1277
+ cursor: not-allowed;
1278
+ }
 
 
 
 
1279
 
1280
+ .ocdi__card--three {
1281
+ -webkit-box-flex: 0;
1282
+ -ms-flex: 0 0 100%;
1283
+ flex: 0 0 100%;
1284
+ margin-bottom: 20px;
1285
+ }
1286
 
1287
+ @media (min-width: 768px) {
1288
+ .ocdi__card--three {
1289
+ -webkit-box-flex: 0;
1290
+ -ms-flex: 0 0 calc(50% - 10px);
1291
+ flex: 0 0 calc(50% - 10px);
1292
+ margin-right: 20px;
1293
+ }
1294
+ .ocdi__card--three:nth-child(2n) {
1295
+ margin-right: 0;
1296
+ }
1297
  }
1298
 
1299
  @media (min-width: 1120px) {
1300
+ .ocdi__card--three {
1301
+ -webkit-box-flex: 0;
1302
+ -ms-flex: 0 0 calc(33.33% - 20px);
1303
+ flex: 0 0 calc(33.33% - 20px);
1304
+ margin-bottom: 30px;
1305
+ margin-right: 30px;
1306
+ }
1307
+ .ocdi__card--three:nth-child(2n) {
1308
+ margin-right: 30px;
1309
+ }
1310
+ .ocdi__card--three:nth-child(3n) {
1311
+ margin-right: 0;
1312
+ }
1313
+ }
1314
 
1315
+ .ocdi__card--four {
1316
+ -webkit-box-flex: 0;
1317
+ -ms-flex: 0 0 100%;
1318
+ flex: 0 0 100%;
1319
+ margin-bottom: 20px;
1320
  }
1321
 
1322
+ @media (min-width: 768px) {
1323
+ .ocdi__card--four {
1324
+ -webkit-box-flex: 0;
1325
+ -ms-flex: 0 0 calc(50% - 10px);
1326
+ flex: 0 0 calc(50% - 10px);
1327
+ margin-right: 20px;
1328
+ }
1329
+ .ocdi__card--four:nth-child(2n) {
1330
+ margin-right: 0;
1331
+ }
1332
+ }
1333
+
1334
+ @media (min-width: 1120px) {
1335
+ .ocdi__card--four {
1336
+ -webkit-box-flex: 0;
1337
+ -ms-flex: 0 0 calc(50% - 15px);
1338
+ flex: 0 0 calc(50% - 15px);
1339
+ margin-bottom: 30px;
1340
+ margin-right: 30px;
1341
+ }
1342
+ }
1343
 
1344
+ @-webkit-keyframes ocdi-fade {
1345
+ from {
1346
+ opacity: 1;
1347
+ }
1348
+ to {
1349
+ opacity: 0;
1350
+ }
1351
+ }
1352
+
1353
+ @keyframes ocdi-fade {
1354
+ from {
1355
+ opacity: 1;
1356
+ }
1357
+ to {
1358
+ opacity: 0;
1359
+ }
1360
  }
1361
 
1362
  .ocdi-is-fadeout {
1363
+ -webkit-animation: ocdi-fade linear 200ms 1 forwards;
1364
+ animation: ocdi-fade linear 200ms 1 forwards;
1365
  }
1366
 
1367
  .ocdi-is-fadein {
1368
+ animation: ocdi-fade linear 200ms 1 reverse forwards;
1369
  }
1370
 
 
 
1371
  .ocdi__modal-image-container {
1372
+ width: 100%;
1373
+ height: 180px;
1374
+ margin: 0;
1375
+ overflow: hidden;
1376
  }
1377
 
1378
+ .ocdi__modal-image-container img {
1379
+ width: 100%;
 
1380
  }
1381
 
1382
+ .ocdi__modal-item-title {
1383
+ margin-top: 0.5em;
1384
+ font-weight: bold;
1385
  }
1386
 
1387
  .ocdi__modal-notice.ocdi__demo-import-notice:not(:empty) {
1388
+ border: 1px solid #e5e5e5;
1389
+ border-left: 4px solid #00a0d2;
1390
+ margin: 20px 0 0;
1391
  }
1392
 
1393
+ .ocdi-loading {
1394
+ -webkit-animation: 0.65s linear infinite ocdi-loading-spin;
1395
+ animation: 0.65s linear infinite ocdi-loading-spin;
1396
  }
1397
+
1398
+ .ocdi-loading-md {
1399
+ width: 32px;
1400
+ height: 32px;
1401
+ }
1402
+
1403
+ .ocdi-loading-sm {
1404
+ width: 16px;
1405
+ height: 16px;
1406
+ }
1407
+
1408
+ @-webkit-keyframes ocdi-loading-spin {
1409
+ 0% {
1410
+ -webkit-transform: rotateZ(270deg);
1411
+ transform: rotateZ(270deg);
1412
+ }
1413
+ 100% {
1414
+ -webkit-transform: rotateZ(630deg);
1415
+ transform: rotateZ(630deg);
1416
+ }
1417
+ }
1418
+
1419
+ @keyframes ocdi-loading-spin {
1420
+ 0% {
1421
+ -webkit-transform: rotateZ(270deg);
1422
+ transform: rotateZ(270deg);
1423
+ }
1424
+ 100% {
1425
+ -webkit-transform: rotateZ(630deg);
1426
+ transform: rotateZ(630deg);
1427
+ }
1428
+ }
1429
+
1430
+ /*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1haW4uc2NzcyIsIm1haW4uY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBO0VBQ0MsZUFBZTtBQ0FoQjs7QURHQTtFQUNDLGVBQWU7QUNBaEI7O0FEREE7RUFJRSxtQkFBbUI7RUFDbkIsZUFBZTtFQUNmLGlCQUFpQjtFQUNqQixnQkFBZ0I7RUFDaEIsbUJBQW1CO0FDQ3JCOztBRFRBOztFQWFFLGFBQWE7QUNDZjs7QURkQTtFQWlCRSxjQUFjO0FDQ2hCOztBRGxCQTs7O0VBdUJFLHlCQUF5QjtFQUN6QixrQkFBa0I7QUNDcEI7O0FERUM7RUFDQyxhQUFhO0FDQ2Y7O0FERkU7OztFQU1DLGtCQUFrQjtBQ0VyQjs7QURSRTs7O0VBU0UsbUJBQW1CO0FDS3ZCOztBREFFO0VBRUMsY0FBYztBQ0VqQjs7QURFQztFQUNDLHVCQUF1QjtFQUN2Qiw4QkFBOEI7QUNDaEM7O0FERUM7RUFDQyxhQUFhO0VBQ2IsbUJBQW1CO0VBQ25CLGtCQUFrQjtFQUNsQixZQUFZO0FDQ2Q7O0FETEU7RUFPQyxlQUFlO0VBQ2YsaUJBQWlCO0VBQ2pCLGNBQWM7RUFDZCxrQkFBa0I7QUNFckI7O0FEWkU7RUFhRSxnQkFBZ0I7QUNHcEI7O0FERUM7RUFFQyxhQUFhO0VBQ2Isa0JBQWtCO0VBQ2xCLGFBQWE7QUNBZjs7QURKRTtFQU9DLGVBQWU7RUFDZixpQkFBaUI7RUFDakIsZ0JBQWdCO0VBQ2hCLGNBQWM7RUFDZCxrQkFBa0I7QUNDckI7O0FEWkU7RUFjRSxnQkFBZ0I7QUNFcEI7O0FERUc7RUFFQyxlQUFlO0VBQ2YsaUJBQWlCO0VBQ2pCLG1CQUFtQjtBQ0F2Qjs7QURKRztFQVFDLGtCQUFrQjtBQ0F0Qjs7QURSRztFQVdFLGdCQUFnQjtBQ0NyQjs7QURJRTtFQUNDLGNBQWM7QUNEakI7O0FER0c7RUFDQyxZQUFZO0VBQ1osYUFBYTtFQUNiLHFCQUFxQjtBQ0F6Qjs7QURHRztFQUNDLHFCQUFxQjtBQ0F6Qjs7QURFSTtFQUNDLFlBQVk7RUFDWixhQUFhO0FDQ2xCOztBREVJO0VBRUMsWUFBWTtFQUNaLGFBQWE7QUNBbEI7O0FEcEJHO0VBeUJDLGdCQUFnQjtFQUNoQixjQUFjO0FDRGxCOztBRHpCRztFQTZCRSxpQkFBaUI7RUFDakIsZUFBZTtFQUNmLGlCQUFpQjtFQUNqQixjQUFjO0FDQW5COztBREtFO0VBQ0Msb0JBQWE7RUFBYixvQkFBYTtFQUFiLGFBQWE7RUFDYix3QkFBdUI7TUFBdkIscUJBQXVCO1VBQXZCLHVCQUF1QjtFQUN2Qix5QkFBbUI7TUFBbkIsc0JBQW1CO1VBQW5CLG1CQUFtQjtFQUNuQixtQkFBZTtNQUFmLGVBQWU7RUFDZixpQkFBaUI7RUFDakIseUJBQXlCO0VBQ3pCLDZCQUE2QjtFQUM3Qix3QkFBd0I7QUNGM0I7O0FETkc7RUFXQyxtQkFBYTtNQUFiLGlCQUFhO1VBQWIsYUFBYTtFQUNiLGtCQUFrQjtBQ0R0Qjs7QURYRztFQWVFLGVBQWU7QUNBcEI7O0FENUpBO0VBbUtFLGVBQWU7RUFDZixpQkFBaUI7RUFDakIsZ0JBQWdCO0VBQ2hCLGdCQUFnQjtFQUNoQixpQkFBaUI7QUNIbkI7O0FEcEtBO0VBMktHLHlCQUF5QjtFQUN6Qiw4QkFBOEI7RUFDOUIsZ0NBQWdDO0VBQ2hDLFlBQVk7QUNIZjs7QURTRTtFQUNDLGlCQUFpQjtFQUNqQixZQUFZO0VBQ1osNkJBQTZCO0VBQzdCLDBCQUEwQjtFQUMxQiwwQkFBMEI7RUFDMUIsNEJBQTRCO0FDTi9COztBRFVDO0VBQ0MsdUJBQXVCO0VBQ3ZCLHdCQUF3QjtFQUN4QixxQkFBcUI7RUFDckIsMkJBQTJCO0VBQzNCLDZCQUE2QjtFQUM3QixzQkFBc0I7QUNQeEI7O0FEV0E7RUFDQyxhQUFhO0FDUmQ7O0FEV0E7RUFDQyxZQUFZO0VBQ1osY0FBYztFQUNkLG9CQUFvQjtBQ1JyQjs7QURhQztFQUNDLFlBQVk7RUFDWix5QkFBeUI7RUFDekIsa0JBQWtCO0VBQ2xCLG1EQUEyQztVQUEzQywyQ0FBMkM7RUFDM0Msb0JBQWE7RUFBYixvQkFBYTtFQUFiLGFBQWE7RUFDYix5QkFBbUI7TUFBbkIsc0JBQW1CO1VBQW5CLG1CQUFtQjtFQUNuQix5QkFBOEI7TUFBOUIsc0JBQThCO1VBQTlCLDhCQUE4QjtBQ1ZoQzs7QURZRTtFQUNDLFNBQVM7RUFDVCxlQUFlO0VBQ2YsaUJBQWlCO0VBQ2pCLGdCQUFnQjtBQ1RuQjs7QURZRTtFQUNDLFdBQVc7RUFDWCxZQUFZO0FDVGY7O0FEYUM7RUFDQyxhQUFhO0FDVmY7O0FEWUU7RUFDQyxvQkFBYTtFQUFiLG9CQUFhO0VBQWIsYUFBYTtBQ1RoQjs7QURXRztFQUNDLG1CQUFPO01BQVAsV0FBTztVQUFQLE9BQU87RUFDUCxrQkFBa0I7RUFDbEIsbUJBQW1CO0VBQ25CLDhCQUFzQjtVQUF0QixzQkFBc0I7RUFDdEIseUJBQXlCO0VBQ3pCLG1EQUEyQztVQUEzQywyQ0FBMkM7QUNSL0M7O0FEV0c7RUFDQyxZQUFZO0FDUmhCOztBRE9JO0VBSUMsVUFBVTtBQ1BmOztBREdJO0VBUUMsYUFBYTtBQ1BsQjs7QURESTtFQVdFLHlCQUF5QjtFQUN6Qiw0REFBb0Q7VUFBcEQsb0RBQW9EO0VBQ3BELHFMQUFxTDtBQ04zTDs7QURQSTtFQWtCQyxhQUFhO0FDUGxCOztBRFhJO0VBcUJFLGVBQWU7RUFDZixpQkFBaUI7RUFDakIsZ0JBQWdCO0VBQ2hCLFNBQVM7QUNOZjs7QURsQkk7RUE2QkMsV0FBVztBQ1BoQjs7QURsQ0c7O0VBK0NDLGFBQWE7RUFDYixnQ0FBZ0M7QUNScEM7O0FEeENHOztFQW1ERSxlQUFlO0VBQ2YsaUJBQWlCO0VBQ2pCLG1CQUFtQjtFQUNuQixpQkFBaUI7QUNOdEI7O0FEaERHOztFQTBERSxlQUFlO0VBQ2YsaUJBQWlCO0VBQ2pCLGdCQUFnQjtFQUNoQixjQUFjO0VBQ2Qsa0JBQWtCO0FDTHZCOztBRHpERzs7RUFpRUcsU0FBUztBQ0hmOztBRDlERzs7RUFzRUUsZ0JBQWdCO0FDSHJCOztBRG5FRzs7RUF5RUcsY0FBYztFQUNkLGVBQWU7RUFDZixnQkFBZ0I7RUFDaEIsY0FBYztFQUNkLG1CQUFtQjtBQ0R6Qjs7QUQ1RUc7Ozs7RUFzRkUsb0JBQWE7RUFBYixvQkFBYTtFQUFiLGFBQWE7RUFDYix5QkFBOEI7TUFBOUIsc0JBQThCO1VBQTlCLDhCQUE4QjtFQUM5Qix5QkFBbUI7TUFBbkIsc0JBQW1CO1VBQW5CLG1CQUFtQjtFQUNuQixjQUFjO0VBQ2QsZUFBZTtFQUNmLGdDQUFnQztBQ0hyQzs7QUR4Rkc7Ozs7RUE4RkcsYUFBYTtBQ0NuQjs7QUQvRkc7Ozs7RUFrR0csZUFBZTtBQ0lyQjs7QUR0R0c7Ozs7Ozs7O0VBd0dLLFlBQVk7RUFDWixtQkFBbUI7QUNTM0I7O0FEbEhHOzs7Ozs7OztFQTRHTSxxQkFBcUI7QUNpQjlCOztBRDdIRzs7Ozs7Ozs7RUFnSE0sd0JBQXdCO0FDd0JqQzs7QUR4SUc7Ozs7RUF1SEcsZUFBZTtBQ3dCckI7O0FEL0lHOzs7O0VBNEhJLGNBQWM7QUMwQnJCOztBRHRKRzs7Ozs7Ozs7RUFtSUssdUJBQXVCO0FDOEIvQjs7QURqS0c7Ozs7Ozs7O0VBc0lNLHdCQUF3QjtBQ3NDakM7O0FENUtHOzs7Ozs7OztFQTBJTSx3QkFBd0I7QUM2Q2pDOztBRHZMRzs7OztFQWlKRyxrQkFBa0I7QUM2Q3hCOztBRDlMRzs7OztFQW9KSSxvQkFBYTtFQUFiLG9CQUFhO0VBQWIsYUFBYTtFQUNiLHlCQUFtQjtNQUFuQixzQkFBbUI7VUFBbkIsbUJBQW1CO0VBQ25CLGlCQUFpQjtBQ2lEeEI7O0FEdk1HOzs7O0VBeUpLLGdCQUFnQjtFQUNoQix5QkFBeUI7RUFDekIsV0FBVztFQUNYLFlBQVk7RUFDWixrQkFBa0I7RUFDbEIsZ0JBQWdCO0FDcUR4Qjs7QURuTkc7Ozs7RUFpS00sV0FBVztFQUNYLFlBQVk7RUFDWixXQUFXO0FDeURwQjs7QUQ1Tkc7Ozs7RUEyS0kseUJBQXlCO0FDd0RoQzs7QURuT0c7Ozs7RUFpTEkseUJBQXlCO0FDeURoQzs7QUQxT0c7Ozs7RUFzTEcsb0JBQW9CO0VBQ3BCLG1CQUFtQjtBQzJEekI7O0FEbFBHOzs7O0VBMkxHLGNBQWM7QUM4RHBCOztBRHpQRzs7OztFQStMRyxlQUFlO0VBQ2YsaUJBQWlCO0VBQ2pCLGNBQWM7RUFDZCxnQkFBZ0I7RUFDaEIsU0FBUztBQ2lFZjs7QURwUUc7Ozs7RUF1TUcsZUFBZTtFQUNmLGlCQUFpQjtFQUNqQixjQUFjO0VBQ2QsaUJBQWlCO0FDb0V2Qjs7QUQ5UUc7Ozs7RUE2TUksU0FBUztBQ3dFaEI7O0FEclJHOzs7Ozs7OztFQW9OSSw4QkFBc0I7VUFBdEIsc0JBQXNCO0VBQ3RCLGtCQUFrQjtFQUNsQixjQUFjO0VBQ2QsbUJBQW1CO0VBQ25CLFdBQVc7RUFDWCxZQUFZO0VBQ1osbUJBQW1CO0VBQ25CLHlCQUF5QjtBQzRFaEM7O0FEdlNHOzs7Ozs7OztFQThOSyxhQUFhO0VBQ2IsV0FBVztFQUNYLFlBQVk7RUFDWixXQUFXO0FDb0ZuQjs7QURyVEc7Ozs7Ozs7O0VBcU9LLGtCQUFrQjtFQUNsQixXQUFXO0VBQ1gsWUFBWTtFQUNaLFlBQVk7RUFDWixXQUFXO0FDMkZuQjs7QURwVUc7Ozs7Ozs7O0VBOE9JLGFBQWE7QUNpR3BCOztBRC9VRzs7Ozs7Ozs7RUFtUEssV0FBVztFQUNYLGNBQWM7RUFDZCxlQUFlO0VBQ2YsbUJBQW1CO0VBQ25CLFdBQVc7RUFDWCxZQUFZO0VBQ1osbUJBQW1CO0VBQ25CLFdBQVc7QUN1R25COztBRGpXRzs7RUFpUUUsYUFBYTtFQUNiLGFBQWE7RUFDYixtQkFBbUI7RUFDbkIsa0JBQWtCO0VBQ2xCLDRCQUE0QjtBQ3FHakM7O0FEMVdHOztFQXdRRyxlQUFlO0VBQ2YsaUJBQWlCO0VBQ2pCLGNBQWM7RUFDZCxrQkFBa0I7QUN1R3hCOztBRGxYRzs7RUE4UUksZ0JBQWdCO0FDeUd2Qjs7QUR2WEc7O0VBc1JDLGFBQWE7RUFDYixtQkFBbUI7RUFDbkIsNkJBQTZCO0VBQzdCLG9CQUFhO0VBQWIsb0JBQWE7RUFBYixhQUFhO0VBQ2IseUJBQThCO01BQTlCLHNCQUE4QjtVQUE5Qiw4QkFBOEI7RUFDOUIseUJBQW1CO01BQW5CLHNCQUFtQjtVQUFuQixtQkFBbUI7QUNzR3ZCOztBRGpZRzs7RUE4UkUsZUFBZTtFQUNmLGlCQUFpQjtFQUNqQixrQkFBa0I7RUFDbEIsb0JBQWE7RUFBYixvQkFBYTtFQUFiLGFBQWE7RUFDYix5QkFBbUI7TUFBbkIsc0JBQW1CO1VBQW5CLG1CQUFtQjtBQ3dHeEI7O0FEMVlHOztFQXFTRyxXQUFXO0VBQ1gsWUFBWTtFQUNaLGlCQUFpQjtBQzBHdkI7O0FEbkdFO0VBRUMsZUFBZTtFQUNmLGlCQUFpQjtFQUNqQixnQkFBZ0I7RUFDaEIsY0FBYztFQUNkLGdCQUFnQjtBQ3FHbkI7O0FEM0dFO0VBVUMsYUFBYTtFQUNiLHVCQUF1QjtBQ3FHMUI7O0FEakdDO0VBQ0MsbUJBQW1CO0VBQ25CLG9CQUFhO0VBQWIsb0JBQWE7RUFBYixhQUFhO0VBQ2IseUJBQThCO01BQTlCLHNCQUE4QjtVQUE5Qiw4QkFBOEI7QUNvR2hDOztBRGxHRTtFQUNDLG9CQUFRO01BQVIsWUFBUTtVQUFSLFFBQVE7RUFDUixrQkFBa0I7QUNxR3JCOztBRHZHRztFQUtDLDhCQUFzQjtVQUF0QixzQkFBc0I7QUNzRzFCOztBRDNHRztFQVFFLHlCQUF5QjtFQUN6Qiw0REFBb0Q7VUFBcEQsb0RBQW9EO0FDdUd6RDs7QURoSEc7RUFhRSx5QkFBeUI7RUFDekIsNERBQW9EO1VBQXBELG9EQUFvRDtFQUNwRCxpQkFBaUI7RUFDakIscUxBQXFMO0FDdUcxTDs7QUR2SEc7RUFxQkMsV0FBVztBQ3NHZjs7QURsR0U7RUFDQyxvQkFBUTtNQUFSLFlBQVE7VUFBUixRQUFRO0VBQ1Isb0JBQWE7RUFBYixvQkFBYTtFQUFiLGFBQWE7RUFDYiw0QkFBc0I7RUFBdEIsNkJBQXNCO01BQXRCLDBCQUFzQjtVQUF0QixzQkFBc0I7RUFDdEIseUJBQThCO01BQTlCLHNCQUE4QjtVQUE5Qiw4QkFBOEI7QUNxR2pDOztBRHpHRztFQU9DLG9CQUFhO0VBQWIsb0JBQWE7RUFBYixhQUFhO0VBQ2IsMkJBQXFCO01BQXJCLHdCQUFxQjtVQUFyQixxQkFBcUI7QUNzR3pCOztBRDlHRztFQVdFLG1CQUFtQjtBQ3VHeEI7O0FEbEhHO0VBZUUsaUJBQWlCO0VBQ2pCLGNBQWM7RUFDZCxlQUFlO0VBQ2YsaUJBQWlCO0FDdUd0Qjs7QUR6SEc7RUF1QkMsZUFBZTtFQUNmLGlCQUFpQjtFQUNqQixjQUFjO0VBQ2QsZ0JBQWdCO0FDc0dwQjs7QURoSUc7RUE4QkMsZUFBZTtFQUNmLGlCQUFpQjtFQUNqQixjQUFjO0VBQ2QsZ0JBQWdCO0FDc0dwQjs7QUR2SUc7RUFxQ0MsZUFBZTtFQUNmLGlCQUFpQjtFQUNqQixjQUFjO0VBQ2QsZUFBZTtBQ3NHbkI7O0FEOUlHO0VBMkNFLGdCQUFnQjtBQ3VHckI7O0FEbEpHO0VBZ0RDLFlBQVk7RUFDWixlQUFlO0VBQ2YsaUJBQWlCO0FDc0dyQjs7QURsR0U7RUFwRkE7SUFzRkUsNEJBQXNCO0lBQXRCLDZCQUFzQjtRQUF0QiwwQkFBc0I7WUFBdEIsc0JBQXNCO0VDcUd4QjtFRG5HRTtJQUNDLGtCQUFrQjtFQ3FHckI7QUFDRjs7QUQvRkM7RUFDQyxXQUFXO0FDa0diOztBRC9GQztFQUNDLGtCQUFrQjtBQ2tHcEI7O0FEOUZDO0VBQ0MsV0FBVztFQUNYLFlBQVk7RUFDWixrQkFBa0I7QUNpR3BCOztBRDdGQztFQUVDLGFBQWE7RUFDYixjQUFjO0VBQ2QsZUFBZTtFQUNmLGlCQUFpQjtFQUNqQix5QkFBeUI7RUFDekIseUJBQXlCO0FDK0YzQjs7QUQ1RkM7RUFDQyx5QkFBeUI7RUFDekIsaURBQXlDO1VBQXpDLHlDQUF5QztBQytGM0M7O0FEN0ZFO0VBQ0MsYUFBYTtFQUNiLGdDQUFnQztFQUNoQyx5QkFBeUI7QUNnRzVCOztBRG5HRztFQU1DLGVBQWU7RUFDZixpQkFBaUI7RUFDakIsU0FBUztBQ2lHYjs7QUQ3RkU7RUFDQyx5QkFBeUI7RUFDekIseUJBQXlCO0VBRXpCLG9CQUFhO0VBQWIsb0JBQWE7RUFBYixhQUFhO0VBQ2IsbUJBQWU7TUFBZixlQUFlO0FDK0ZsQjs7QUQ3Rkc7RUFDQyxjQUFjO0FDZ0dsQjs7QUR4R0c7RUFZQyx3QkFBZ0I7VUFBaEIsZ0JBQWdCO0FDZ0dwQjs7QUQ1R0c7RUFlRSxrQkFBa0I7QUNpR3ZCOztBRGhIRztFQWtCRyxrQkFBa0I7RUFDbEIsV0FBVztFQUNYLFNBQVM7QUNrR2Y7O0FEdEhHO0VBdUJJLFdBQVc7RUFDWCxZQUFZO0FDbUduQjs7QUQ1RkU7RUFDQyxhQUFhO0VBQ2IseUJBQXlCO0VBQ3pCLDZCQUE2QjtFQUM3QixvQkFBYTtFQUFiLG9CQUFhO0VBQWIsYUFBYTtFQUNiLHlCQUE4QjtNQUE5QixzQkFBOEI7VUFBOUIsOEJBQThCO0VBQzlCLHlCQUFtQjtNQUFuQixzQkFBbUI7VUFBbkIsbUJBQW1CO0FDK0Z0Qjs7QUQzRkM7RUFDQyxTQUFTO0VBQ1QsOEJBQThCO0VBQzlCLGtEQUFzQztVQUF0QywwQ0FBc0M7QUM4RnhDOztBQUVBO0VENUZFLFNBQVM7RUFDVCwrQkFBK0I7QUM4RmpDOztBRDFGQztFQUNDLGdCQUFnQjtBQzZGbEI7O0FEekZDO0VBQ0MsZ0JBQWdCO0FDNEZsQjs7QUQ3RkU7RUFJQyxxQkFBcUI7RUFDckIsV0FBVztFQUNYLG1CQUFtQjtFQUNuQixrQkFBa0I7QUM2RnJCOztBRHZGRTtFQUNDLHdCQUFnQjtVQUFoQixnQkFBZ0I7QUMwRm5COztBRHZGRTtFQUNDLG9CQUFhO0VBQWIsb0JBQWE7RUFBYixhQUFhO0VBQ2IsbUJBQWU7TUFBZixlQUFlO0FDMEZsQjs7QUR2RkU7RUFDQyxtQkFBYztNQUFkLGtCQUFjO1VBQWQsY0FBYztFQUNkLG1CQUFtQjtFQUNuQixzQkFBc0I7RUFDdEIsaURBQXNDO1VBQXRDLHlDQUFzQztFQUN0Qyw4QkFBc0I7VUFBdEIsc0JBQXNCO0VBQ3RCLHlCQUF5QjtBQzBGNUI7O0FEeEZHO0VBQ0MsY0FBYztFQUNkLGdCQUFnQjtFQUNoQixrQkFBa0I7RUFDbEIsbUNBQW1DO0VBQ25DLDRDQUFvQztFQUFwQyxvQ0FBb0M7QUMyRnhDOztBRGhHSTtFQVFDLFdBQVc7RUFDWCxjQUFjO0VBQ2Qsc0JBQXNCO0FDNEYzQjs7QUR4Rkc7RUFDQyxZQUFZO0VBQ1osa0JBQWtCO0VBQ2xCLE9BQU87RUFDUCxNQUFNO0VBQ04sV0FBVztFQUNYLDRDQUFvQztFQUFwQyxvQ0FBb0M7QUMyRnhDOztBRHpGSTtFQUNDLHFCQUFxQjtFQUNyQixVQUFVO0VBQ1Ysa0JBQWtCO0VBQ2xCLGtCQUFrQjtFQUNsQixRQUFRO0VBQ1IsVUFBVTtFQUNWLFNBQVM7QUM0RmQ7O0FEeEZHO0VBQ0MsU0FBUztFQUNULGlCQUFpQjtFQUNqQiw2QkFBNkI7RUFDN0IsbUJBQW1CO0VBQ25CLHFDQUFrQztBQzJGdEM7O0FEeEZHO0VBQ0MsbUJBQW1CO0VBQ25CLHVCQUF1QjtFQUN2QixjQUFjO0VBQ2QsU0FBUztFQUNULGVBQWU7RUFDZixpQkFBaUI7RUFDakIsa0JBQWtCO0VBQ2xCLGdCQUFnQjtFQUNoQixjQUFjO0VBQ2Qsa0JBQWtCO0FDMkZ0Qjs7QUR6Rkk7RUFaQTtJQWNFLG9CQUFvQjtFQzRGeEI7QUFDRjs7QUR4Rkc7RUFDQyxhQUFhO0VBQ2Isa0JBQWtCO0FDMkZ0Qjs7QUR4Rkk7RUFHQyxpQkFBaUI7QUN5RnRCOztBRHJGRztFQUNDO0lBQ0MsdUJBQXVCO0lBQ3ZCLG1CQUFtQjtFQ3dGdEI7RUQxRkc7SUFLQyxXQUFXO0VDd0ZmO0FBQ0Y7O0FEL0tHO0VBNkZFLGNBQWM7QUNzRm5COztBRG5MRztFQWlHRSxhQUFhO0FDc0ZsQjs7QUR2TEc7RUFxR0UsbUJBQW1CO0FDc0Z4Qjs7QURqRkU7RUFDQyxxQkFBcUI7RUFDckIsd0JBQXdCO0VBQ3hCLHlCQUF5QjtFQUN6Qix5QkFBeUI7RUFDekIsbURBQTJDO1VBQTNDLDJDQUEyQztFQUMzQyxtQkFBbUI7RUFDbkIsZUFBZTtBQ29GbEI7O0FEakZFO0VBQ0MsZUFBZTtFQUNmLGlCQUFpQjtFQUNqQixXQUFXO0VBQ1gsV0FBVztBQ29GZDs7QUR4Rkc7RUFPQyxxQkFBcUI7RUFDckIsU0FBUztFQUNULFVBQVU7RUFDVixnQkFBZ0I7QUNxRnBCOztBRC9GRztFQWNDLFNBQVM7QUNxRmI7O0FEbkdHOztFQW9CRyxvQkFBb0I7RUFDcEIsZ0NBQWdDO0FDb0Z0Qzs7QUR6R0c7RUEwQkUsY0FBYztFQUNkLGtCQUFrQjtFQUNsQixxQkFBcUI7RUFDckIsY0FBYztFQUNkLGtCQUFrQjtBQ21GdkI7O0FEakhHO0VBaUNHLG9CQUFvQjtFQUNwQixnQ0FBZ0M7QUNvRnRDOztBRHRIRztFQXNDRyxjQUFjO0VBQ2QsZUFBYztBQ29GcEI7O0FEM0hHO0VBMENJLGdDQUFnQztBQ3FGdkM7O0FEOUVFO0VBQ0MsV0FBVztFQUNYLGNBQWM7RUFDZCxlQUFlO0VBQ2YsaUJBQWlCO0VBQ2pCLHlCQUF5QjtBQ2lGNUI7O0FEOUVFO0VBQ0M7SUFDQyx5QkFBeUI7RUNpRjNCO0VEbEZFO0lBSUMsY0FBYztJQUNkLFdBQVc7RUNpRmQ7RUR0RkU7SUFRRSxrQkFBa0I7RUNpRnRCO0VENUVDO0lBQ0MscUJBQXFCO0lBQ3JCLFlBQVk7SUFDWixZQUFZO0lBQ1osU0FBUztJQUNULGdCQUFnQjtFQzhFbEI7RUQzRUM7SUFDQyxtQkFBbUI7RUM2RXJCO0VEMUVDO0lBQ0MsbUJBQTBCO1FBQTFCLDhCQUEwQjtZQUExQiwwQkFBMEI7SUFDMUIsa0JBQWtCO0VDNEVwQjtBQUNGOztBRHpFRTtFQUNDO0lBQ0MsbUJBQW1CO0VDNEVyQjtFRHpFQztJQUNDLG1CQUE2QjtRQUE3QixpQ0FBNkI7WUFBN0IsNkJBQTZCO0lBQzdCLG1CQUFtQjtJQUNuQixrQkFBa0I7RUMyRXBCO0FBQ0Y7O0FEdkVDO0VBQ0MsbUJBQW1CO0VBQ25CLGtCQUFrQjtFQUNsQiw4QkFBc0I7VUFBdEIsc0JBQXNCO0VBQ3RCLHlCQUF5QjtFQUN6QixtREFBMkM7VUFBM0MsMkNBQTJDO0VBQzNDLG9CQUFhO0VBQWIsb0JBQWE7RUFBYixhQUFhO0VBQ2IsNEJBQXNCO0VBQXRCLDZCQUFzQjtNQUF0QiwwQkFBc0I7VUFBdEIsc0JBQXNCO0VBQ3RCLHlCQUE4QjtNQUE5QixzQkFBOEI7VUFBOUIsOEJBQThCO0FDMEVoQzs7QUR4RUU7RUFDQyxhQUFhO0FDMkVoQjs7QUQ1RUc7RUFNRSxXQUFXO0VBQ1gsWUFBWTtBQzBFakI7O0FEakZHO0VBV0UsV0FBVztFQUNYLFlBQVk7QUMwRWpCOztBRHRGRztFQWdCRSxXQUFXO0VBQ1gsWUFBWTtBQzBFakI7O0FEM0ZHO0VBcUJFLFdBQVc7RUFDWCxZQUFZO0FDMEVqQjs7QURoR0c7RUEwQkUsV0FBVztFQUNYLFlBQVk7QUMwRWpCOztBRHJHRztFQStCRSxXQUFXO0VBQ1gsWUFBWTtBQzBFakI7O0FEMUdHO0VBb0NFLFdBQVc7RUFDWCxZQUFZO0FDMEVqQjs7QUQvR0c7RUF5Q0UsWUFBWTtFQUNaLG9CQUFhO0VBQWIsb0JBQWE7RUFBYixhQUFhO0VBQ2IseUJBQW1CO01BQW5CLHNCQUFtQjtVQUFuQixtQkFBbUI7RUFDbkIsd0JBQXVCO01BQXZCLHFCQUF1QjtVQUF2Qix1QkFBdUI7QUMwRTVCOztBRHRIRztFQWlEQyxhQUFhO0VBQ2IsZUFBZTtFQUNmLGlCQUFpQjtFQUNqQixnQkFBZ0I7QUN5RXBCOztBRDdIRztFQXdEQyxTQUFTO0VBQ1QsZUFBZTtFQUNmLGlCQUFpQjtFQUNqQixjQUFjO0FDeUVsQjs7QURyRUU7RUFDQyxtQkFBbUI7RUFDbkIsd0NBQWdDO1VBQWhDLGdDQUFnQztFQUNoQyxhQUFhO0VBQ2Isb0JBQWE7RUFBYixvQkFBYTtFQUFiLGFBQWE7RUFDYix3QkFBdUI7TUFBdkIscUJBQXVCO1VBQXZCLHVCQUF1QjtFQUN2Qix5QkFBbUI7TUFBbkIsc0JBQW1CO1VBQW5CLG1CQUFtQjtBQ3dFdEI7O0FEOUVHO0VBU0MsbUJBQW1CO0FDeUV2Qjs7QURsRkc7RUFhQyxZQUFZO0VBQ1osY0FBYztBQ3lFbEI7O0FEdkZHO0VBa0JDLG1CQUFtQjtBQ3lFdkI7O0FEckVFO0VBQ0MsbUJBQWM7TUFBZCxrQkFBYztVQUFkLGNBQWM7RUFDZCxtQkFBbUI7QUN3RXRCOztBRHRFRztFQUpEO0lBS0UsbUJBQTBCO1FBQTFCLDhCQUEwQjtZQUExQiwwQkFBMEI7SUFDMUIsa0JBQWtCO0VDMEVwQjtFRGhGQztJQVNFLGVBQWU7RUMwRWxCO0FBQ0Y7O0FEdkVHO0VBYkQ7SUFjRSxtQkFBNkI7UUFBN0IsaUNBQTZCO1lBQTdCLDZCQUE2QjtJQUM3QixtQkFBbUI7SUFDbkIsa0JBQWtCO0VDMkVwQjtFRDNGQztJQW1CRSxrQkFBa0I7RUMyRXJCO0VEOUZDO0lBdUJFLGVBQWU7RUMwRWxCO0FBQ0Y7O0FEdEVFO0VBQ0MsbUJBQWM7TUFBZCxrQkFBYztVQUFkLGNBQWM7RUFDZCxtQkFBbUI7QUN5RXRCOztBRHZFRztFQUpEO0lBS0UsbUJBQTBCO1FBQTFCLDhCQUEwQjtZQUExQiwwQkFBMEI7SUFDMUIsa0JBQWtCO0VDMkVwQjtFRGpGQztJQVNFLGVBQWU7RUMyRWxCO0FBQ0Y7O0FEeEVHO0VBYkQ7SUFjRSxtQkFBMEI7UUFBMUIsOEJBQTBCO1lBQTFCLDBCQUEwQjtJQUMxQixtQkFBbUI7SUFDbkIsa0JBQWtCO0VDNEVwQjtBQUNGOztBRHRFQTtFQUNDO0lBQ0MsVUFBVTtFQ3lFVjtFRHRFRDtJQUNDLFVBQVU7RUN3RVY7QUFDRjs7QUQvRUE7RUFDQztJQUNDLFVBQVU7RUN5RVY7RUR0RUQ7SUFDQyxVQUFVO0VDd0VWO0FBQ0Y7O0FEckVBO0VBQ0Msb0RBQTRDO1VBQTVDLDRDQUE0QztBQ3dFN0M7O0FEckVBO0VBQ0Msb0RBQW9EO0FDd0VyRDs7QURuRUM7RUFDQyxXQUFXO0VBQ1gsYUFBYTtFQUNiLFNBQVM7RUFDVCxnQkFBZ0I7QUNzRWxCOztBRDFFRTtFQU9DLFdBQVc7QUN1RWQ7O0FEbkVDO0VBQ0MsaUJBQWlCO0VBQ2pCLGlCQUFpQjtBQ3NFbkI7O0FEbkVDO0VBQ0MseUJBQXlCO0VBQ3pCLDhCQUE4QjtFQUM5QixnQkFBZ0I7QUNzRWxCOztBRGpFQTtFQUNDLDBEQUFrRDtVQUFsRCxrREFBa0Q7QUNvRW5EOztBRGpFQTtFQUNDLFdBQVc7RUFDWCxZQUFZO0FDb0ViOztBRGpFQTtFQUNDLFdBQVc7RUFDWCxZQUFZO0FDb0ViOztBRGpFQTtFQUNDO0lBQ0Msa0NBQTBCO1lBQTFCLDBCQUEwQjtFQ29FMUI7RURsRUQ7SUFDQyxrQ0FBMEI7WUFBMUIsMEJBQTBCO0VDb0UxQjtBQUNGOztBRDFFQTtFQUNDO0lBQ0Msa0NBQTBCO1lBQTFCLDBCQUEwQjtFQ29FMUI7RURsRUQ7SUFDQyxrQ0FBMEI7WUFBMUIsMEJBQTBCO0VDb0UxQjtBQUNGIiwiZmlsZSI6ImFzc2V0cy9jc3MvbWFpbi5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBPdmVycmlkaW5nIFdvcmRQcmVzcyBuYXRpdmUgc3R5bGVzLlxuI3dwY29udGVudCB7XG5cdHBhZGRpbmctbGVmdDogMDtcbn1cblxuLm9jZGkge1xuXHRtYXgtd2lkdGg6IG5vbmU7XG5cblx0aDIge1xuXHRcdHRleHQtYWxpZ246IGluaGVyaXQ7XG5cdFx0Zm9udC1zaXplOiAzMnB4O1xuXHRcdGxpbmUtaGVpZ2h0OiAzOXB4O1xuXHRcdGZvbnQtd2VpZ2h0OiA1MDA7XG5cdFx0bWFyZ2luLWJvdHRvbTogMjBweDtcblx0fVxuXG5cdGgyOmZpcnN0LWNoaWxkLFxuXHRoMzpmaXJzdC1jaGlsZCB7XG5cdFx0bWFyZ2luLXRvcDogMDtcblx0fVxuXG5cdGhyIHtcblx0XHRtYXJnaW46IDMwcHggMDtcblx0fVxuXG5cdC5ub3RpY2UsXG5cdC51cGRhdGUtbmFnLFxuXHQjdXBkYXRlLW5hZyB7XG5cdFx0ZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcblx0XHRtYXJnaW46IDAgMCAzMHB4IDA7XG5cdH1cblxuXHQmLW5vdGljZXMtd3JhcHBlciB7XG5cdFx0ZGlzcGxheTogbm9uZTtcblxuXHRcdC5ub3RpY2UsXG5cdFx0LnVwZGF0ZS1uYWcsXG5cdFx0I3VwZGF0ZS1uYWcge1xuXHRcdFx0bWFyZ2luOiAwIDAgMTVweCAwO1xuXG5cdFx0XHQmOmxhc3QtY2hpbGQge1xuXHRcdFx0XHRtYXJnaW4tYm90dG9tOiAzMHB4O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdCZfX2FkbWluLW5vdGljZXMge1xuXHRcdC5vY2RpLW5vdGljZXMtd3JhcHBlciB7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHR9XG5cdH1cblxuXHQmLWJ1dHRvbi1kaXNhYmxlZCB7XG5cdFx0b3BhY2l0eTogMC42ICFpbXBvcnRhbnQ7XG5cdFx0Y3Vyc29yOiBub3QtYWxsb3dlZCAhaW1wb3J0YW50O1xuXHR9XG5cblx0Ji1jb250ZW50LW5vdGljZSB7XG5cdFx0cGFkZGluZzogMjVweDtcblx0XHRiYWNrZ3JvdW5kOiAjRTVGNUZBO1xuXHRcdGJvcmRlci1yYWRpdXM6IDZweDtcblx0XHRtYXJnaW46IDMwcHg7XG5cblx0XHRwIHtcblx0XHRcdGZvbnQtc2l6ZTogMTRweDtcblx0XHRcdGxpbmUtaGVpZ2h0OiAyNHB4O1xuXHRcdFx0Y29sb3I6ICM0NDQ0NDQ7XG5cdFx0XHRtYXJnaW46IDAgMCAxMHB4IDA7XG5cblx0XHRcdCY6bGFzdC1jaGlsZCB7XG5cdFx0XHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ji1pbXBvcnRpbmcsXG5cdCYtaW1wb3J0ZWQge1xuXHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdHBhZGRpbmc6IDMwcHg7XG5cblx0XHRwIHtcblx0XHRcdGZvbnQtc2l6ZTogMTZweDtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxOXB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6IDMwMDtcblx0XHRcdGNvbG9yOiAjNDQ0NDQ0O1xuXHRcdFx0bWFyZ2luOiAwIDAgMTBweCAwO1xuXG5cdFx0XHQmOmxhc3QtY2hpbGQge1xuXHRcdFx0XHRtYXJnaW4tYm90dG9tOiAwO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCYtaGVhZGVyIHtcblx0XHRcdGgyIHtcblx0XHRcdFx0Zm9udC1zaXplOiAyNHB4O1xuXHRcdFx0XHRsaW5lLWhlaWdodDogMjlweDtcblx0XHRcdFx0bWFyZ2luLWJvdHRvbTogMTBweDtcblx0XHRcdH1cblxuXHRcdFx0cCB7XG5cdFx0XHRcdG1hcmdpbi1ib3R0b206IDVweDtcblxuXHRcdFx0XHQmOmxhc3QtY2hpbGQge1xuXHRcdFx0XHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQmLWNvbnRlbnQge1xuXHRcdFx0bWFyZ2luOiAwIDIwcHg7XG5cblx0XHRcdCYtaW1wb3J0aW5nIHtcblx0XHRcdFx0d2lkdGg6IDQxNXB4O1xuXHRcdFx0XHRoZWlnaHQ6IDIyOHB4O1xuXHRcdFx0XHRtYXJnaW46IDUwcHggMCAyMHB4IDA7XG5cdFx0XHR9XG5cblx0XHRcdCYtaW1wb3J0ZWQge1xuXHRcdFx0XHRtYXJnaW46IDgwcHggMCA1MHB4IDA7XG5cblx0XHRcdFx0Ji0tc3VjY2VzcyB7XG5cdFx0XHRcdFx0d2lkdGg6IDE1NnB4O1xuXHRcdFx0XHRcdGhlaWdodDogMTI0cHg7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQmLS1lcnJvcixcblx0XHRcdFx0Ji0td2FybmluZyB7XG5cdFx0XHRcdFx0d2lkdGg6IDEyNHB4O1xuXHRcdFx0XHRcdGhlaWdodDogMTI0cHg7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Lm5vdGljZSB7XG5cdFx0XHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cdFx0XHRcdG1hcmdpbjogMzBweCAwO1xuXG5cdFx0XHRcdHAge1xuXHRcdFx0XHRcdHBhZGRpbmc6IDE1cHggM3B4O1xuXHRcdFx0XHRcdGZvbnQtc2l6ZTogMTRweDtcblx0XHRcdFx0XHRsaW5lLWhlaWdodDogMjJweDtcblx0XHRcdFx0XHRjb2xvcjogIzc3Nzc3Nztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCYtZm9vdGVyIHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0XHRtaW4taGVpZ2h0OiAxMDBweDtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNGOEY4Rjg7XG5cdFx0XHRib3JkZXItdG9wOiAxcHggc29saWQgI2RkZGRkZDtcblx0XHRcdG1hcmdpbjogMzBweCAtMzBweCAtMzBweDtcblxuXHRcdFx0YS5idXR0b24ge1xuXHRcdFx0XHRmbGV4OiAwIDEgMjUlO1xuXHRcdFx0XHRtYXJnaW4tcmlnaHQ6IDMwcHg7XG5cblx0XHRcdFx0JjpsYXN0LWNoaWxkIHtcblx0XHRcdFx0XHRtYXJnaW4tcmlnaHQ6IDA7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQuYnV0dG9uLmJ1dHRvbi1oZXJvIHtcblx0XHRmb250LXNpemU6IDE2cHg7XG5cdFx0bGluZS1oZWlnaHQ6IDIwcHg7XG5cdFx0Zm9udC13ZWlnaHQ6IDUwMDtcblx0XHRtaW4taGVpZ2h0OiA0MHB4O1xuXHRcdHBhZGRpbmc6IDlweCAxOHB4O1xuXG5cdFx0Ji5vY2RpX19idXR0b24uYnV0dG9uLXByaW1hcnk6ZGlzYWJsZWQsXG5cdFx0Ji5vY2RpX19idXR0b24uYnV0dG9uLXByaW1hcnlbZGlzYWJsZWRdIHtcblx0XHRcdGNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnQ7XG5cdFx0XHRiYWNrZ3JvdW5kOiAjOTk5OTk5ICFpbXBvcnRhbnQ7XG5cdFx0XHRib3JkZXItY29sb3I6ICM5OTk5OTkgIWltcG9ydGFudDtcblx0XHRcdG9wYWNpdHk6IDAuNTtcblx0XHR9XG5cdH1cblxuXHQvLyBSZWR1eC5cblx0Jl9fcmVkdXgtb3B0aW9uLW5hbWUge1xuXHRcdCYtaW5wdXQge1xuXHRcdFx0bWFyZ2luLWxlZnQ6IDEwcHg7XG5cdFx0XHR3aWR0aDogMTM3cHg7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAzcHggIWltcG9ydGFudDtcblx0XHRcdHBhZGRpbmc6IDAgMTBweCAhaW1wb3J0YW50O1xuXHRcdFx0Zm9udC1zaXplOiAxM3B4ICFpbXBvcnRhbnQ7XG5cdFx0XHRsaW5lLWhlaWdodDogMTZweCAhaW1wb3J0YW50O1xuXHRcdH1cblx0fVxuXG5cdCYtaGlkZS1pbnB1dCB7XG5cdFx0d2lkdGg6IDAuMXB4ICFpbXBvcnRhbnQ7XG5cdFx0aGVpZ2h0OiAwLjFweCAhaW1wb3J0YW50O1xuXHRcdG9wYWNpdHk6IDAgIWltcG9ydGFudDtcblx0XHRvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7XG5cdFx0cG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XG5cdFx0ei1pbmRleDogLTEgIWltcG9ydGFudDtcblx0fVxufVxuXG4uZmVhdHVyZS1zZWN0aW9uICsgaHIge1xuXHRtYXJnaW4tdG9wOiAwO1xufVxuXG4jd3Bib2R5IHNlbGVjdCB7XG5cdGhlaWdodDogYXV0bztcblx0cGFkZGluZzogLjYyZW07XG5cdGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xufVxuXG4ub2NkaSB7XG5cblx0Jl9fdGl0bGUtY29udGFpbmVyIHtcblx0XHRoZWlnaHQ6IDMwcHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcblx0XHRwYWRkaW5nOiAyMHB4IDMwcHg7XG5cdFx0Ym94LXNoYWRvdzogMHB4IDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjA3KTtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXG5cdFx0Ji10aXRsZSB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRmb250LXNpemU6IDI0cHg7XG5cdFx0XHRsaW5lLWhlaWdodDogMjlweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiA3MDA7XG5cdFx0fVxuXG5cdFx0Ji1pY29uIHtcblx0XHRcdHdpZHRoOiAxOXB4O1xuXHRcdFx0aGVpZ2h0OiAxOXB4O1xuXHRcdH1cblx0fVxuXG5cdCZfX2NvbnRlbnQtY29udGFpbmVyIHtcblx0XHRwYWRkaW5nOiAzMHB4O1xuXG5cdFx0Ji1jb250ZW50IHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cblx0XHRcdCYtLW1haW4ge1xuXHRcdFx0XHRmbGV4OiAxO1xuXHRcdFx0XHRtYXJnaW4tcmlnaHQ6IDMwcHg7XG5cdFx0XHRcdGJhY2tncm91bmQ6ICNmZmZmZmY7XG5cdFx0XHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdFx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICNkZGRkZGQ7XG5cdFx0XHRcdGJveC1zaGFkb3c6IDBweCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNyk7XG5cdFx0XHR9XG5cblx0XHRcdCYtLXNpZGUge1xuXHRcdFx0XHR3aWR0aDogMzczcHg7XG5cblx0XHRcdFx0Lm9jZGlfX2NhcmQtY29udGVudCB7XG5cdFx0XHRcdFx0cGFkZGluZzogMDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC5zY3JlZW5zaG90IHtcblx0XHRcdFx0XHRoZWlnaHQ6IDI3OHB4O1xuXG5cdFx0XHRcdFx0Ji5ibGFuayB7XG5cdFx0XHRcdFx0XHRib3JkZXI6IDFweCBzb2xpZCAjQ0NEMEQ0O1xuXHRcdFx0XHRcdFx0ZmlsdGVyOiBkcm9wLXNoYWRvdygwcHggMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMDcpKTtcblx0XHRcdFx0XHRcdGJhY2tncm91bmQtaW1hZ2U6IHVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUFnQUFBQUlDQVlBQUFERUQ3NkxBQUFBTEVsRVFWUVlHV084ZCsvZWZ3WWtvS2lvaU1SallHQkM0V0hoVUs2QThUOFFJSnQ4Ly81OVpDNDkzQUFBUXNzS3BCSzRGNUFBQUFBQVNVVk9SSzVDWUlJPSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Lm9jZGlfX2NhcmQtZm9vdGVyIHtcblx0XHRcdFx0XHRwYWRkaW5nOiAxNXB4O1xuXG5cdFx0XHRcdFx0aDMge1xuXHRcdFx0XHRcdFx0Zm9udC1zaXplOiAxNnB4O1xuXHRcdFx0XHRcdFx0bGluZS1oZWlnaHQ6IDE5cHg7XG5cdFx0XHRcdFx0XHRmb250LXdlaWdodDogNTAwO1xuXHRcdFx0XHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGltZyB7XG5cdFx0XHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Lm9jZGktaW5zdGFsbC1wbHVnaW5zLWNvbnRlbnQtaGVhZGVyLFxuXHRcdFx0Lm9jZGktY3JlYXRlLWNvbnRlbnQtaGVhZGVyIHtcblx0XHRcdFx0cGFkZGluZzogMzBweDtcblx0XHRcdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZGRkZGQ7XG5cblx0XHRcdFx0aDIge1xuXHRcdFx0XHRcdGZvbnQtc2l6ZTogMjJweDtcblx0XHRcdFx0XHRsaW5lLWhlaWdodDogMjZweDtcblx0XHRcdFx0XHRmb250LXdlaWdodDogbm9ybWFsO1xuXHRcdFx0XHRcdG1hcmdpbjogMCAwIDZweCAwO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cCB7XG5cdFx0XHRcdFx0Zm9udC1zaXplOiAxNnB4O1xuXHRcdFx0XHRcdGxpbmUtaGVpZ2h0OiAyMnB4O1xuXHRcdFx0XHRcdGZvbnQtd2VpZ2h0OiAzMDA7XG5cdFx0XHRcdFx0Y29sb3I6ICM0NDQ0NDQ7XG5cdFx0XHRcdFx0bWFyZ2luOiAwIDAgMTBweCAwO1xuXG5cdFx0XHRcdFx0JjpsYXN0LWNoaWxkIHtcblx0XHRcdFx0XHRcdG1hcmdpbjogMDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQubm90aWNlIHtcblx0XHRcdFx0XHRtYXJnaW46IDMwcHggMCAwO1xuXG5cdFx0XHRcdFx0cCB7XG5cdFx0XHRcdFx0XHRtYXJnaW46IC41ZW0gMDtcblx0XHRcdFx0XHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRcdFx0XHRcdGxpbmUtaGVpZ2h0OiAxLjU7XG5cdFx0XHRcdFx0XHRjb2xvcjogIzNjNDM0YTtcblx0XHRcdFx0XHRcdGZvbnQtd2VpZ2h0OiBub3JtYWw7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC5vY2RpLWluc3RhbGwtcGx1Z2lucy1jb250ZW50LWNvbnRlbnQsXG5cdFx0XHQub2NkaS1jcmVhdGUtY29udGVudC1jb250ZW50IHtcblx0XHRcdFx0LnBsdWdpbi1pdGVtLFxuXHRcdFx0XHQuY29udGVudC1pdGVtIHtcblx0XHRcdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0XHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0XHRcdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0XHRcdG1hcmdpbjogMCAzMHB4O1xuXHRcdFx0XHRcdHBhZGRpbmc6IDI1cHggMDtcblx0XHRcdFx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgI2VlZWVlZTtcblxuXHRcdFx0XHRcdC5vY2RpLWxvYWRpbmcge1xuXHRcdFx0XHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQmLS1hY3RpdmUge1xuXHRcdFx0XHRcdFx0Y3Vyc29yOiBkZWZhdWx0O1xuXG5cdFx0XHRcdFx0XHQucGx1Z2luLWl0ZW0tY2hlY2tib3gsXG5cdFx0XHRcdFx0XHQuY29udGVudC1pdGVtLWNoZWNrYm94IHtcblxuXHRcdFx0XHRcdFx0XHRpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkICsgLmNoZWNrYm94IHtcblx0XHRcdFx0XHRcdFx0XHRib3JkZXI6IG5vbmU7XG5cdFx0XHRcdFx0XHRcdFx0YmFja2dyb3VuZDogIzY0QjQ1MDtcblxuXHRcdFx0XHRcdFx0XHRcdC5vY2RpLWNoZWNrLWljb24ge1xuXHRcdFx0XHRcdFx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdCY6OmFmdGVyIHtcblx0XHRcdFx0XHRcdFx0XHRcdGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQmLS1yZXF1aXJlZCB7XG5cdFx0XHRcdFx0XHRjdXJzb3I6IGRlZmF1bHQ7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ji0tbG9hZGluZyB7XG5cdFx0XHRcdFx0XHQub2NkaS1sb2FkaW5nIHtcblx0XHRcdFx0XHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdC5wbHVnaW4taXRlbS1jaGVja2JveCxcblx0XHRcdFx0XHRcdC5jb250ZW50LWl0ZW0tY2hlY2tib3gge1xuXG5cdFx0XHRcdFx0XHRcdGlucHV0W3R5cGU9Y2hlY2tib3hdICsgLmNoZWNrYm94IHtcblx0XHRcdFx0XHRcdFx0XHRib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcblxuXHRcdFx0XHRcdFx0XHRcdC5vY2RpLWxvY2staWNvbiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0Jjo6YWZ0ZXIge1xuXHRcdFx0XHRcdFx0XHRcdFx0ZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdCYtY29udGVudCB7XG5cdFx0XHRcdFx0XHRtYXJnaW4tcmlnaHQ6IDE1cHg7XG5cblx0XHRcdFx0XHRcdCYtdGl0bGUge1xuXHRcdFx0XHRcdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0XHRcdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0XHRcdFx0XHRtYXJnaW46IDAgMCA0cHggMDtcblxuXHRcdFx0XHRcdFx0XHRzcGFuIHtcblx0XHRcdFx0XHRcdFx0XHRtYXJnaW4tbGVmdDogNXB4O1xuXHRcdFx0XHRcdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNGRkI5MDA7XG5cdFx0XHRcdFx0XHRcdFx0d2lkdGg6IDE2cHg7XG5cdFx0XHRcdFx0XHRcdFx0aGVpZ2h0OiAxNnB4O1xuXHRcdFx0XHRcdFx0XHRcdGJvcmRlci1yYWRpdXM6IDhweDtcblx0XHRcdFx0XHRcdFx0XHRtYXJnaW4tdG9wOiAtMXB4O1xuXG5cdFx0XHRcdFx0XHRcdFx0aW1nIHtcblx0XHRcdFx0XHRcdFx0XHRcdHdpZHRoOiAxMHB4O1xuXHRcdFx0XHRcdFx0XHRcdFx0aGVpZ2h0OiAxMHB4O1xuXHRcdFx0XHRcdFx0XHRcdFx0bWFyZ2luOiAzcHg7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ji1pbmZvIHtcblx0XHRcdFx0XHRcdHAge1xuXHRcdFx0XHRcdFx0XHRjb2xvcjogIzAwYTMyYSAhaW1wb3J0YW50O1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdCYtZXJyb3Ige1xuXHRcdFx0XHRcdFx0cCB7XG5cdFx0XHRcdFx0XHRcdGNvbG9yOiAjZDYzNjM4ICFpbXBvcnRhbnQ7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0JjpsYXN0LWNoaWxkIHtcblx0XHRcdFx0XHRcdHBhZGRpbmctYm90dG9tOiAzMHB4O1xuXHRcdFx0XHRcdFx0Ym9yZGVyLWJvdHRvbTogbm9uZTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRsYWJlbCB7XG5cdFx0XHRcdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRoMyB7XG5cdFx0XHRcdFx0XHRmb250LXNpemU6IDE4cHg7XG5cdFx0XHRcdFx0XHRsaW5lLWhlaWdodDogMjJweDtcblx0XHRcdFx0XHRcdGNvbG9yOiAjNDQ0NDQ0O1xuXHRcdFx0XHRcdFx0Zm9udC13ZWlnaHQ6IDUwMDtcblx0XHRcdFx0XHRcdG1hcmdpbjogMDtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRwIHtcblx0XHRcdFx0XHRcdGZvbnQtc2l6ZTogMTRweDtcblx0XHRcdFx0XHRcdGxpbmUtaGVpZ2h0OiAxN3B4O1xuXHRcdFx0XHRcdFx0Y29sb3I6ICM3Nzc3Nzc7XG5cdFx0XHRcdFx0XHRtYXJnaW46IDAgMCA2cHggMDtcblxuXHRcdFx0XHRcdFx0JjpsYXN0LWNoaWxkIHtcblx0XHRcdFx0XHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC5wbHVnaW4taXRlbS1jaGVja2JveCxcblx0XHRcdFx0XHQuY29udGVudC1pdGVtLWNoZWNrYm94IHtcblx0XHRcdFx0XHRcdC5jaGVja2JveCB7XG5cdFx0XHRcdFx0XHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdFx0XHRcdFx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRcdFx0XHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRcdFx0XHRcdGJhY2tncm91bmQ6ICNmMWYxZjE7XG5cdFx0XHRcdFx0XHRcdHdpZHRoOiAzMnB4O1xuXHRcdFx0XHRcdFx0XHRoZWlnaHQ6IDMycHg7XG5cdFx0XHRcdFx0XHRcdGJvcmRlci1yYWRpdXM6IDE2cHg7XG5cdFx0XHRcdFx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICNkZGRkZGQ7XG5cblx0XHRcdFx0XHRcdFx0Lm9jZGktY2hlY2staWNvbiB7XG5cdFx0XHRcdFx0XHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHRcdFx0XHRcdFx0XHR3aWR0aDogMjBweDtcblx0XHRcdFx0XHRcdFx0XHRoZWlnaHQ6IDIwcHg7XG5cdFx0XHRcdFx0XHRcdFx0bWFyZ2luOiA2cHg7XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHQub2NkaS1sb2NrLWljb24ge1xuXHRcdFx0XHRcdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdFx0XHRcdFx0XHR3aWR0aDogMTRweDtcblx0XHRcdFx0XHRcdFx0XHRoZWlnaHQ6IDE3cHg7XG5cdFx0XHRcdFx0XHRcdFx0Ym90dG9tOiAtNXB4O1xuXHRcdFx0XHRcdFx0XHRcdHJpZ2h0OiAtMnB4O1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdGlucHV0W3R5cGU9Y2hlY2tib3hdIHtcblx0XHRcdFx0XHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0aW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCArIC5jaGVja2JveCB7XG5cdFx0XHRcdFx0XHRcdCY6OmFmdGVyIHtcblx0XHRcdFx0XHRcdFx0XHRjb250ZW50OiAnJztcblx0XHRcdFx0XHRcdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdFx0XHRcdFx0XHRmb250LXNpemU6IDEwcHg7XG5cdFx0XHRcdFx0XHRcdFx0YmFja2dyb3VuZDogIzAwN2NiYTtcblx0XHRcdFx0XHRcdFx0XHR3aWR0aDogMjBweDtcblx0XHRcdFx0XHRcdFx0XHRoZWlnaHQ6IDIwcHg7XG5cdFx0XHRcdFx0XHRcdFx0Ym9yZGVyLXJhZGl1czogMTBweDtcblx0XHRcdFx0XHRcdFx0XHRtYXJnaW46IDVweDtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdCYtbm90aWNlIHtcblx0XHRcdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdFx0XHRcdHBhZGRpbmc6IDI1cHg7XG5cdFx0XHRcdFx0YmFja2dyb3VuZDogI0U1RjVGQTtcblx0XHRcdFx0XHRib3JkZXItcmFkaXVzOiA2cHg7XG5cdFx0XHRcdFx0bWFyZ2luOiAtMTBweCAzMHB4IDMwcHggMzBweDtcblxuXHRcdFx0XHRcdHAge1xuXHRcdFx0XHRcdFx0Zm9udC1zaXplOiAxNHB4O1xuXHRcdFx0XHRcdFx0bGluZS1oZWlnaHQ6IDI0cHg7XG5cdFx0XHRcdFx0XHRjb2xvcjogIzQ0NDQ0NDtcblx0XHRcdFx0XHRcdG1hcmdpbjogMCAwIDEwcHggMDtcblxuXHRcdFx0XHRcdFx0JjpsYXN0LWNoaWxkIHtcblx0XHRcdFx0XHRcdFx0bWFyZ2luLWJvdHRvbTogMDtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Lm9jZGktaW5zdGFsbC1wbHVnaW5zLWNvbnRlbnQtZm9vdGVyLFxuXHRcdFx0Lm9jZGktY3JlYXRlLWNvbnRlbnQtZm9vdGVyIHtcblx0XHRcdFx0cGFkZGluZzogMzBweDtcblx0XHRcdFx0YmFja2dyb3VuZDogI2ZhZmFmYTtcblx0XHRcdFx0Ym9yZGVyLXRvcDogMXB4IHNvbGlkICNkZGRkZGQ7XG5cdFx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0XHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblxuXHRcdFx0XHQuYnV0dG9uIHtcblx0XHRcdFx0XHRmb250LXNpemU6IDE2cHg7XG5cdFx0XHRcdFx0bGluZS1oZWlnaHQ6IDE5cHg7XG5cdFx0XHRcdFx0cGFkZGluZzogMTBweCAxOHB4O1xuXHRcdFx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblxuXHRcdFx0XHRcdGltZyB7XG5cdFx0XHRcdFx0XHR3aWR0aDogMTZweDtcblx0XHRcdFx0XHRcdGhlaWdodDogYXV0bztcblx0XHRcdFx0XHRcdG1hcmdpbi1yaWdodDogNXB4O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdCZfX2ludHJvLXRleHQge1xuXHRcdHAge1xuXHRcdFx0Zm9udC1zaXplOiAxOHB4O1xuXHRcdFx0bGluZS1oZWlnaHQ6IDI2cHg7XG5cdFx0XHRmb250LXdlaWdodDogMzAwO1xuXHRcdFx0Y29sb3I6ICM2NjY2NjY7XG5cdFx0XHRtYXJnaW46IDAgMCAyNHB4O1xuXHRcdH1cblxuXHRcdHVsIHtcblx0XHRcdHBhZGRpbmc6IDAgNCU7XG5cdFx0XHRsaXN0LXN0eWxlLXR5cGU6IHNxdWFyZTtcblx0XHR9XG5cdH1cblxuXHQmX190aGVtZS1hYm91dCB7XG5cdFx0bWFyZ2luLWJvdHRvbTogMzBweDtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcblxuXHRcdCYtc2NyZWVuc2hvdHMge1xuXHRcdFx0ZmxleDogMTE7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDMwcHg7XG5cblx0XHRcdC5zY3JlZW5zaG90IHtcblx0XHRcdFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcblxuXHRcdFx0XHRpbWcge1xuXHRcdFx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICNDQ0QwRDQ7XG5cdFx0XHRcdFx0ZmlsdGVyOiBkcm9wLXNoYWRvdygwcHggMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMDcpKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdCYuYmxhbmsge1xuXHRcdFx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICNDQ0QwRDQ7XG5cdFx0XHRcdFx0ZmlsdGVyOiBkcm9wLXNoYWRvdygwcHggMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMDcpKTtcblx0XHRcdFx0XHRtaW4taGVpZ2h0OiA1MDBweDtcblx0XHRcdFx0XHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFBZ0FBQUFJQ0FZQUFBREVENzZMQUFBQUxFbEVRVlFZR1dPOGQrL2Vmd1lrb0tpb2lNUmpZR0JDNFdIaFVLNkE4VDhRSUp0OC8vNTlaQzQ5M0FBQVFzc0twQks0RjVBQUFBQUFTVVZPUks1Q1lJST0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGltZyB7XG5cdFx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCYtaW5mbyB7XG5cdFx0XHRmbGV4OiAxMDtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXG5cdFx0XHQudGhlbWUtdGl0bGUge1xuXHRcdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0XHRhbGlnbi1pdGVtczogYmFzZWxpbmU7XG5cblx0XHRcdFx0LnRoZW1lLW5hbWUge1xuXHRcdFx0XHRcdG1hcmdpbi1ib3R0b206IDE2cHg7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQudGhlbWUtdmVyc2lvbiB7XG5cdFx0XHRcdFx0bWFyZ2luLWxlZnQ6IDEwcHg7XG5cdFx0XHRcdFx0Y29sb3I6ICM3Mjc3N0M7XG5cdFx0XHRcdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdFx0XHRcdGxpbmUtaGVpZ2h0OiAxNnB4O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC50aGVtZS1hdXRob3Ige1xuXHRcdFx0XHRmb250LXNpemU6IDE2cHg7XG5cdFx0XHRcdGxpbmUtaGVpZ2h0OiAxOXB4O1xuXHRcdFx0XHRjb2xvcjogIzcyNzc3Qztcblx0XHRcdFx0bWFyZ2luOiAwIDAgMjBweDtcblx0XHRcdH1cblxuXHRcdFx0LnRoZW1lLWRlc2NyaXB0aW9uIHtcblx0XHRcdFx0Zm9udC1zaXplOiAxNnB4O1xuXHRcdFx0XHRsaW5lLWhlaWdodDogMjRweDtcblx0XHRcdFx0Y29sb3I6ICM1NTU1NTU7XG5cdFx0XHRcdG1hcmdpbjogMCAwIDIwcHg7XG5cdFx0XHR9XG5cblx0XHRcdC50aGVtZS10YWdzIHtcblx0XHRcdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdFx0XHRsaW5lLWhlaWdodDogMjBweDtcblx0XHRcdFx0Y29sb3I6ICM1NTU1NTU7XG5cdFx0XHRcdG1hcmdpbjogNHB4IDAgMDtcblxuXHRcdFx0XHRzcGFuIHtcblx0XHRcdFx0XHRmb250LXdlaWdodDogNzAwO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC5vY2RpLWltcG9ydC1tb2RlLXN3aXRjaCB7XG5cdFx0XHRcdGZsb2F0OiByaWdodDtcblx0XHRcdFx0Zm9udC1zaXplOiAxNHB4O1xuXHRcdFx0XHRsaW5lLWhlaWdodDogMTdweDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRAbWVkaWEgKG1heC13aWR0aDogODgwcHgpIHtcblx0XHRcdCYge1xuXHRcdFx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG5cdFx0XHRcdCYtc2NyZWVuc2hvdHMge1xuXHRcdFx0XHRcdG1hcmdpbjogMCAwIDMwcHggMDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIFBsdWdpbiBlbGVtZW50cy5cblx0Jl9fZGVtby1pbXBvcnQtZmlsZXMge1xuXHRcdHdpZHRoOiAxMDAlO1xuXHR9XG5cblx0Jl9fZGVtby1pbXBvcnQtcHJldmlldy1pbWFnZS1tZXNzYWdlIHtcblx0XHRmb250LXN0eWxlOiBpdGFsaWM7XG5cdH1cblxuXHQvLyBQbHVnaW4gdGl0bGUuXG5cdCZfX3RpdGxlOmJlZm9yZSB7XG5cdFx0d2lkdGg6IGF1dG87XG5cdFx0aGVpZ2h0OiBhdXRvO1xuXHRcdGZvbnQtc2l6ZTogaW5oZXJpdDtcblx0fVxuXG5cdC8vIFBsdWdpbiBtdWx0aSBzZWxlY3QgaW1wb3J0IGFuZCBQbHVnaW4gZmlsZSB1cGxvYWQgY29udGFpbmVycy5cblx0Jl9fbXVsdGktc2VsZWN0LWltcG9ydCxcblx0Jl9fZGVtby1pbXBvcnQtbm90aWNlOm5vdCg6ZW1wdHkpIHtcblx0XHRwYWRkaW5nOiAyMHB4O1xuXHRcdG1hcmdpbjogMzBweCAwO1xuXHRcdGZvbnQtc2l6ZTogMTRweDtcblx0XHRsaW5lLWhlaWdodDogMTlweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICNlNWU1ZTU7XG5cdH1cblxuXHQmX19maWxlLXVwbG9hZC1jb250YWluZXIge1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICNkZGRkZGQ7XG5cdFx0Ym94LXNoYWRvdzogMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNyk7XG5cblx0XHQmLS1oZWFkZXIge1xuXHRcdFx0cGFkZGluZzogMzBweDtcblx0XHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkZGRkO1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcblxuXHRcdFx0aDIge1xuXHRcdFx0XHRmb250LXNpemU6IDIycHg7XG5cdFx0XHRcdGxpbmUtaGVpZ2h0OiAyN3B4O1xuXHRcdFx0XHRtYXJnaW46IDA7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ji1pdGVtcyB7XG5cdFx0XHRwYWRkaW5nOiAzMHB4IDMwcHggMCAzMHB4O1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcblxuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGZsZXgtd3JhcDogd3JhcDtcblxuXHRcdFx0Ji0tc2Vjb25kLXJvdyB7XG5cdFx0XHRcdHBhZGRpbmctdG9wOiAwO1xuXHRcdFx0fVxuXG5cdFx0XHQub2NkaV9fY2FyZCB7XG5cdFx0XHRcdGJveC1zaGFkb3c6IG5vbmU7XG5cblx0XHRcdFx0Ji1jb250ZW50IHtcblx0XHRcdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cblx0XHRcdFx0XHQmLWluZm8ge1xuXHRcdFx0XHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0XHRcdFx0cmlnaHQ6IDEwcHg7XG5cdFx0XHRcdFx0XHR0b3A6IDEwcHg7XG5cblx0XHRcdFx0XHRcdGltZyB7XG5cdFx0XHRcdFx0XHRcdHdpZHRoOiAxNnB4O1xuXHRcdFx0XHRcdFx0XHRoZWlnaHQ6IDE2cHg7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ji0tZm9vdGVyIHtcblx0XHRcdHBhZGRpbmc6IDMwcHg7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhO1xuXHRcdFx0Ym9yZGVyLXRvcDogMXB4IHNvbGlkICNkZGRkZGQ7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHR9XG5cdH1cblxuXHQmX19kZW1vLWltcG9ydC1ub3RpY2U6bm90KDplbXB0eSkge1xuXHRcdGJvcmRlcjogMDtcblx0XHRib3JkZXItbGVmdDogNHB4IHNvbGlkICMwMGEwZDI7XG5cdFx0Ym94LXNoYWRvdzogMCAxcHggMXB4IDAgcmdiYSgwLDAsMCwuMSk7XG5cdH1cblxuXHRbZGlyPVwicnRsXCJdICZfX2RlbW8taW1wb3J0LW5vdGljZTpub3QoOmVtcHR5KSB7XG5cdFx0Ym9yZGVyOiAwO1xuXHRcdGJvcmRlci1yaWdodDogNHB4IHNvbGlkICMwMGEwZDI7XG5cdH1cblxuXHQvLyBQbHVnaW4gYnV0dG9uLlxuXHQmX19idXR0b24tY29udGFpbmVyIHtcblx0XHRtYXJnaW4tdG9wOiAzMHB4O1xuXHR9XG5cblx0Ly8gQUpBWCBsb2FkZXIuXG5cdCZfX2FqYXgtbG9hZGVyIHtcblx0XHRmb250LXNpemU6IDEuNWVtO1xuXG5cdFx0LnNwaW5uZXIge1xuXHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0ZmxvYXQ6IG5vbmU7XG5cdFx0XHR2aXNpYmlsaXR5OiB2aXNpYmxlO1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogNnB4O1xuXHRcdH1cblx0fVxuXG5cdC8vIE5ldyBncmlkIGxheW91dC5cblx0Jl9fZ2wge1xuXHRcdCYtbmF2aWdhdGlvbiBsaSBhIHtcblx0XHRcdGJveC1zaGFkb3c6IG5vbmU7XG5cdFx0fVxuXG5cdFx0Ji1pdGVtLWNvbnRhaW5lciB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdH1cblxuXHRcdCYtaXRlbSB7XG5cdFx0XHRmbGV4OiAwIDAgMTAwJTtcblx0XHRcdG1hcmdpbi1ib3R0b206IDIwcHg7XG5cdFx0XHRib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuXHRcdFx0Ym94LXNoYWRvdzogMCAxcHggMXB4IHJnYmEoMCwwLDAsMC4wNyk7XG5cdFx0XHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYTtcblxuXHRcdFx0Ji1pbWFnZS1jb250YWluZXIge1xuXHRcdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdFx0XHQtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcblx0XHRcdFx0dHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2UtaW4tb3V0O1xuXG5cdFx0XHRcdCY6OmFmdGVyIHtcblx0XHRcdFx0XHRjb250ZW50OiBcIlwiO1xuXHRcdFx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0XHRcdHBhZGRpbmctdG9wOiA2Ni42NjY2NiU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ji1pbWFnZSB7XG5cdFx0XHRcdGhlaWdodDogYXV0bztcblx0XHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0XHRsZWZ0OiAwO1xuXHRcdFx0XHR0b3A6IDA7XG5cdFx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0XHR0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZS1pbi1vdXQ7XG5cblx0XHRcdFx0Ji0tbm8taW1hZ2Uge1xuXHRcdFx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHRcdFx0XHR3aWR0aDogNTAlO1xuXHRcdFx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRcdFx0dG9wOiA0NSU7XG5cdFx0XHRcdFx0cmlnaHQ6IDI1JTtcblx0XHRcdFx0XHRsZWZ0OiAyNSU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ji1mb290ZXIge1xuXHRcdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRcdHBhZGRpbmc6IDhweCAxMHB4O1xuXHRcdFx0XHRib3JkZXItdG9wOiAxcHggc29saWQgI2RkZGRkZDtcblx0XHRcdFx0YmFja2dyb3VuZDogI2ZmZmZmZjtcblx0XHRcdFx0YmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwwLjY1KTtcblx0XHRcdH1cblxuXHRcdFx0Ji10aXRsZSB7XG5cdFx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0XHRcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXHRcdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0XHRmb250LXNpemU6IDE2cHg7XG5cdFx0XHRcdGxpbmUtaGVpZ2h0OiAxOXB4O1xuXHRcdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0XHRcdGZvbnQtd2VpZ2h0OiA1MDA7XG5cdFx0XHRcdGNvbG9yOiAjMjMyODJkO1xuXHRcdFx0XHRwYWRkaW5nOiA1cHggMCA2cHg7XG5cblx0XHRcdFx0QG1lZGlhIChtYXgtd2lkdGg6IDc4MnB4KSB7XG5cdFx0XHRcdFx0JiB7XG5cdFx0XHRcdFx0XHRwYWRkaW5nOiAxMnB4IDAgMTNweDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ji1idXR0b25zIHtcblx0XHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdFx0fVxuXG5cdFx0XHQmLWJ1dHRvbiB7XG5cblx0XHRcdFx0JiArICYge1xuXHRcdFx0XHRcdG1hcmdpbi1sZWZ0OiAxNXB4O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdEBtZWRpYSAobWF4LXdpZHRoOiA3ODJweCkge1xuXHRcdFx0XHQmLWJ1dHRvbiB7XG5cdFx0XHRcdFx0d2lkdGg6IGNhbGMoNTAlIC0gMTBweCk7XG5cdFx0XHRcdFx0bWFyZ2luLWJvdHRvbTogMTBweDtcblxuXHRcdFx0XHRcdCYgKyAmIHtcblx0XHRcdFx0XHRcdGZsb2F0OiBsZWZ0O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQmOmhvdmVyIHtcblx0XHRcdFx0Lm9jZGlfX2dsLWl0ZW0tYnV0dG9ucyB7XG5cdFx0XHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQub2NkaV9fZ2wtaXRlbS10aXRsZSB7XG5cdFx0XHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC5vY2RpX19nbC1pdGVtLWZvb3RlciB7XG5cdFx0XHRcdFx0YmFja2dyb3VuZDogI2ZmZmZmZjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCYtaGVhZGVyIHtcblx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHRcdHdpZHRoOiBjYWxjKDEwMCUgLSAyNHB4KTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG5cdFx0XHRib3JkZXI6IDFweCBzb2xpZCAjY2NkMGQ0O1xuXHRcdFx0Ym94LXNoYWRvdzogMHB4IDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjA3KTtcblx0XHRcdG1hcmdpbi1ib3R0b206IDMwcHg7XG5cdFx0XHRwYWRkaW5nOiAwIDExcHg7XG5cdFx0fVxuXG5cdFx0Ji1uYXZpZ2F0aW9uIHtcblx0XHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxNnB4O1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRmbG9hdDogbGVmdDtcblxuXHRcdFx0dWwge1xuXHRcdFx0XHRsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG5cdFx0XHRcdG1hcmdpbjogMDtcblx0XHRcdFx0cGFkZGluZzogMDtcblx0XHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcdH1cblxuXHRcdFx0bGkge1xuXHRcdFx0XHRtYXJnaW46IDA7XG5cblx0XHRcdFx0Ji5hY3RpdmUgYSxcblx0XHRcdFx0Ji5hY3RpdmUgYTpob3ZlciB7XG5cblx0XHRcdFx0XHRzcGFuIHtcblx0XHRcdFx0XHRcdHBhZGRpbmctYm90dG9tOiAxNHB4O1xuXHRcdFx0XHRcdFx0Ym9yZGVyLWJvdHRvbTogNHB4IHNvbGlkICM2NjY2NjY7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0YSB7XG5cdFx0XHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdFx0XHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblx0XHRcdFx0XHRjb2xvcjogIzIzMjgyRDtcblx0XHRcdFx0XHRwYWRkaW5nOiAxOHB4IDEwcHg7XG5cblx0XHRcdFx0XHRzcGFuIHtcblx0XHRcdFx0XHRcdHBhZGRpbmctYm90dG9tOiAxNHB4O1xuXHRcdFx0XHRcdFx0Ym9yZGVyLWJvdHRvbTogNHB4IHNvbGlkICNmZmZmZmY7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdFx0XHRjb2xvcjogIzAwYTBkMjtcblx0XHRcdFx0XHRcdGN1cnNvcjpwb2ludGVyO1xuXG5cdFx0XHRcdFx0XHRzcGFuIHtcblx0XHRcdFx0XHRcdFx0Ym9yZGVyLWJvdHRvbTogNHB4IHNvbGlkICNmZmZmZmY7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ji1zZWFyY2gtaW5wdXQge1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRtYXJnaW46IDEwcHggMDtcblx0XHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxNnB4O1xuXHRcdFx0Y29sb3I6ICM3Mjc3N0MgIWltcG9ydGFudDtcblx0XHR9XG5cblx0XHRAbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHtcblx0XHRcdCYtbmF2aWdhdGlvbiB7XG5cdFx0XHRcdHdpZHRoOiBjYWxjKDEwMCUgLSAyODBweCk7XG5cblx0XHRcdFx0bGkge1xuXHRcdFx0XHRcdG1hcmdpbjogMCAxNXB4O1xuXHRcdFx0XHRcdGZsb2F0OiBsZWZ0O1xuXG5cdFx0XHRcdFx0YSB7XG5cdFx0XHRcdFx0XHRwYWRkaW5nOiAxOHB4IDEwcHg7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdCYtc2VhcmNoLWlucHV0IHtcblx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0XHR3aWR0aDogMjgwcHg7XG5cdFx0XHRcdGhlaWdodDogMzBweDtcblx0XHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0XHRtYXJnaW4tdG9wOiAxMXB4O1xuXHRcdFx0fVxuXG5cdFx0XHQmLWl0ZW0tY29udGFpbmVyIHtcblx0XHRcdFx0bWFyZ2luLXJpZ2h0OiAtMjBweDtcblx0XHRcdH1cblxuXHRcdFx0Ji1pdGVtIHtcblx0XHRcdFx0ZmxleDogMCAwIGNhbGMoNTAlIC0gMjBweCk7XG5cdFx0XHRcdG1hcmdpbi1yaWdodDogMjBweDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRAbWVkaWEgKG1pbi13aWR0aDogMTEyMHB4KSB7XG5cdFx0XHQmLWl0ZW0tY29udGFpbmVyIHtcblx0XHRcdFx0bWFyZ2luLXJpZ2h0OiAtMzBweDtcblx0XHRcdH1cblxuXHRcdFx0Ji1pdGVtIHtcblx0XHRcdFx0ZmxleDogMCAwIGNhbGMoMzMuMzMlIC0gMzBweCk7XG5cdFx0XHRcdG1hcmdpbi1ib3R0b206IDMwcHg7XG5cdFx0XHRcdG1hcmdpbi1yaWdodDogMzBweDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQmX19jYXJkIHtcblx0XHRiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICNkZGRkZGQ7XG5cdFx0Ym94LXNoYWRvdzogMHB4IDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjA3KTtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXG5cdFx0Ji1jb250ZW50IHtcblx0XHRcdHBhZGRpbmc6IDMwcHg7XG5cblx0XHRcdC5vY2RpLWljb24ge1xuXG5cdFx0XHRcdCYtLWNvbnRlbnQge1xuXHRcdFx0XHRcdHdpZHRoOiA1M3B4O1xuXHRcdFx0XHRcdGhlaWdodDogNTNweDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdCYtLXdpZGdldHMge1xuXHRcdFx0XHRcdHdpZHRoOiA1NnB4O1xuXHRcdFx0XHRcdGhlaWdodDogNDlweDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdCYtLWJydXNoIHtcblx0XHRcdFx0XHR3aWR0aDogNTVweDtcblx0XHRcdFx0XHRoZWlnaHQ6IDUycHg7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQmLS1yZWR1eCB7XG5cdFx0XHRcdFx0d2lkdGg6IDgycHg7XG5cdFx0XHRcdFx0aGVpZ2h0OiA3MHB4O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ji0tcGx1Z2lucyB7XG5cdFx0XHRcdFx0d2lkdGg6IDY1cHg7XG5cdFx0XHRcdFx0aGVpZ2h0OiA2NHB4O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ji0tY29weSB7XG5cdFx0XHRcdFx0d2lkdGg6IDQycHg7XG5cdFx0XHRcdFx0aGVpZ2h0OiA1MnB4O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ji0tbGF5b3V0IHtcblx0XHRcdFx0XHR3aWR0aDogNTNweDtcblx0XHRcdFx0XHRoZWlnaHQ6IDUycHg7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQmLWNvbnRhaW5lciB7XG5cdFx0XHRcdFx0aGVpZ2h0OiA3MHB4O1xuXHRcdFx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRoMyB7XG5cdFx0XHRcdG1hcmdpbjogNXB4IDA7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMTZweDtcblx0XHRcdFx0bGluZS1oZWlnaHQ6IDIwcHg7XG5cdFx0XHRcdGZvbnQtd2VpZ2h0OiA1MDA7XG5cdFx0XHR9XG5cblx0XHRcdHAge1xuXHRcdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRcdFx0bGluZS1oZWlnaHQ6IDE2cHg7XG5cdFx0XHRcdGNvbG9yOiAjNjY2NjY2O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCYtZm9vdGVyIHtcblx0XHRcdGJhY2tncm91bmQ6ICNmYWZhZmE7XG5cdFx0XHRib3gtc2hhZG93OiAwcHggLTFweCAwcHggI0RERERERDtcblx0XHRcdHBhZGRpbmc6IDEwcHg7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXG5cdFx0XHQuYnV0dG9uLXNlY29uZGFyeSB7XG5cdFx0XHRcdGJhY2tncm91bmQ6ICNmYWZhZmE7XG5cdFx0XHR9XG5cblx0XHRcdGlucHV0W3R5cGU9XCJmaWxlXCJdIHtcblx0XHRcdFx0d2lkdGg6IDIwMHB4O1xuXHRcdFx0XHRwYWRkaW5nOiA0cHggMDtcblx0XHRcdH1cblxuXHRcdFx0LmJ1dHRvbi1kaXNhYmxlZCB7XG5cdFx0XHRcdGN1cnNvcjogbm90LWFsbG93ZWQ7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ji0tdGhyZWUge1xuXHRcdFx0ZmxleDogMCAwIDEwMCU7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAyMHB4O1xuXG5cdFx0XHRAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcblx0XHRcdFx0ZmxleDogMCAwIGNhbGMoNTAlIC0gMTBweCk7XG5cdFx0XHRcdG1hcmdpbi1yaWdodDogMjBweDtcblxuXHRcdFx0XHQmOm50aC1jaGlsZCgybikge1xuXHRcdFx0XHRcdG1hcmdpbi1yaWdodDogMDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRAbWVkaWEgKG1pbi13aWR0aDogMTEyMHB4KSB7XG5cdFx0XHRcdGZsZXg6IDAgMCBjYWxjKDMzLjMzJSAtIDIwcHgpO1xuXHRcdFx0XHRtYXJnaW4tYm90dG9tOiAzMHB4O1xuXHRcdFx0XHRtYXJnaW4tcmlnaHQ6IDMwcHg7XG5cblx0XHRcdFx0JjpudGgtY2hpbGQoMm4pIHtcblx0XHRcdFx0XHRtYXJnaW4tcmlnaHQ6IDMwcHg7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQmOm50aC1jaGlsZCgzbikge1xuXHRcdFx0XHRcdG1hcmdpbi1yaWdodDogMDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCYtLWZvdXIge1xuXHRcdFx0ZmxleDogMCAwIDEwMCU7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAyMHB4O1xuXG5cdFx0XHRAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcblx0XHRcdFx0ZmxleDogMCAwIGNhbGMoNTAlIC0gMTBweCk7XG5cdFx0XHRcdG1hcmdpbi1yaWdodDogMjBweDtcblxuXHRcdFx0XHQmOm50aC1jaGlsZCgybikge1xuXHRcdFx0XHRcdG1hcmdpbi1yaWdodDogMDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRAbWVkaWEgKG1pbi13aWR0aDogMTEyMHB4KSB7XG5cdFx0XHRcdGZsZXg6IDAgMCBjYWxjKDUwJSAtIDE1cHgpO1xuXHRcdFx0XHRtYXJnaW4tYm90dG9tOiAzMHB4O1xuXHRcdFx0XHRtYXJnaW4tcmlnaHQ6IDMwcHg7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbi8vIEdyaWQgYW5pbWF0aW9ucy5cbkBrZXlmcmFtZXMgb2NkaS1mYWRlIHtcblx0ZnJvbSB7XG5cdFx0b3BhY2l0eTogMTtcblx0fVxuXG5cdHRvIHtcblx0XHRvcGFjaXR5OiAwO1xuXHR9XG59XG5cbi5vY2RpLWlzLWZhZGVvdXQge1xuXHRhbmltYXRpb246IG9jZGktZmFkZSBsaW5lYXIgMjAwbXMgMSBmb3J3YXJkcztcbn1cblxuLm9jZGktaXMtZmFkZWluIHtcblx0YW5pbWF0aW9uOiBvY2RpLWZhZGUgbGluZWFyIDIwMG1zIDEgcmV2ZXJzZSBmb3J3YXJkcztcbn1cblxuLy8gR3JpZCBsYXlvdXQgbW9kYWwgd2luZG93LlxuLm9jZGlfX21vZGFsIHtcblx0Ji1pbWFnZS1jb250YWluZXIge1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdGhlaWdodDogMTgwcHg7XG5cdFx0bWFyZ2luOiAwO1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cblx0XHRpbWcge1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0fVxuXHR9XG5cblx0Ji1pdGVtLXRpdGxlIHtcblx0XHRtYXJnaW4tdG9wOiAwLjVlbTtcblx0XHRmb250LXdlaWdodDogYm9sZDtcblx0fVxuXG5cdCYtbm90aWNlLm9jZGlfX2RlbW8taW1wb3J0LW5vdGljZTpub3QoOmVtcHR5KSB7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgI2U1ZTVlNTtcblx0XHRib3JkZXItbGVmdDogNHB4IHNvbGlkICMwMGEwZDI7XG5cdFx0bWFyZ2luOiAyMHB4IDAgMDtcblx0fVxufVxuXG4vLyBDdXN0b20gc3R5bGUgZm9yIHRoZSBwbHVnaW4gU1ZHIGxvYWRlci5cbi5vY2RpLWxvYWRpbmcge1xuXHRhbmltYXRpb246IDAuNjVzIGxpbmVhciBpbmZpbml0ZSBvY2RpLWxvYWRpbmctc3Bpbjtcbn1cblxuLm9jZGktbG9hZGluZy1tZCB7XG5cdHdpZHRoOiAzMnB4O1xuXHRoZWlnaHQ6IDMycHg7XG59XG5cbi5vY2RpLWxvYWRpbmctc20ge1xuXHR3aWR0aDogMTZweDtcblx0aGVpZ2h0OiAxNnB4O1xufVxuXG5Aa2V5ZnJhbWVzIG9jZGktbG9hZGluZy1zcGluIHtcblx0MCUge1xuXHRcdHRyYW5zZm9ybTogcm90YXRlWigyNzBkZWcpO1xuXHR9XG5cdDEwMCUge1xuXHRcdHRyYW5zZm9ybTogcm90YXRlWig2MzBkZWcpXG5cdH1cbn1cbiIsIiN3cGNvbnRlbnQge1xuICBwYWRkaW5nLWxlZnQ6IDA7XG59XG5cbi5vY2RpIHtcbiAgbWF4LXdpZHRoOiBub25lO1xufVxuXG4ub2NkaSBoMiB7XG4gIHRleHQtYWxpZ246IGluaGVyaXQ7XG4gIGZvbnQtc2l6ZTogMzJweDtcbiAgbGluZS1oZWlnaHQ6IDM5cHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIG1hcmdpbi1ib3R0b206IDIwcHg7XG59XG5cbi5vY2RpIGgyOmZpcnN0LWNoaWxkLFxuLm9jZGkgaDM6Zmlyc3QtY2hpbGQge1xuICBtYXJnaW4tdG9wOiAwO1xufVxuXG4ub2NkaSBociB7XG4gIG1hcmdpbjogMzBweCAwO1xufVxuXG4ub2NkaSAubm90aWNlLFxuLm9jZGkgLnVwZGF0ZS1uYWcsXG4ub2NkaSAjdXBkYXRlLW5hZyB7XG4gIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gIG1hcmdpbjogMCAwIDMwcHggMDtcbn1cblxuLm9jZGktbm90aWNlcy13cmFwcGVyIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLm9jZGktbm90aWNlcy13cmFwcGVyIC5ub3RpY2UsXG4ub2NkaS1ub3RpY2VzLXdyYXBwZXIgLnVwZGF0ZS1uYWcsXG4ub2NkaS1ub3RpY2VzLXdyYXBwZXIgI3VwZGF0ZS1uYWcge1xuICBtYXJnaW46IDAgMCAxNXB4IDA7XG59XG5cbi5vY2RpLW5vdGljZXMtd3JhcHBlciAubm90aWNlOmxhc3QtY2hpbGQsXG4ub2NkaS1ub3RpY2VzLXdyYXBwZXIgLnVwZGF0ZS1uYWc6bGFzdC1jaGlsZCxcbi5vY2RpLW5vdGljZXMtd3JhcHBlciAjdXBkYXRlLW5hZzpsYXN0LWNoaWxkIHtcbiAgbWFyZ2luLWJvdHRvbTogMzBweDtcbn1cblxuLm9jZGlfX2FkbWluLW5vdGljZXMgLm9jZGktbm90aWNlcy13cmFwcGVyIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi5vY2RpLWJ1dHRvbi1kaXNhYmxlZCB7XG4gIG9wYWNpdHk6IDAuNiAhaW1wb3J0YW50O1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkICFpbXBvcnRhbnQ7XG59XG5cbi5vY2RpLWNvbnRlbnQtbm90aWNlIHtcbiAgcGFkZGluZzogMjVweDtcbiAgYmFja2dyb3VuZDogI0U1RjVGQTtcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xuICBtYXJnaW46IDMwcHg7XG59XG5cbi5vY2RpLWNvbnRlbnQtbm90aWNlIHAge1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICBjb2xvcjogIzQ0NDQ0NDtcbiAgbWFyZ2luOiAwIDAgMTBweCAwO1xufVxuXG4ub2NkaS1jb250ZW50LW5vdGljZSBwOmxhc3QtY2hpbGQge1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4ub2NkaS1pbXBvcnRpbmcsIC5vY2RpLWltcG9ydGVkIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwYWRkaW5nOiAzMHB4O1xufVxuXG4ub2NkaS1pbXBvcnRpbmcgcCwgLm9jZGktaW1wb3J0ZWQgcCB7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgbGluZS1oZWlnaHQ6IDE5cHg7XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG4gIGNvbG9yOiAjNDQ0NDQ0O1xuICBtYXJnaW46IDAgMCAxMHB4IDA7XG59XG5cbi5vY2RpLWltcG9ydGluZyBwOmxhc3QtY2hpbGQsIC5vY2RpLWltcG9ydGVkIHA6bGFzdC1jaGlsZCB7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbi5vY2RpLWltcG9ydGluZy1oZWFkZXIgaDIsIC5vY2RpLWltcG9ydGVkLWhlYWRlciBoMiB7XG4gIGZvbnQtc2l6ZTogMjRweDtcbiAgbGluZS1oZWlnaHQ6IDI5cHg7XG4gIG1hcmdpbi1ib3R0b206IDEwcHg7XG59XG5cbi5vY2RpLWltcG9ydGluZy1oZWFkZXIgcCwgLm9jZGktaW1wb3J0ZWQtaGVhZGVyIHAge1xuICBtYXJnaW4tYm90dG9tOiA1cHg7XG59XG5cbi5vY2RpLWltcG9ydGluZy1oZWFkZXIgcDpsYXN0LWNoaWxkLCAub2NkaS1pbXBvcnRlZC1oZWFkZXIgcDpsYXN0LWNoaWxkIHtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLm9jZGktaW1wb3J0aW5nLWNvbnRlbnQsIC5vY2RpLWltcG9ydGVkLWNvbnRlbnQge1xuICBtYXJnaW46IDAgMjBweDtcbn1cblxuLm9jZGktaW1wb3J0aW5nLWNvbnRlbnQtaW1wb3J0aW5nLCAub2NkaS1pbXBvcnRlZC1jb250ZW50LWltcG9ydGluZyB7XG4gIHdpZHRoOiA0MTVweDtcbiAgaGVpZ2h0OiAyMjhweDtcbiAgbWFyZ2luOiA1MHB4IDAgMjBweCAwO1xufVxuXG4ub2NkaS1pbXBvcnRpbmctY29udGVudC1pbXBvcnRlZCwgLm9jZGktaW1wb3J0ZWQtY29udGVudC1pbXBvcnRlZCB7XG4gIG1hcmdpbjogODBweCAwIDUwcHggMDtcbn1cblxuLm9jZGktaW1wb3J0aW5nLWNvbnRlbnQtaW1wb3J0ZWQtLXN1Y2Nlc3MsIC5vY2RpLWltcG9ydGVkLWNvbnRlbnQtaW1wb3J0ZWQtLXN1Y2Nlc3Mge1xuICB3aWR0aDogMTU2cHg7XG4gIGhlaWdodDogMTI0cHg7XG59XG5cbi5vY2RpLWltcG9ydGluZy1jb250ZW50LWltcG9ydGVkLS1lcnJvciwgLm9jZGktaW1wb3J0aW5nLWNvbnRlbnQtaW1wb3J0ZWQtLXdhcm5pbmcsIC5vY2RpLWltcG9ydGVkLWNvbnRlbnQtaW1wb3J0ZWQtLWVycm9yLCAub2NkaS1pbXBvcnRlZC1jb250ZW50LWltcG9ydGVkLS13YXJuaW5nIHtcbiAgd2lkdGg6IDEyNHB4O1xuICBoZWlnaHQ6IDEyNHB4O1xufVxuXG4ub2NkaS1pbXBvcnRpbmctY29udGVudCAubm90aWNlLCAub2NkaS1pbXBvcnRlZC1jb250ZW50IC5ub3RpY2Uge1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBtYXJnaW46IDMwcHggMDtcbn1cblxuLm9jZGktaW1wb3J0aW5nLWNvbnRlbnQgLm5vdGljZSBwLCAub2NkaS1pbXBvcnRlZC1jb250ZW50IC5ub3RpY2UgcCB7XG4gIHBhZGRpbmc6IDE1cHggM3B4O1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAyMnB4O1xuICBjb2xvcjogIzc3Nzc3Nztcbn1cblxuLm9jZGktaW1wb3J0aW5nLWZvb3RlciwgLm9jZGktaW1wb3J0ZWQtZm9vdGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgbWluLWhlaWdodDogMTAwcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICNGOEY4Rjg7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkZGRkO1xuICBtYXJnaW46IDMwcHggLTMwcHggLTMwcHg7XG59XG5cbi5vY2RpLWltcG9ydGluZy1mb290ZXIgYS5idXR0b24sIC5vY2RpLWltcG9ydGVkLWZvb3RlciBhLmJ1dHRvbiB7XG4gIGZsZXg6IDAgMSAyNSU7XG4gIG1hcmdpbi1yaWdodDogMzBweDtcbn1cblxuLm9jZGktaW1wb3J0aW5nLWZvb3RlciBhLmJ1dHRvbjpsYXN0LWNoaWxkLCAub2NkaS1pbXBvcnRlZC1mb290ZXIgYS5idXR0b246bGFzdC1jaGlsZCB7XG4gIG1hcmdpbi1yaWdodDogMDtcbn1cblxuLm9jZGkgLmJ1dHRvbi5idXR0b24taGVybyB7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIG1pbi1oZWlnaHQ6IDQwcHg7XG4gIHBhZGRpbmc6IDlweCAxOHB4O1xufVxuXG4ub2NkaSAuYnV0dG9uLmJ1dHRvbi1oZXJvLm9jZGlfX2J1dHRvbi5idXR0b24tcHJpbWFyeTpkaXNhYmxlZCwgLm9jZGkgLmJ1dHRvbi5idXR0b24taGVyby5vY2RpX19idXR0b24uYnV0dG9uLXByaW1hcnlbZGlzYWJsZWRdIHtcbiAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudDtcbiAgYmFja2dyb3VuZDogIzk5OTk5OSAhaW1wb3J0YW50O1xuICBib3JkZXItY29sb3I6ICM5OTk5OTkgIWltcG9ydGFudDtcbiAgb3BhY2l0eTogMC41O1xufVxuXG4ub2NkaV9fcmVkdXgtb3B0aW9uLW5hbWUtaW5wdXQge1xuICBtYXJnaW4tbGVmdDogMTBweDtcbiAgd2lkdGg6IDEzN3B4O1xuICBib3JkZXItcmFkaXVzOiAzcHggIWltcG9ydGFudDtcbiAgcGFkZGluZzogMCAxMHB4ICFpbXBvcnRhbnQ7XG4gIGZvbnQtc2l6ZTogMTNweCAhaW1wb3J0YW50O1xuICBsaW5lLWhlaWdodDogMTZweCAhaW1wb3J0YW50O1xufVxuXG4ub2NkaS1oaWRlLWlucHV0IHtcbiAgd2lkdGg6IDAuMXB4ICFpbXBvcnRhbnQ7XG4gIGhlaWdodDogMC4xcHggIWltcG9ydGFudDtcbiAgb3BhY2l0eTogMCAhaW1wb3J0YW50O1xuICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50O1xuICB6LWluZGV4OiAtMSAhaW1wb3J0YW50O1xufVxuXG4uZmVhdHVyZS1zZWN0aW9uICsgaHIge1xuICBtYXJnaW4tdG9wOiAwO1xufVxuXG4jd3Bib2R5IHNlbGVjdCB7XG4gIGhlaWdodDogYXV0bztcbiAgcGFkZGluZzogLjYyZW07XG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xufVxuXG4ub2NkaV9fdGl0bGUtY29udGFpbmVyIHtcbiAgaGVpZ2h0OiAzMHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuICBwYWRkaW5nOiAyMHB4IDMwcHg7XG4gIGJveC1zaGFkb3c6IDBweCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4wNyk7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cblxuLm9jZGlfX3RpdGxlLWNvbnRhaW5lci10aXRsZSB7XG4gIG1hcmdpbjogMDtcbiAgZm9udC1zaXplOiAyNHB4O1xuICBsaW5lLWhlaWdodDogMjlweDtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbn1cblxuLm9jZGlfX3RpdGxlLWNvbnRhaW5lci1pY29uIHtcbiAgd2lkdGg6IDE5cHg7XG4gIGhlaWdodDogMTlweDtcbn1cblxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyIHtcbiAgcGFkZGluZzogMzBweDtcbn1cblxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQge1xuICBkaXNwbGF5OiBmbGV4O1xufVxuXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudC0tbWFpbiB7XG4gIGZsZXg6IDE7XG4gIG1hcmdpbi1yaWdodDogMzBweDtcbiAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2RkZGRkZDtcbiAgYm94LXNoYWRvdzogMHB4IDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjA3KTtcbn1cblxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQtLXNpZGUge1xuICB3aWR0aDogMzczcHg7XG59XG5cbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50LS1zaWRlIC5vY2RpX19jYXJkLWNvbnRlbnQge1xuICBwYWRkaW5nOiAwO1xufVxuXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudC0tc2lkZSAuc2NyZWVuc2hvdCB7XG4gIGhlaWdodDogMjc4cHg7XG59XG5cbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50LS1zaWRlIC5zY3JlZW5zaG90LmJsYW5rIHtcbiAgYm9yZGVyOiAxcHggc29saWQgI0NDRDBENDtcbiAgZmlsdGVyOiBkcm9wLXNoYWRvdygwcHggMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMDcpKTtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQWdBQUFBSUNBWUFBQURFRDc2TEFBQUFMRWxFUVZRWUdXTzhkKy9lZndZa29LaW9pTVJqWUdCQzRXSGhVSzZBOFQ4UUlKdDgvLzU5WkM0OTNBQUFRc3NLcEJLNEY1QUFBQUFBU1VWT1JLNUNZSUk9KTtcbn1cblxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQtLXNpZGUgLm9jZGlfX2NhcmQtZm9vdGVyIHtcbiAgcGFkZGluZzogMTVweDtcbn1cblxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQtLXNpZGUgLm9jZGlfX2NhcmQtZm9vdGVyIGgzIHtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBsaW5lLWhlaWdodDogMTlweDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgbWFyZ2luOiAwO1xufVxuXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudC0tc2lkZSBpbWcge1xuICB3aWR0aDogMTAwJTtcbn1cblxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktaW5zdGFsbC1wbHVnaW5zLWNvbnRlbnQtaGVhZGVyLFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktY3JlYXRlLWNvbnRlbnQtaGVhZGVyIHtcbiAgcGFkZGluZzogMzBweDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZGRkZGQ7XG59XG5cbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWluc3RhbGwtcGx1Z2lucy1jb250ZW50LWhlYWRlciBoMixcbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWNyZWF0ZS1jb250ZW50LWhlYWRlciBoMiB7XG4gIGZvbnQtc2l6ZTogMjJweDtcbiAgbGluZS1oZWlnaHQ6IDI2cHg7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIG1hcmdpbjogMCAwIDZweCAwO1xufVxuXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1pbnN0YWxsLXBsdWdpbnMtY29udGVudC1oZWFkZXIgcCxcbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWNyZWF0ZS1jb250ZW50LWhlYWRlciBwIHtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBsaW5lLWhlaWdodDogMjJweDtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgY29sb3I6ICM0NDQ0NDQ7XG4gIG1hcmdpbjogMCAwIDEwcHggMDtcbn1cblxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktaW5zdGFsbC1wbHVnaW5zLWNvbnRlbnQtaGVhZGVyIHA6bGFzdC1jaGlsZCxcbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWNyZWF0ZS1jb250ZW50LWhlYWRlciBwOmxhc3QtY2hpbGQge1xuICBtYXJnaW46IDA7XG59XG5cbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWluc3RhbGwtcGx1Z2lucy1jb250ZW50LWhlYWRlciAubm90aWNlLFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktY3JlYXRlLWNvbnRlbnQtaGVhZGVyIC5ub3RpY2Uge1xuICBtYXJnaW46IDMwcHggMCAwO1xufVxuXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1pbnN0YWxsLXBsdWdpbnMtY29udGVudC1oZWFkZXIgLm5vdGljZSBwLFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktY3JlYXRlLWNvbnRlbnQtaGVhZGVyIC5ub3RpY2UgcCB7XG4gIG1hcmdpbjogLjVlbSAwO1xuICBmb250LXNpemU6IDEzcHg7XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG4gIGNvbG9yOiAjM2M0MzRhO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xufVxuXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1pbnN0YWxsLXBsdWdpbnMtY29udGVudC1jb250ZW50IC5wbHVnaW4taXRlbSxcbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWluc3RhbGwtcGx1Z2lucy1jb250ZW50LWNvbnRlbnQgLmNvbnRlbnQtaXRlbSxcbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWNyZWF0ZS1jb250ZW50LWNvbnRlbnQgLnBsdWdpbi1pdGVtLFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktY3JlYXRlLWNvbnRlbnQtY29udGVudCAuY29udGVudC1pdGVtIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBtYXJnaW46IDAgMzBweDtcbiAgcGFkZGluZzogMjVweCAwO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2VlZWVlZTtcbn1cblxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktaW5zdGFsbC1wbHVnaW5zLWNvbnRlbnQtY29udGVudCAucGx1Z2luLWl0ZW0gLm9jZGktbG9hZGluZyxcbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWluc3RhbGwtcGx1Z2lucy1jb250ZW50LWNvbnRlbnQgLmNvbnRlbnQtaXRlbSAub2NkaS1sb2FkaW5nLFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktY3JlYXRlLWNvbnRlbnQtY29udGVudCAucGx1Z2luLWl0ZW0gLm9jZGktbG9hZGluZyxcbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWNyZWF0ZS1jb250ZW50LWNvbnRlbnQgLmNvbnRlbnQtaXRlbSAub2NkaS1sb2FkaW5nIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktaW5zdGFsbC1wbHVnaW5zLWNvbnRlbnQtY29udGVudCAucGx1Z2luLWl0ZW0tLWFjdGl2ZSxcbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWluc3RhbGwtcGx1Z2lucy1jb250ZW50LWNvbnRlbnQgLmNvbnRlbnQtaXRlbS0tYWN0aXZlLFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktY3JlYXRlLWNvbnRlbnQtY29udGVudCAucGx1Z2luLWl0ZW0tLWFjdGl2ZSxcbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWNyZWF0ZS1jb250ZW50LWNvbnRlbnQgLmNvbnRlbnQtaXRlbS0tYWN0aXZlIHtcbiAgY3Vyc29yOiBkZWZhdWx0O1xufVxuXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1pbnN0YWxsLXBsdWdpbnMtY29udGVudC1jb250ZW50IC5wbHVnaW4taXRlbS0tYWN0aXZlIC5wbHVnaW4taXRlbS1jaGVja2JveCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkICsgLmNoZWNrYm94LFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktaW5zdGFsbC1wbHVnaW5zLWNvbnRlbnQtY29udGVudCAucGx1Z2luLWl0ZW0tLWFjdGl2ZSAuY29udGVudC1pdGVtLWNoZWNrYm94IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQgKyAuY2hlY2tib3gsXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1pbnN0YWxsLXBsdWdpbnMtY29udGVudC1jb250ZW50IC5jb250ZW50LWl0ZW0tLWFjdGl2ZSAucGx1Z2luLWl0ZW0tY2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCArIC5jaGVja2JveCxcbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWluc3RhbGwtcGx1Z2lucy1jb250ZW50LWNvbnRlbnQgLmNvbnRlbnQtaXRlbS0tYWN0aXZlIC5jb250ZW50LWl0ZW0tY2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCArIC5jaGVja2JveCxcbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWNyZWF0ZS1jb250ZW50LWNvbnRlbnQgLnBsdWdpbi1pdGVtLS1hY3RpdmUgLnBsdWdpbi1pdGVtLWNoZWNrYm94IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQgKyAuY2hlY2tib3gsXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1jcmVhdGUtY29udGVudC1jb250ZW50IC5wbHVnaW4taXRlbS0tYWN0aXZlIC5jb250ZW50LWl0ZW0tY2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCArIC5jaGVja2JveCxcbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWNyZWF0ZS1jb250ZW50LWNvbnRlbnQgLmNvbnRlbnQtaXRlbS0tYWN0aXZlIC5wbHVnaW4taXRlbS1jaGVja2JveCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkICsgLmNoZWNrYm94LFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktY3JlYXRlLWNvbnRlbnQtY29udGVudCAuY29udGVudC1pdGVtLS1hY3RpdmUgLmNvbnRlbnQtaXRlbS1jaGVja2JveCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkICsgLmNoZWNrYm94IHtcbiAgYm9yZGVyOiBub25lO1xuICBiYWNrZ3JvdW5kOiAjNjRCNDUwO1xufVxuXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1pbnN0YWxsLXBsdWdpbnMtY29udGVudC1jb250ZW50IC5wbHVnaW4taXRlbS0tYWN0aXZlIC5wbHVnaW4taXRlbS1jaGVja2JveCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkICsgLmNoZWNrYm94IC5vY2RpLWNoZWNrLWljb24sXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1pbnN0YWxsLXBsdWdpbnMtY29udGVudC1jb250ZW50IC5wbHVnaW4taXRlbS0tYWN0aXZlIC5jb250ZW50LWl0ZW0tY2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCArIC5jaGVja2JveCAub2NkaS1jaGVjay1pY29uLFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktaW5zdGFsbC1wbHVnaW5zLWNvbnRlbnQtY29udGVudCAuY29udGVudC1pdGVtLS1hY3RpdmUgLnBsdWdpbi1pdGVtLWNoZWNrYm94IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQgKyAuY2hlY2tib3ggLm9jZGktY2hlY2staWNvbixcbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWluc3RhbGwtcGx1Z2lucy1jb250ZW50LWNvbnRlbnQgLmNvbnRlbnQtaXRlbS0tYWN0aXZlIC5jb250ZW50LWl0ZW0tY2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCArIC5jaGVja2JveCAub2NkaS1jaGVjay1pY29uLFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktY3JlYXRlLWNvbnRlbnQtY29udGVudCAucGx1Z2luLWl0ZW0tLWFjdGl2ZSAucGx1Z2luLWl0ZW0tY2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCArIC5jaGVja2JveCAub2NkaS1jaGVjay1pY29uLFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktY3JlYXRlLWNvbnRlbnQtY29udGVudCAucGx1Z2luLWl0ZW0tLWFjdGl2ZSAuY29udGVudC1pdGVtLWNoZWNrYm94IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQgKyAuY2hlY2tib3ggLm9jZGktY2hlY2staWNvbixcbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWNyZWF0ZS1jb250ZW50LWNvbnRlbnQgLmNvbnRlbnQtaXRlbS0tYWN0aXZlIC5wbHVnaW4taXRlbS1jaGVja2JveCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkICsgLmNoZWNrYm94IC5vY2RpLWNoZWNrLWljb24sXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1jcmVhdGUtY29udGVudC1jb250ZW50IC5jb250ZW50LWl0ZW0tLWFjdGl2ZSAuY29udGVudC1pdGVtLWNoZWNrYm94IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQgKyAuY2hlY2tib3ggLm9jZGktY2hlY2staWNvbiB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktaW5zdGFsbC1wbHVnaW5zLWNvbnRlbnQtY29udGVudCAucGx1Z2luLWl0ZW0tLWFjdGl2ZSAucGx1Z2luLWl0ZW0tY2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCArIC5jaGVja2JveDo6YWZ0ZXIsXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1pbnN0YWxsLXBsdWdpbnMtY29udGVudC1jb250ZW50IC5wbHVnaW4taXRlbS0tYWN0aXZlIC5jb250ZW50LWl0ZW0tY2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCArIC5jaGVja2JveDo6YWZ0ZXIsXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1pbnN0YWxsLXBsdWdpbnMtY29udGVudC1jb250ZW50IC5jb250ZW50LWl0ZW0tLWFjdGl2ZSAucGx1Z2luLWl0ZW0tY2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCArIC5jaGVja2JveDo6YWZ0ZXIsXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1pbnN0YWxsLXBsdWdpbnMtY29udGVudC1jb250ZW50IC5jb250ZW50LWl0ZW0tLWFjdGl2ZSAuY29udGVudC1pdGVtLWNoZWNrYm94IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQgKyAuY2hlY2tib3g6OmFmdGVyLFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktY3JlYXRlLWNvbnRlbnQtY29udGVudCAucGx1Z2luLWl0ZW0tLWFjdGl2ZSAucGx1Z2luLWl0ZW0tY2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCArIC5jaGVja2JveDo6YWZ0ZXIsXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1jcmVhdGUtY29udGVudC1jb250ZW50IC5wbHVnaW4taXRlbS0tYWN0aXZlIC5jb250ZW50LWl0ZW0tY2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCArIC5jaGVja2JveDo6YWZ0ZXIsXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1jcmVhdGUtY29udGVudC1jb250ZW50IC5jb250ZW50LWl0ZW0tLWFjdGl2ZSAucGx1Z2luLWl0ZW0tY2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCArIC5jaGVja2JveDo6YWZ0ZXIsXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1jcmVhdGUtY29udGVudC1jb250ZW50IC5jb250ZW50LWl0ZW0tLWFjdGl2ZSAuY29udGVudC1pdGVtLWNoZWNrYm94IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQgKyAuY2hlY2tib3g6OmFmdGVyIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1pbnN0YWxsLXBsdWdpbnMtY29udGVudC1jb250ZW50IC5wbHVnaW4taXRlbS0tcmVxdWlyZWQsXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1pbnN0YWxsLXBsdWdpbnMtY29udGVudC1jb250ZW50IC5jb250ZW50LWl0ZW0tLXJlcXVpcmVkLFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktY3JlYXRlLWNvbnRlbnQtY29udGVudCAucGx1Z2luLWl0ZW0tLXJlcXVpcmVkLFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktY3JlYXRlLWNvbnRlbnQtY29udGVudCAuY29udGVudC1pdGVtLS1yZXF1aXJlZCB7XG4gIGN1cnNvcjogZGVmYXVsdDtcbn1cblxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktaW5zdGFsbC1wbHVnaW5zLWNvbnRlbnQtY29udGVudCAucGx1Z2luLWl0ZW0tLWxvYWRpbmcgLm9jZGktbG9hZGluZyxcbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWluc3RhbGwtcGx1Z2lucy1jb250ZW50LWNvbnRlbnQgLmNvbnRlbnQtaXRlbS0tbG9hZGluZyAub2NkaS1sb2FkaW5nLFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktY3JlYXRlLWNvbnRlbnQtY29udGVudCAucGx1Z2luLWl0ZW0tLWxvYWRpbmcgLm9jZGktbG9hZGluZyxcbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWNyZWF0ZS1jb250ZW50LWNvbnRlbnQgLmNvbnRlbnQtaXRlbS0tbG9hZGluZyAub2NkaS1sb2FkaW5nIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWluc3RhbGwtcGx1Z2lucy1jb250ZW50LWNvbnRlbnQgLnBsdWdpbi1pdGVtLS1sb2FkaW5nIC5wbHVnaW4taXRlbS1jaGVja2JveCBpbnB1dFt0eXBlPWNoZWNrYm94XSArIC5jaGVja2JveCxcbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWluc3RhbGwtcGx1Z2lucy1jb250ZW50LWNvbnRlbnQgLnBsdWdpbi1pdGVtLS1sb2FkaW5nIC5jb250ZW50LWl0ZW0tY2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF0gKyAuY2hlY2tib3gsXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1pbnN0YWxsLXBsdWdpbnMtY29udGVudC1jb250ZW50IC5jb250ZW50LWl0ZW0tLWxvYWRpbmcgLnBsdWdpbi1pdGVtLWNoZWNrYm94IGlucHV0W3R5cGU9Y2hlY2tib3hdICsgLmNoZWNrYm94LFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktaW5zdGFsbC1wbHVnaW5zLWNvbnRlbnQtY29udGVudCAuY29udGVudC1pdGVtLS1sb2FkaW5nIC5jb250ZW50LWl0ZW0tY2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF0gKyAuY2hlY2tib3gsXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1jcmVhdGUtY29udGVudC1jb250ZW50IC5wbHVnaW4taXRlbS0tbG9hZGluZyAucGx1Z2luLWl0ZW0tY2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF0gKyAuY2hlY2tib3gsXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1jcmVhdGUtY29udGVudC1jb250ZW50IC5wbHVnaW4taXRlbS0tbG9hZGluZyAuY29udGVudC1pdGVtLWNoZWNrYm94IGlucHV0W3R5cGU9Y2hlY2tib3hdICsgLmNoZWNrYm94LFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktY3JlYXRlLWNvbnRlbnQtY29udGVudCAuY29udGVudC1pdGVtLS1sb2FkaW5nIC5wbHVnaW4taXRlbS1jaGVja2JveCBpbnB1dFt0eXBlPWNoZWNrYm94XSArIC5jaGVja2JveCxcbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWNyZWF0ZS1jb250ZW50LWNvbnRlbnQgLmNvbnRlbnQtaXRlbS0tbG9hZGluZyAuY29udGVudC1pdGVtLWNoZWNrYm94IGlucHV0W3R5cGU9Y2hlY2tib3hdICsgLmNoZWNrYm94IHtcbiAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWluc3RhbGwtcGx1Z2lucy1jb250ZW50LWNvbnRlbnQgLnBsdWdpbi1pdGVtLS1sb2FkaW5nIC5wbHVnaW4taXRlbS1jaGVja2JveCBpbnB1dFt0eXBlPWNoZWNrYm94XSArIC5jaGVja2JveCAub2NkaS1sb2NrLWljb24sXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1pbnN0YWxsLXBsdWdpbnMtY29udGVudC1jb250ZW50IC5wbHVnaW4taXRlbS0tbG9hZGluZyAuY29udGVudC1pdGVtLWNoZWNrYm94IGlucHV0W3R5cGU9Y2hlY2tib3hdICsgLmNoZWNrYm94IC5vY2RpLWxvY2staWNvbixcbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWluc3RhbGwtcGx1Z2lucy1jb250ZW50LWNvbnRlbnQgLmNvbnRlbnQtaXRlbS0tbG9hZGluZyAucGx1Z2luLWl0ZW0tY2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF0gKyAuY2hlY2tib3ggLm9jZGktbG9jay1pY29uLFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktaW5zdGFsbC1wbHVnaW5zLWNvbnRlbnQtY29udGVudCAuY29udGVudC1pdGVtLS1sb2FkaW5nIC5jb250ZW50LWl0ZW0tY2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF0gKyAuY2hlY2tib3ggLm9jZGktbG9jay1pY29uLFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktY3JlYXRlLWNvbnRlbnQtY29udGVudCAucGx1Z2luLWl0ZW0tLWxvYWRpbmcgLnBsdWdpbi1pdGVtLWNoZWNrYm94IGlucHV0W3R5cGU9Y2hlY2tib3hdICsgLmNoZWNrYm94IC5vY2RpLWxvY2staWNvbixcbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWNyZWF0ZS1jb250ZW50LWNvbnRlbnQgLnBsdWdpbi1pdGVtLS1sb2FkaW5nIC5jb250ZW50LWl0ZW0tY2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF0gKyAuY2hlY2tib3ggLm9jZGktbG9jay1pY29uLFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktY3JlYXRlLWNvbnRlbnQtY29udGVudCAuY29udGVudC1pdGVtLS1sb2FkaW5nIC5wbHVnaW4taXRlbS1jaGVja2JveCBpbnB1dFt0eXBlPWNoZWNrYm94XSArIC5jaGVja2JveCAub2NkaS1sb2NrLWljb24sXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1jcmVhdGUtY29udGVudC1jb250ZW50IC5jb250ZW50LWl0ZW0tLWxvYWRpbmcgLmNvbnRlbnQtaXRlbS1jaGVja2JveCBpbnB1dFt0eXBlPWNoZWNrYm94XSArIC5jaGVja2JveCAub2NkaS1sb2NrLWljb24ge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWluc3RhbGwtcGx1Z2lucy1jb250ZW50LWNvbnRlbnQgLnBsdWdpbi1pdGVtLS1sb2FkaW5nIC5wbHVnaW4taXRlbS1jaGVja2JveCBpbnB1dFt0eXBlPWNoZWNrYm94XSArIC5jaGVja2JveDo6YWZ0ZXIsXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1pbnN0YWxsLXBsdWdpbnMtY29udGVudC1jb250ZW50IC5wbHVnaW4taXRlbS0tbG9hZGluZyAuY29udGVudC1pdGVtLWNoZWNrYm94IGlucHV0W3R5cGU9Y2hlY2tib3hdICsgLmNoZWNrYm94OjphZnRlcixcbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWluc3RhbGwtcGx1Z2lucy1jb250ZW50LWNvbnRlbnQgLmNvbnRlbnQtaXRlbS0tbG9hZGluZyAucGx1Z2luLWl0ZW0tY2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF0gKyAuY2hlY2tib3g6OmFmdGVyLFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktaW5zdGFsbC1wbHVnaW5zLWNvbnRlbnQtY29udGVudCAuY29udGVudC1pdGVtLS1sb2FkaW5nIC5jb250ZW50LWl0ZW0tY2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF0gKyAuY2hlY2tib3g6OmFmdGVyLFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktY3JlYXRlLWNvbnRlbnQtY29udGVudCAucGx1Z2luLWl0ZW0tLWxvYWRpbmcgLnBsdWdpbi1pdGVtLWNoZWNrYm94IGlucHV0W3R5cGU9Y2hlY2tib3hdICsgLmNoZWNrYm94OjphZnRlcixcbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWNyZWF0ZS1jb250ZW50LWNvbnRlbnQgLnBsdWdpbi1pdGVtLS1sb2FkaW5nIC5jb250ZW50LWl0ZW0tY2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF0gKyAuY2hlY2tib3g6OmFmdGVyLFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktY3JlYXRlLWNvbnRlbnQtY29udGVudCAuY29udGVudC1pdGVtLS1sb2FkaW5nIC5wbHVnaW4taXRlbS1jaGVja2JveCBpbnB1dFt0eXBlPWNoZWNrYm94XSArIC5jaGVja2JveDo6YWZ0ZXIsXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1jcmVhdGUtY29udGVudC1jb250ZW50IC5jb250ZW50LWl0ZW0tLWxvYWRpbmcgLmNvbnRlbnQtaXRlbS1jaGVja2JveCBpbnB1dFt0eXBlPWNoZWNrYm94XSArIC5jaGVja2JveDo6YWZ0ZXIge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWluc3RhbGwtcGx1Z2lucy1jb250ZW50LWNvbnRlbnQgLnBsdWdpbi1pdGVtLWNvbnRlbnQsXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1pbnN0YWxsLXBsdWdpbnMtY29udGVudC1jb250ZW50IC5jb250ZW50LWl0ZW0tY29udGVudCxcbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWNyZWF0ZS1jb250ZW50LWNvbnRlbnQgLnBsdWdpbi1pdGVtLWNvbnRlbnQsXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1jcmVhdGUtY29udGVudC1jb250ZW50IC5jb250ZW50LWl0ZW0tY29udGVudCB7XG4gIG1hcmdpbi1yaWdodDogMTVweDtcbn1cblxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktaW5zdGFsbC1wbHVnaW5zLWNvbnRlbnQtY29udGVudCAucGx1Z2luLWl0ZW0tY29udGVudC10aXRsZSxcbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWluc3RhbGwtcGx1Z2lucy1jb250ZW50LWNvbnRlbnQgLmNvbnRlbnQtaXRlbS1jb250ZW50LXRpdGxlLFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktY3JlYXRlLWNvbnRlbnQtY29udGVudCAucGx1Z2luLWl0ZW0tY29udGVudC10aXRsZSxcbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWNyZWF0ZS1jb250ZW50LWNvbnRlbnQgLmNvbnRlbnQtaXRlbS1jb250ZW50LXRpdGxlIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgbWFyZ2luOiAwIDAgNHB4IDA7XG59XG5cbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWluc3RhbGwtcGx1Z2lucy1jb250ZW50LWNvbnRlbnQgLnBsdWdpbi1pdGVtLWNvbnRlbnQtdGl0bGUgc3Bhbixcbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWluc3RhbGwtcGx1Z2lucy1jb250ZW50LWNvbnRlbnQgLmNvbnRlbnQtaXRlbS1jb250ZW50LXRpdGxlIHNwYW4sXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1jcmVhdGUtY29udGVudC1jb250ZW50IC5wbHVnaW4taXRlbS1jb250ZW50LXRpdGxlIHNwYW4sXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1jcmVhdGUtY29udGVudC1jb250ZW50IC5jb250ZW50LWl0ZW0tY29udGVudC10aXRsZSBzcGFuIHtcbiAgbWFyZ2luLWxlZnQ6IDVweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0ZGQjkwMDtcbiAgd2lkdGg6IDE2cHg7XG4gIGhlaWdodDogMTZweDtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuICBtYXJnaW4tdG9wOiAtMXB4O1xufVxuXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1pbnN0YWxsLXBsdWdpbnMtY29udGVudC1jb250ZW50IC5wbHVnaW4taXRlbS1jb250ZW50LXRpdGxlIHNwYW4gaW1nLFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktaW5zdGFsbC1wbHVnaW5zLWNvbnRlbnQtY29udGVudCAuY29udGVudC1pdGVtLWNvbnRlbnQtdGl0bGUgc3BhbiBpbWcsXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1jcmVhdGUtY29udGVudC1jb250ZW50IC5wbHVnaW4taXRlbS1jb250ZW50LXRpdGxlIHNwYW4gaW1nLFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktY3JlYXRlLWNvbnRlbnQtY29udGVudCAuY29udGVudC1pdGVtLWNvbnRlbnQtdGl0bGUgc3BhbiBpbWcge1xuICB3aWR0aDogMTBweDtcbiAgaGVpZ2h0OiAxMHB4O1xuICBtYXJnaW46IDNweDtcbn1cblxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktaW5zdGFsbC1wbHVnaW5zLWNvbnRlbnQtY29udGVudCAucGx1Z2luLWl0ZW0taW5mbyBwLFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktaW5zdGFsbC1wbHVnaW5zLWNvbnRlbnQtY29udGVudCAuY29udGVudC1pdGVtLWluZm8gcCxcbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWNyZWF0ZS1jb250ZW50LWNvbnRlbnQgLnBsdWdpbi1pdGVtLWluZm8gcCxcbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWNyZWF0ZS1jb250ZW50LWNvbnRlbnQgLmNvbnRlbnQtaXRlbS1pbmZvIHAge1xuICBjb2xvcjogIzAwYTMyYSAhaW1wb3J0YW50O1xufVxuXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1pbnN0YWxsLXBsdWdpbnMtY29udGVudC1jb250ZW50IC5wbHVnaW4taXRlbS1lcnJvciBwLFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktaW5zdGFsbC1wbHVnaW5zLWNvbnRlbnQtY29udGVudCAuY29udGVudC1pdGVtLWVycm9yIHAsXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1jcmVhdGUtY29udGVudC1jb250ZW50IC5wbHVnaW4taXRlbS1lcnJvciBwLFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktY3JlYXRlLWNvbnRlbnQtY29udGVudCAuY29udGVudC1pdGVtLWVycm9yIHAge1xuICBjb2xvcjogI2Q2MzYzOCAhaW1wb3J0YW50O1xufVxuXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1pbnN0YWxsLXBsdWdpbnMtY29udGVudC1jb250ZW50IC5wbHVnaW4taXRlbTpsYXN0LWNoaWxkLFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktaW5zdGFsbC1wbHVnaW5zLWNvbnRlbnQtY29udGVudCAuY29udGVudC1pdGVtOmxhc3QtY2hpbGQsXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1jcmVhdGUtY29udGVudC1jb250ZW50IC5wbHVnaW4taXRlbTpsYXN0LWNoaWxkLFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktY3JlYXRlLWNvbnRlbnQtY29udGVudCAuY29udGVudC1pdGVtOmxhc3QtY2hpbGQge1xuICBwYWRkaW5nLWJvdHRvbTogMzBweDtcbiAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbn1cblxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktaW5zdGFsbC1wbHVnaW5zLWNvbnRlbnQtY29udGVudCAucGx1Z2luLWl0ZW0gbGFiZWwsXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1pbnN0YWxsLXBsdWdpbnMtY29udGVudC1jb250ZW50IC5jb250ZW50LWl0ZW0gbGFiZWwsXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1jcmVhdGUtY29udGVudC1jb250ZW50IC5wbHVnaW4taXRlbSBsYWJlbCxcbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWNyZWF0ZS1jb250ZW50LWNvbnRlbnQgLmNvbnRlbnQtaXRlbSBsYWJlbCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1pbnN0YWxsLXBsdWdpbnMtY29udGVudC1jb250ZW50IC5wbHVnaW4taXRlbSBoMyxcbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWluc3RhbGwtcGx1Z2lucy1jb250ZW50LWNvbnRlbnQgLmNvbnRlbnQtaXRlbSBoMyxcbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWNyZWF0ZS1jb250ZW50LWNvbnRlbnQgLnBsdWdpbi1pdGVtIGgzLFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktY3JlYXRlLWNvbnRlbnQtY29udGVudCAuY29udGVudC1pdGVtIGgzIHtcbiAgZm9udC1zaXplOiAxOHB4O1xuICBsaW5lLWhlaWdodDogMjJweDtcbiAgY29sb3I6ICM0NDQ0NDQ7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIG1hcmdpbjogMDtcbn1cblxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktaW5zdGFsbC1wbHVnaW5zLWNvbnRlbnQtY29udGVudCAucGx1Z2luLWl0ZW0gcCxcbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWluc3RhbGwtcGx1Z2lucy1jb250ZW50LWNvbnRlbnQgLmNvbnRlbnQtaXRlbSBwLFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktY3JlYXRlLWNvbnRlbnQtY29udGVudCAucGx1Z2luLWl0ZW0gcCxcbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWNyZWF0ZS1jb250ZW50LWNvbnRlbnQgLmNvbnRlbnQtaXRlbSBwIHtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMTdweDtcbiAgY29sb3I6ICM3Nzc3Nzc7XG4gIG1hcmdpbjogMCAwIDZweCAwO1xufVxuXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1pbnN0YWxsLXBsdWdpbnMtY29udGVudC1jb250ZW50IC5wbHVnaW4taXRlbSBwOmxhc3QtY2hpbGQsXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1pbnN0YWxsLXBsdWdpbnMtY29udGVudC1jb250ZW50IC5jb250ZW50LWl0ZW0gcDpsYXN0LWNoaWxkLFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktY3JlYXRlLWNvbnRlbnQtY29udGVudCAucGx1Z2luLWl0ZW0gcDpsYXN0LWNoaWxkLFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktY3JlYXRlLWNvbnRlbnQtY29udGVudCAuY29udGVudC1pdGVtIHA6bGFzdC1jaGlsZCB7XG4gIG1hcmdpbjogMDtcbn1cblxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktaW5zdGFsbC1wbHVnaW5zLWNvbnRlbnQtY29udGVudCAucGx1Z2luLWl0ZW0gLnBsdWdpbi1pdGVtLWNoZWNrYm94IC5jaGVja2JveCxcbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWluc3RhbGwtcGx1Z2lucy1jb250ZW50LWNvbnRlbnQgLnBsdWdpbi1pdGVtIC5jb250ZW50LWl0ZW0tY2hlY2tib3ggLmNoZWNrYm94LFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktaW5zdGFsbC1wbHVnaW5zLWNvbnRlbnQtY29udGVudCAuY29udGVudC1pdGVtIC5wbHVnaW4taXRlbS1jaGVja2JveCAuY2hlY2tib3gsXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1pbnN0YWxsLXBsdWdpbnMtY29udGVudC1jb250ZW50IC5jb250ZW50LWl0ZW0gLmNvbnRlbnQtaXRlbS1jaGVja2JveCAuY2hlY2tib3gsXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1jcmVhdGUtY29udGVudC1jb250ZW50IC5wbHVnaW4taXRlbSAucGx1Z2luLWl0ZW0tY2hlY2tib3ggLmNoZWNrYm94LFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktY3JlYXRlLWNvbnRlbnQtY29udGVudCAucGx1Z2luLWl0ZW0gLmNvbnRlbnQtaXRlbS1jaGVja2JveCAuY2hlY2tib3gsXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1jcmVhdGUtY29udGVudC1jb250ZW50IC5jb250ZW50LWl0ZW0gLnBsdWdpbi1pdGVtLWNoZWNrYm94IC5jaGVja2JveCxcbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWNyZWF0ZS1jb250ZW50LWNvbnRlbnQgLmNvbnRlbnQtaXRlbSAuY29udGVudC1pdGVtLWNoZWNrYm94IC5jaGVja2JveCB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGJhY2tncm91bmQ6ICNmMWYxZjE7XG4gIHdpZHRoOiAzMnB4O1xuICBoZWlnaHQ6IDMycHg7XG4gIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkZGRkZGQ7XG59XG5cbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWluc3RhbGwtcGx1Z2lucy1jb250ZW50LWNvbnRlbnQgLnBsdWdpbi1pdGVtIC5wbHVnaW4taXRlbS1jaGVja2JveCAuY2hlY2tib3ggLm9jZGktY2hlY2staWNvbixcbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWluc3RhbGwtcGx1Z2lucy1jb250ZW50LWNvbnRlbnQgLnBsdWdpbi1pdGVtIC5jb250ZW50LWl0ZW0tY2hlY2tib3ggLmNoZWNrYm94IC5vY2RpLWNoZWNrLWljb24sXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1pbnN0YWxsLXBsdWdpbnMtY29udGVudC1jb250ZW50IC5jb250ZW50LWl0ZW0gLnBsdWdpbi1pdGVtLWNoZWNrYm94IC5jaGVja2JveCAub2NkaS1jaGVjay1pY29uLFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktaW5zdGFsbC1wbHVnaW5zLWNvbnRlbnQtY29udGVudCAuY29udGVudC1pdGVtIC5jb250ZW50LWl0ZW0tY2hlY2tib3ggLmNoZWNrYm94IC5vY2RpLWNoZWNrLWljb24sXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1jcmVhdGUtY29udGVudC1jb250ZW50IC5wbHVnaW4taXRlbSAucGx1Z2luLWl0ZW0tY2hlY2tib3ggLmNoZWNrYm94IC5vY2RpLWNoZWNrLWljb24sXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1jcmVhdGUtY29udGVudC1jb250ZW50IC5wbHVnaW4taXRlbSAuY29udGVudC1pdGVtLWNoZWNrYm94IC5jaGVja2JveCAub2NkaS1jaGVjay1pY29uLFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktY3JlYXRlLWNvbnRlbnQtY29udGVudCAuY29udGVudC1pdGVtIC5wbHVnaW4taXRlbS1jaGVja2JveCAuY2hlY2tib3ggLm9jZGktY2hlY2staWNvbixcbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWNyZWF0ZS1jb250ZW50LWNvbnRlbnQgLmNvbnRlbnQtaXRlbSAuY29udGVudC1pdGVtLWNoZWNrYm94IC5jaGVja2JveCAub2NkaS1jaGVjay1pY29uIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMjBweDtcbiAgbWFyZ2luOiA2cHg7XG59XG5cbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWluc3RhbGwtcGx1Z2lucy1jb250ZW50LWNvbnRlbnQgLnBsdWdpbi1pdGVtIC5wbHVnaW4taXRlbS1jaGVja2JveCAuY2hlY2tib3ggLm9jZGktbG9jay1pY29uLFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktaW5zdGFsbC1wbHVnaW5zLWNvbnRlbnQtY29udGVudCAucGx1Z2luLWl0ZW0gLmNvbnRlbnQtaXRlbS1jaGVja2JveCAuY2hlY2tib3ggLm9jZGktbG9jay1pY29uLFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktaW5zdGFsbC1wbHVnaW5zLWNvbnRlbnQtY29udGVudCAuY29udGVudC1pdGVtIC5wbHVnaW4taXRlbS1jaGVja2JveCAuY2hlY2tib3ggLm9jZGktbG9jay1pY29uLFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktaW5zdGFsbC1wbHVnaW5zLWNvbnRlbnQtY29udGVudCAuY29udGVudC1pdGVtIC5jb250ZW50LWl0ZW0tY2hlY2tib3ggLmNoZWNrYm94IC5vY2RpLWxvY2staWNvbixcbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWNyZWF0ZS1jb250ZW50LWNvbnRlbnQgLnBsdWdpbi1pdGVtIC5wbHVnaW4taXRlbS1jaGVja2JveCAuY2hlY2tib3ggLm9jZGktbG9jay1pY29uLFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktY3JlYXRlLWNvbnRlbnQtY29udGVudCAucGx1Z2luLWl0ZW0gLmNvbnRlbnQtaXRlbS1jaGVja2JveCAuY2hlY2tib3ggLm9jZGktbG9jay1pY29uLFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktY3JlYXRlLWNvbnRlbnQtY29udGVudCAuY29udGVudC1pdGVtIC5wbHVnaW4taXRlbS1jaGVja2JveCAuY2hlY2tib3ggLm9jZGktbG9jay1pY29uLFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktY3JlYXRlLWNvbnRlbnQtY29udGVudCAuY29udGVudC1pdGVtIC5jb250ZW50LWl0ZW0tY2hlY2tib3ggLmNoZWNrYm94IC5vY2RpLWxvY2staWNvbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDE0cHg7XG4gIGhlaWdodDogMTdweDtcbiAgYm90dG9tOiAtNXB4O1xuICByaWdodDogLTJweDtcbn1cblxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktaW5zdGFsbC1wbHVnaW5zLWNvbnRlbnQtY29udGVudCAucGx1Z2luLWl0ZW0gLnBsdWdpbi1pdGVtLWNoZWNrYm94IGlucHV0W3R5cGU9Y2hlY2tib3hdLFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktaW5zdGFsbC1wbHVnaW5zLWNvbnRlbnQtY29udGVudCAucGx1Z2luLWl0ZW0gLmNvbnRlbnQtaXRlbS1jaGVja2JveCBpbnB1dFt0eXBlPWNoZWNrYm94XSxcbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWluc3RhbGwtcGx1Z2lucy1jb250ZW50LWNvbnRlbnQgLmNvbnRlbnQtaXRlbSAucGx1Z2luLWl0ZW0tY2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF0sXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1pbnN0YWxsLXBsdWdpbnMtY29udGVudC1jb250ZW50IC5jb250ZW50LWl0ZW0gLmNvbnRlbnQtaXRlbS1jaGVja2JveCBpbnB1dFt0eXBlPWNoZWNrYm94XSxcbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWNyZWF0ZS1jb250ZW50LWNvbnRlbnQgLnBsdWdpbi1pdGVtIC5wbHVnaW4taXRlbS1jaGVja2JveCBpbnB1dFt0eXBlPWNoZWNrYm94XSxcbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWNyZWF0ZS1jb250ZW50LWNvbnRlbnQgLnBsdWdpbi1pdGVtIC5jb250ZW50LWl0ZW0tY2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF0sXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1jcmVhdGUtY29udGVudC1jb250ZW50IC5jb250ZW50LWl0ZW0gLnBsdWdpbi1pdGVtLWNoZWNrYm94IGlucHV0W3R5cGU9Y2hlY2tib3hdLFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktY3JlYXRlLWNvbnRlbnQtY29udGVudCAuY29udGVudC1pdGVtIC5jb250ZW50LWl0ZW0tY2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF0ge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1pbnN0YWxsLXBsdWdpbnMtY29udGVudC1jb250ZW50IC5wbHVnaW4taXRlbSAucGx1Z2luLWl0ZW0tY2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCArIC5jaGVja2JveDo6YWZ0ZXIsXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1pbnN0YWxsLXBsdWdpbnMtY29udGVudC1jb250ZW50IC5wbHVnaW4taXRlbSAuY29udGVudC1pdGVtLWNoZWNrYm94IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQgKyAuY2hlY2tib3g6OmFmdGVyLFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktaW5zdGFsbC1wbHVnaW5zLWNvbnRlbnQtY29udGVudCAuY29udGVudC1pdGVtIC5wbHVnaW4taXRlbS1jaGVja2JveCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkICsgLmNoZWNrYm94OjphZnRlcixcbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWluc3RhbGwtcGx1Z2lucy1jb250ZW50LWNvbnRlbnQgLmNvbnRlbnQtaXRlbSAuY29udGVudC1pdGVtLWNoZWNrYm94IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQgKyAuY2hlY2tib3g6OmFmdGVyLFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktY3JlYXRlLWNvbnRlbnQtY29udGVudCAucGx1Z2luLWl0ZW0gLnBsdWdpbi1pdGVtLWNoZWNrYm94IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQgKyAuY2hlY2tib3g6OmFmdGVyLFxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktY3JlYXRlLWNvbnRlbnQtY29udGVudCAucGx1Z2luLWl0ZW0gLmNvbnRlbnQtaXRlbS1jaGVja2JveCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkICsgLmNoZWNrYm94OjphZnRlcixcbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWNyZWF0ZS1jb250ZW50LWNvbnRlbnQgLmNvbnRlbnQtaXRlbSAucGx1Z2luLWl0ZW0tY2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCArIC5jaGVja2JveDo6YWZ0ZXIsXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1jcmVhdGUtY29udGVudC1jb250ZW50IC5jb250ZW50LWl0ZW0gLmNvbnRlbnQtaXRlbS1jaGVja2JveCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkICsgLmNoZWNrYm94OjphZnRlciB7XG4gIGNvbnRlbnQ6ICcnO1xuICBkaXNwbGF5OiBibG9jaztcbiAgZm9udC1zaXplOiAxMHB4O1xuICBiYWNrZ3JvdW5kOiAjMDA3Y2JhO1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAyMHB4O1xuICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICBtYXJnaW46IDVweDtcbn1cblxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktaW5zdGFsbC1wbHVnaW5zLWNvbnRlbnQtY29udGVudC1ub3RpY2UsXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1jcmVhdGUtY29udGVudC1jb250ZW50LW5vdGljZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIHBhZGRpbmc6IDI1cHg7XG4gIGJhY2tncm91bmQ6ICNFNUY1RkE7XG4gIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgbWFyZ2luOiAtMTBweCAzMHB4IDMwcHggMzBweDtcbn1cblxuLm9jZGlfX2NvbnRlbnQtY29udGFpbmVyLWNvbnRlbnQgLm9jZGktaW5zdGFsbC1wbHVnaW5zLWNvbnRlbnQtY29udGVudC1ub3RpY2UgcCxcbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWNyZWF0ZS1jb250ZW50LWNvbnRlbnQtbm90aWNlIHAge1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICBjb2xvcjogIzQ0NDQ0NDtcbiAgbWFyZ2luOiAwIDAgMTBweCAwO1xufVxuXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1pbnN0YWxsLXBsdWdpbnMtY29udGVudC1jb250ZW50LW5vdGljZSBwOmxhc3QtY2hpbGQsXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1jcmVhdGUtY29udGVudC1jb250ZW50LW5vdGljZSBwOmxhc3QtY2hpbGQge1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1pbnN0YWxsLXBsdWdpbnMtY29udGVudC1mb290ZXIsXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1jcmVhdGUtY29udGVudC1mb290ZXIge1xuICBwYWRkaW5nOiAzMHB4O1xuICBiYWNrZ3JvdW5kOiAjZmFmYWZhO1xuICBib3JkZXItdG9wOiAxcHggc29saWQgI2RkZGRkZDtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1pbnN0YWxsLXBsdWdpbnMtY29udGVudC1mb290ZXIgLmJ1dHRvbixcbi5vY2RpX19jb250ZW50LWNvbnRhaW5lci1jb250ZW50IC5vY2RpLWNyZWF0ZS1jb250ZW50LWZvb3RlciAuYnV0dG9uIHtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBsaW5lLWhlaWdodDogMTlweDtcbiAgcGFkZGluZzogMTBweCAxOHB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1pbnN0YWxsLXBsdWdpbnMtY29udGVudC1mb290ZXIgLmJ1dHRvbiBpbWcsXG4ub2NkaV9fY29udGVudC1jb250YWluZXItY29udGVudCAub2NkaS1jcmVhdGUtY29udGVudC1mb290ZXIgLmJ1dHRvbiBpbWcge1xuICB3aWR0aDogMTZweDtcbiAgaGVpZ2h0OiBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IDVweDtcbn1cblxuLm9jZGlfX2ludHJvLXRleHQgcCB7XG4gIGZvbnQtc2l6ZTogMThweDtcbiAgbGluZS1oZWlnaHQ6IDI2cHg7XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG4gIGNvbG9yOiAjNjY2NjY2O1xuICBtYXJnaW46IDAgMCAyNHB4O1xufVxuXG4ub2NkaV9faW50cm8tdGV4dCB1bCB7XG4gIHBhZGRpbmc6IDAgNCU7XG4gIGxpc3Qtc3R5bGUtdHlwZTogc3F1YXJlO1xufVxuXG4ub2NkaV9fdGhlbWUtYWJvdXQge1xuICBtYXJnaW4tYm90dG9tOiAzMHB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG59XG5cbi5vY2RpX190aGVtZS1hYm91dC1zY3JlZW5zaG90cyB7XG4gIGZsZXg6IDExO1xuICBtYXJnaW4tcmlnaHQ6IDMwcHg7XG59XG5cbi5vY2RpX190aGVtZS1hYm91dC1zY3JlZW5zaG90cyAuc2NyZWVuc2hvdCB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG5cbi5vY2RpX190aGVtZS1hYm91dC1zY3JlZW5zaG90cyAuc2NyZWVuc2hvdCBpbWcge1xuICBib3JkZXI6IDFweCBzb2xpZCAjQ0NEMEQ0O1xuICBmaWx0ZXI6IGRyb3Atc2hhZG93KDBweCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4wNykpO1xufVxuXG4ub2NkaV9fdGhlbWUtYWJvdXQtc2NyZWVuc2hvdHMgLnNjcmVlbnNob3QuYmxhbmsge1xuICBib3JkZXI6IDFweCBzb2xpZCAjQ0NEMEQ0O1xuICBmaWx0ZXI6IGRyb3Atc2hhZG93KDBweCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4wNykpO1xuICBtaW4taGVpZ2h0OiA1MDBweDtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQWdBQUFBSUNBWUFBQURFRDc2TEFBQUFMRWxFUVZRWUdXTzhkKy9lZndZa29LaW9pTVJqWUdCQzRXSGhVSzZBOFQ4UUlKdDgvLzU5WkM0OTNBQUFRc3NLcEJLNEY1QUFBQUFBU1VWT1JLNUNZSUk9KTtcbn1cblxuLm9jZGlfX3RoZW1lLWFib3V0LXNjcmVlbnNob3RzIGltZyB7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4ub2NkaV9fdGhlbWUtYWJvdXQtaW5mbyB7XG4gIGZsZXg6IDEwO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG59XG5cbi5vY2RpX190aGVtZS1hYm91dC1pbmZvIC50aGVtZS10aXRsZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcbn1cblxuLm9jZGlfX3RoZW1lLWFib3V0LWluZm8gLnRoZW1lLXRpdGxlIC50aGVtZS1uYW1lIHtcbiAgbWFyZ2luLWJvdHRvbTogMTZweDtcbn1cblxuLm9jZGlfX3RoZW1lLWFib3V0LWluZm8gLnRoZW1lLXRpdGxlIC50aGVtZS12ZXJzaW9uIHtcbiAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gIGNvbG9yOiAjNzI3NzdDO1xuICBmb250LXNpemU6IDEzcHg7XG4gIGxpbmUtaGVpZ2h0OiAxNnB4O1xufVxuXG4ub2NkaV9fdGhlbWUtYWJvdXQtaW5mbyAudGhlbWUtYXV0aG9yIHtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBsaW5lLWhlaWdodDogMTlweDtcbiAgY29sb3I6ICM3Mjc3N0M7XG4gIG1hcmdpbjogMCAwIDIwcHg7XG59XG5cbi5vY2RpX190aGVtZS1hYm91dC1pbmZvIC50aGVtZS1kZXNjcmlwdGlvbiB7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgbGluZS1oZWlnaHQ6IDI0cHg7XG4gIGNvbG9yOiAjNTU1NTU1O1xuICBtYXJnaW46IDAgMCAyMHB4O1xufVxuXG4ub2NkaV9fdGhlbWUtYWJvdXQtaW5mbyAudGhlbWUtdGFncyB7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gIGNvbG9yOiAjNTU1NTU1O1xuICBtYXJnaW46IDRweCAwIDA7XG59XG5cbi5vY2RpX190aGVtZS1hYm91dC1pbmZvIC50aGVtZS10YWdzIHNwYW4ge1xuICBmb250LXdlaWdodDogNzAwO1xufVxuXG4ub2NkaV9fdGhlbWUtYWJvdXQtaW5mbyAub2NkaS1pbXBvcnQtbW9kZS1zd2l0Y2gge1xuICBmbG9hdDogcmlnaHQ7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGluZS1oZWlnaHQ6IDE3cHg7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA4ODBweCkge1xuICAub2NkaV9fdGhlbWUtYWJvdXQge1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIH1cbiAgLm9jZGlfX3RoZW1lLWFib3V0LXNjcmVlbnNob3RzIHtcbiAgICBtYXJnaW46IDAgMCAzMHB4IDA7XG4gIH1cbn1cblxuLm9jZGlfX2RlbW8taW1wb3J0LWZpbGVzIHtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi5vY2RpX19kZW1vLWltcG9ydC1wcmV2aWV3LWltYWdlLW1lc3NhZ2Uge1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG59XG5cbi5vY2RpX190aXRsZTpiZWZvcmUge1xuICB3aWR0aDogYXV0bztcbiAgaGVpZ2h0OiBhdXRvO1xuICBmb250LXNpemU6IGluaGVyaXQ7XG59XG5cbi5vY2RpX19tdWx0aS1zZWxlY3QtaW1wb3J0LCAub2NkaV9fZGVtby1pbXBvcnQtbm90aWNlOm5vdCg6ZW1wdHkpIHtcbiAgcGFkZGluZzogMjBweDtcbiAgbWFyZ2luOiAzMHB4IDA7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGluZS1oZWlnaHQ6IDE5cHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNlNWU1ZTU7XG59XG5cbi5vY2RpX19maWxlLXVwbG9hZC1jb250YWluZXIge1xuICBib3JkZXI6IDFweCBzb2xpZCAjZGRkZGRkO1xuICBib3gtc2hhZG93OiAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjA3KTtcbn1cblxuLm9jZGlfX2ZpbGUtdXBsb2FkLWNvbnRhaW5lci0taGVhZGVyIHtcbiAgcGFkZGluZzogMzBweDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZGRkZGQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG59XG5cbi5vY2RpX19maWxlLXVwbG9hZC1jb250YWluZXItLWhlYWRlciBoMiB7XG4gIGZvbnQtc2l6ZTogMjJweDtcbiAgbGluZS1oZWlnaHQ6IDI3cHg7XG4gIG1hcmdpbjogMDtcbn1cblxuLm9jZGlfX2ZpbGUtdXBsb2FkLWNvbnRhaW5lci1pdGVtcyB7XG4gIHBhZGRpbmc6IDMwcHggMzBweCAwIDMwcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbn1cblxuLm9jZGlfX2ZpbGUtdXBsb2FkLWNvbnRhaW5lci1pdGVtcy0tc2Vjb25kLXJvdyB7XG4gIHBhZGRpbmctdG9wOiAwO1xufVxuXG4ub2NkaV9fZmlsZS11cGxvYWQtY29udGFpbmVyLWl0ZW1zIC5vY2RpX19jYXJkIHtcbiAgYm94LXNoYWRvdzogbm9uZTtcbn1cblxuLm9jZGlfX2ZpbGUtdXBsb2FkLWNvbnRhaW5lci1pdGVtcyAub2NkaV9fY2FyZC1jb250ZW50IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4ub2NkaV9fZmlsZS11cGxvYWQtY29udGFpbmVyLWl0ZW1zIC5vY2RpX19jYXJkLWNvbnRlbnQtaW5mbyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDEwcHg7XG4gIHRvcDogMTBweDtcbn1cblxuLm9jZGlfX2ZpbGUtdXBsb2FkLWNvbnRhaW5lci1pdGVtcyAub2NkaV9fY2FyZC1jb250ZW50LWluZm8gaW1nIHtcbiAgd2lkdGg6IDE2cHg7XG4gIGhlaWdodDogMTZweDtcbn1cblxuLm9jZGlfX2ZpbGUtdXBsb2FkLWNvbnRhaW5lci0tZm9vdGVyIHtcbiAgcGFkZGluZzogMzBweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYTtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkZGRkZGQ7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLm9jZGlfX2RlbW8taW1wb3J0LW5vdGljZTpub3QoOmVtcHR5KSB7XG4gIGJvcmRlcjogMDtcbiAgYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCAjMDBhMGQyO1xuICBib3gtc2hhZG93OiAwIDFweCAxcHggMCByZ2JhKDAsIDAsIDAsIDAuMSk7XG59XG5cbltkaXI9XCJydGxcIl0gLm9jZGlfX2RlbW8taW1wb3J0LW5vdGljZTpub3QoOmVtcHR5KSB7XG4gIGJvcmRlcjogMDtcbiAgYm9yZGVyLXJpZ2h0OiA0cHggc29saWQgIzAwYTBkMjtcbn1cblxuLm9jZGlfX2J1dHRvbi1jb250YWluZXIge1xuICBtYXJnaW4tdG9wOiAzMHB4O1xufVxuXG4ub2NkaV9fYWpheC1sb2FkZXIge1xuICBmb250LXNpemU6IDEuNWVtO1xufVxuXG4ub2NkaV9fYWpheC1sb2FkZXIgLnNwaW5uZXIge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZsb2F0OiBub25lO1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICBtYXJnaW4tYm90dG9tOiA2cHg7XG59XG5cbi5vY2RpX19nbC1uYXZpZ2F0aW9uIGxpIGEge1xuICBib3gtc2hhZG93OiBub25lO1xufVxuXG4ub2NkaV9fZ2wtaXRlbS1jb250YWluZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG59XG5cbi5vY2RpX19nbC1pdGVtIHtcbiAgZmxleDogMCAwIDEwMCU7XG4gIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG4gIGJveC1zaGFkb3c6IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDcpO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhO1xufVxuXG4ub2NkaV9fZ2wtaXRlbS1pbWFnZS1jb250YWluZXIge1xuICBkaXNwbGF5OiBibG9jaztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2UtaW4tb3V0O1xufVxuXG4ub2NkaV9fZ2wtaXRlbS1pbWFnZS1jb250YWluZXI6OmFmdGVyIHtcbiAgY29udGVudDogXCJcIjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmctdG9wOiA2Ni42NjY2NiU7XG59XG5cbi5vY2RpX19nbC1pdGVtLWltYWdlIHtcbiAgaGVpZ2h0OiBhdXRvO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIHRvcDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyBlYXNlLWluLW91dDtcbn1cblxuLm9jZGlfX2dsLWl0ZW0taW1hZ2UtLW5vLWltYWdlIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogNTAlO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA0NSU7XG4gIHJpZ2h0OiAyNSU7XG4gIGxlZnQ6IDI1JTtcbn1cblxuLm9jZGlfX2dsLWl0ZW0tZm9vdGVyIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiA4cHggMTBweDtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkZGRkZGQ7XG4gIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42NSk7XG59XG5cbi5vY2RpX19nbC1pdGVtLXRpdGxlIHtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW46IDA7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgbGluZS1oZWlnaHQ6IDE5cHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgY29sb3I6ICMyMzI4MmQ7XG4gIHBhZGRpbmc6IDVweCAwIDZweDtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDc4MnB4KSB7XG4gIC5vY2RpX19nbC1pdGVtLXRpdGxlIHtcbiAgICBwYWRkaW5nOiAxMnB4IDAgMTNweDtcbiAgfVxufVxuXG4ub2NkaV9fZ2wtaXRlbS1idXR0b25zIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4ub2NkaV9fZ2wtaXRlbS1idXR0b24gKyAub2NkaV9fZ2wtaXRlbS1idXR0b24ge1xuICBtYXJnaW4tbGVmdDogMTVweDtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDc4MnB4KSB7XG4gIC5vY2RpX19nbC1pdGVtLWJ1dHRvbiB7XG4gICAgd2lkdGg6IGNhbGMoNTAlIC0gMTBweCk7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgfVxuICAub2NkaV9fZ2wtaXRlbS1idXR0b24gKyAub2NkaV9fZ2wtaXRlbS1idXR0b24ge1xuICAgIGZsb2F0OiBsZWZ0O1xuICB9XG59XG5cbi5vY2RpX19nbC1pdGVtOmhvdmVyIC5vY2RpX19nbC1pdGVtLWJ1dHRvbnMge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLm9jZGlfX2dsLWl0ZW06aG92ZXIgLm9jZGlfX2dsLWl0ZW0tdGl0bGUge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4ub2NkaV9fZ2wtaXRlbTpob3ZlciAub2NkaV9fZ2wtaXRlbS1mb290ZXIge1xuICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xufVxuXG4ub2NkaV9fZ2wtaGVhZGVyIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogY2FsYygxMDAlIC0gMjRweCk7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNjY2QwZDQ7XG4gIGJveC1zaGFkb3c6IDBweCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4wNyk7XG4gIG1hcmdpbi1ib3R0b206IDMwcHg7XG4gIHBhZGRpbmc6IDAgMTFweDtcbn1cblxuLm9jZGlfX2dsLW5hdmlnYXRpb24ge1xuICBmb250LXNpemU6IDEzcHg7XG4gIGxpbmUtaGVpZ2h0OiAxNnB4O1xuICB3aWR0aDogMTAwJTtcbiAgZmxvYXQ6IGxlZnQ7XG59XG5cbi5vY2RpX19nbC1uYXZpZ2F0aW9uIHVsIHtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5vY2RpX19nbC1uYXZpZ2F0aW9uIGxpIHtcbiAgbWFyZ2luOiAwO1xufVxuXG4ub2NkaV9fZ2wtbmF2aWdhdGlvbiBsaS5hY3RpdmUgYSBzcGFuLFxuLm9jZGlfX2dsLW5hdmlnYXRpb24gbGkuYWN0aXZlIGE6aG92ZXIgc3BhbiB7XG4gIHBhZGRpbmctYm90dG9tOiAxNHB4O1xuICBib3JkZXItYm90dG9tOiA0cHggc29saWQgIzY2NjY2Njtcbn1cblxuLm9jZGlfX2dsLW5hdmlnYXRpb24gbGkgYSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgY29sb3I6ICMyMzI4MkQ7XG4gIHBhZGRpbmc6IDE4cHggMTBweDtcbn1cblxuLm9jZGlfX2dsLW5hdmlnYXRpb24gbGkgYSBzcGFuIHtcbiAgcGFkZGluZy1ib3R0b206IDE0cHg7XG4gIGJvcmRlci1ib3R0b206IDRweCBzb2xpZCAjZmZmZmZmO1xufVxuXG4ub2NkaV9fZ2wtbmF2aWdhdGlvbiBsaSBhOmhvdmVyIHtcbiAgY29sb3I6ICMwMGEwZDI7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLm9jZGlfX2dsLW5hdmlnYXRpb24gbGkgYTpob3ZlciBzcGFuIHtcbiAgYm9yZGVyLWJvdHRvbTogNHB4IHNvbGlkICNmZmZmZmY7XG59XG5cbi5vY2RpX19nbC1zZWFyY2gtaW5wdXQge1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luOiAxMHB4IDA7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgbGluZS1oZWlnaHQ6IDE2cHg7XG4gIGNvbG9yOiAjNzI3NzdDICFpbXBvcnRhbnQ7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xuICAub2NkaV9fZ2wtbmF2aWdhdGlvbiB7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSAtIDI4MHB4KTtcbiAgfVxuICAub2NkaV9fZ2wtbmF2aWdhdGlvbiBsaSB7XG4gICAgbWFyZ2luOiAwIDE1cHg7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gIH1cbiAgLm9jZGlfX2dsLW5hdmlnYXRpb24gbGkgYSB7XG4gICAgcGFkZGluZzogMThweCAxMHB4O1xuICB9XG4gIC5vY2RpX19nbC1zZWFyY2gtaW5wdXQge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB3aWR0aDogMjgwcHg7XG4gICAgaGVpZ2h0OiAzMHB4O1xuICAgIG1hcmdpbjogMDtcbiAgICBtYXJnaW4tdG9wOiAxMXB4O1xuICB9XG4gIC5vY2RpX19nbC1pdGVtLWNvbnRhaW5lciB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMjBweDtcbiAgfVxuICAub2NkaV9fZ2wtaXRlbSB7XG4gICAgZmxleDogMCAwIGNhbGMoNTAlIC0gMjBweCk7XG4gICAgbWFyZ2luLXJpZ2h0OiAyMHB4O1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiAxMTIwcHgpIHtcbiAgLm9jZGlfX2dsLWl0ZW0tY29udGFpbmVyIHtcbiAgICBtYXJnaW4tcmlnaHQ6IC0zMHB4O1xuICB9XG4gIC5vY2RpX19nbC1pdGVtIHtcbiAgICBmbGV4OiAwIDAgY2FsYygzMy4zMyUgLSAzMHB4KTtcbiAgICBtYXJnaW4tYm90dG9tOiAzMHB4O1xuICAgIG1hcmdpbi1yaWdodDogMzBweDtcbiAgfVxufVxuXG4ub2NkaV9fY2FyZCB7XG4gIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2RkZGRkZDtcbiAgYm94LXNoYWRvdzogMHB4IDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjA3KTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xufVxuXG4ub2NkaV9fY2FyZC1jb250ZW50IHtcbiAgcGFkZGluZzogMzBweDtcbn1cblxuLm9jZGlfX2NhcmQtY29udGVudCAub2NkaS1pY29uLS1jb250ZW50IHtcbiAgd2lkdGg6IDUzcHg7XG4gIGhlaWdodDogNTNweDtcbn1cblxuLm9jZGlfX2NhcmQtY29udGVudCAub2NkaS1pY29uLS13aWRnZXRzIHtcbiAgd2lkdGg6IDU2cHg7XG4gIGhlaWdodDogNDlweDtcbn1cblxuLm9jZGlfX2NhcmQtY29udGVudCAub2NkaS1pY29uLS1icnVzaCB7XG4gIHdpZHRoOiA1NXB4O1xuICBoZWlnaHQ6IDUycHg7XG59XG5cbi5vY2RpX19jYXJkLWNvbnRlbnQgLm9jZGktaWNvbi0tcmVkdXgge1xuICB3aWR0aDogODJweDtcbiAgaGVpZ2h0OiA3MHB4O1xufVxuXG4ub2NkaV9fY2FyZC1jb250ZW50IC5vY2RpLWljb24tLXBsdWdpbnMge1xuICB3aWR0aDogNjVweDtcbiAgaGVpZ2h0OiA2NHB4O1xufVxuXG4ub2NkaV9fY2FyZC1jb250ZW50IC5vY2RpLWljb24tLWNvcHkge1xuICB3aWR0aDogNDJweDtcbiAgaGVpZ2h0OiA1MnB4O1xufVxuXG4ub2NkaV9fY2FyZC1jb250ZW50IC5vY2RpLWljb24tLWxheW91dCB7XG4gIHdpZHRoOiA1M3B4O1xuICBoZWlnaHQ6IDUycHg7XG59XG5cbi5vY2RpX19jYXJkLWNvbnRlbnQgLm9jZGktaWNvbi1jb250YWluZXIge1xuICBoZWlnaHQ6IDcwcHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4ub2NkaV9fY2FyZC1jb250ZW50IGgzIHtcbiAgbWFyZ2luOiA1cHggMDtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBsaW5lLWhlaWdodDogMjBweDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbn1cblxuLm9jZGlfX2NhcmQtY29udGVudCBwIHtcbiAgbWFyZ2luOiAwO1xuICBmb250LXNpemU6IDEzcHg7XG4gIGxpbmUtaGVpZ2h0OiAxNnB4O1xuICBjb2xvcjogIzY2NjY2Njtcbn1cblxuLm9jZGlfX2NhcmQtZm9vdGVyIHtcbiAgYmFja2dyb3VuZDogI2ZhZmFmYTtcbiAgYm94LXNoYWRvdzogMHB4IC0xcHggMHB4ICNEREREREQ7XG4gIHBhZGRpbmc6IDEwcHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4ub2NkaV9fY2FyZC1mb290ZXIgLmJ1dHRvbi1zZWNvbmRhcnkge1xuICBiYWNrZ3JvdW5kOiAjZmFmYWZhO1xufVxuXG4ub2NkaV9fY2FyZC1mb290ZXIgaW5wdXRbdHlwZT1cImZpbGVcIl0ge1xuICB3aWR0aDogMjAwcHg7XG4gIHBhZGRpbmc6IDRweCAwO1xufVxuXG4ub2NkaV9fY2FyZC1mb290ZXIgLmJ1dHRvbi1kaXNhYmxlZCB7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG59XG5cbi5vY2RpX19jYXJkLS10aHJlZSB7XG4gIGZsZXg6IDAgMCAxMDAlO1xuICBtYXJnaW4tYm90dG9tOiAyMHB4O1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLm9jZGlfX2NhcmQtLXRocmVlIHtcbiAgICBmbGV4OiAwIDAgY2FsYyg1MCUgLSAxMHB4KTtcbiAgICBtYXJnaW4tcmlnaHQ6IDIwcHg7XG4gIH1cbiAgLm9jZGlfX2NhcmQtLXRocmVlOm50aC1jaGlsZCgybikge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTEyMHB4KSB7XG4gIC5vY2RpX19jYXJkLS10aHJlZSB7XG4gICAgZmxleDogMCAwIGNhbGMoMzMuMzMlIC0gMjBweCk7XG4gICAgbWFyZ2luLWJvdHRvbTogMzBweDtcbiAgICBtYXJnaW4tcmlnaHQ6IDMwcHg7XG4gIH1cbiAgLm9jZGlfX2NhcmQtLXRocmVlOm50aC1jaGlsZCgybikge1xuICAgIG1hcmdpbi1yaWdodDogMzBweDtcbiAgfVxuICAub2NkaV9fY2FyZC0tdGhyZWU6bnRoLWNoaWxkKDNuKSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xuICB9XG59XG5cbi5vY2RpX19jYXJkLS1mb3VyIHtcbiAgZmxleDogMCAwIDEwMCU7XG4gIG1hcmdpbi1ib3R0b206IDIwcHg7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAub2NkaV9fY2FyZC0tZm91ciB7XG4gICAgZmxleDogMCAwIGNhbGMoNTAlIC0gMTBweCk7XG4gICAgbWFyZ2luLXJpZ2h0OiAyMHB4O1xuICB9XG4gIC5vY2RpX19jYXJkLS1mb3VyOm50aC1jaGlsZCgybikge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTEyMHB4KSB7XG4gIC5vY2RpX19jYXJkLS1mb3VyIHtcbiAgICBmbGV4OiAwIDAgY2FsYyg1MCUgLSAxNXB4KTtcbiAgICBtYXJnaW4tYm90dG9tOiAzMHB4O1xuICAgIG1hcmdpbi1yaWdodDogMzBweDtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIG9jZGktZmFkZSB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbn1cblxuLm9jZGktaXMtZmFkZW91dCB7XG4gIGFuaW1hdGlvbjogb2NkaS1mYWRlIGxpbmVhciAyMDBtcyAxIGZvcndhcmRzO1xufVxuXG4ub2NkaS1pcy1mYWRlaW4ge1xuICBhbmltYXRpb246IG9jZGktZmFkZSBsaW5lYXIgMjAwbXMgMSByZXZlcnNlIGZvcndhcmRzO1xufVxuXG4ub2NkaV9fbW9kYWwtaW1hZ2UtY29udGFpbmVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTgwcHg7XG4gIG1hcmdpbjogMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLm9jZGlfX21vZGFsLWltYWdlLWNvbnRhaW5lciBpbWcge1xuICB3aWR0aDogMTAwJTtcbn1cblxuLm9jZGlfX21vZGFsLWl0ZW0tdGl0bGUge1xuICBtYXJnaW4tdG9wOiAwLjVlbTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi5vY2RpX19tb2RhbC1ub3RpY2Uub2NkaV9fZGVtby1pbXBvcnQtbm90aWNlOm5vdCg6ZW1wdHkpIHtcbiAgYm9yZGVyOiAxcHggc29saWQgI2U1ZTVlNTtcbiAgYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCAjMDBhMGQyO1xuICBtYXJnaW46IDIwcHggMCAwO1xufVxuXG4ub2NkaS1sb2FkaW5nIHtcbiAgYW5pbWF0aW9uOiAwLjY1cyBsaW5lYXIgaW5maW5pdGUgb2NkaS1sb2FkaW5nLXNwaW47XG59XG5cbi5vY2RpLWxvYWRpbmctbWQge1xuICB3aWR0aDogMzJweDtcbiAgaGVpZ2h0OiAzMnB4O1xufVxuXG4ub2NkaS1sb2FkaW5nLXNtIHtcbiAgd2lkdGg6IDE2cHg7XG4gIGhlaWdodDogMTZweDtcbn1cblxuQGtleWZyYW1lcyBvY2RpLWxvYWRpbmctc3BpbiB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZVooMjcwZGVnKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZVooNjMwZGVnKTtcbiAgfVxufVxuIl19 */
assets/css/main.min.css ADDED
@@ -0,0 +1 @@
 
1
+ #wpcontent{padding-left:0}.ocdi{max-width:none}.ocdi h2{text-align:inherit;font-size:32px;line-height:39px;font-weight:500;margin-bottom:20px}.ocdi h2:first-child,.ocdi h3:first-child{margin-top:0}.ocdi hr{margin:30px 0}.ocdi .notice,.ocdi .update-nag,.ocdi #update-nag{display:block !important;margin:0 0 30px 0}.ocdi-notices-wrapper{display:none}.ocdi-notices-wrapper .notice,.ocdi-notices-wrapper .update-nag,.ocdi-notices-wrapper #update-nag{margin:0 0 15px 0}.ocdi-notices-wrapper .notice:last-child,.ocdi-notices-wrapper .update-nag:last-child,.ocdi-notices-wrapper #update-nag:last-child{margin-bottom:30px}.ocdi__admin-notices .ocdi-notices-wrapper{display:block}.ocdi-button-disabled{opacity:0.6 !important;cursor:not-allowed !important}.ocdi-content-notice{padding:25px;background:#E5F5FA;border-radius:6px;margin:30px}.ocdi-content-notice p{font-size:14px;line-height:24px;color:#444444;margin:0 0 10px 0}.ocdi-content-notice p:last-child{margin-bottom:0}.ocdi-importing,.ocdi-imported{display:none;text-align:center;padding:30px}.ocdi-importing p,.ocdi-imported p{font-size:16px;line-height:19px;font-weight:300;color:#444444;margin:0 0 10px 0}.ocdi-importing p:last-child,.ocdi-imported p:last-child{margin-bottom:0}.ocdi-importing-header h2,.ocdi-imported-header h2{font-size:24px;line-height:29px;margin-bottom:10px}.ocdi-importing-header p,.ocdi-imported-header p{margin-bottom:5px}.ocdi-importing-header p:last-child,.ocdi-imported-header p:last-child{margin-bottom:0}.ocdi-importing-content,.ocdi-imported-content{margin:0 20px}.ocdi-importing-content-importing,.ocdi-imported-content-importing{width:415px;height:228px;margin:50px 0 20px 0}.ocdi-importing-content-imported,.ocdi-imported-content-imported{margin:80px 0 50px 0}.ocdi-importing-content-imported--success,.ocdi-imported-content-imported--success{width:156px;height:124px}.ocdi-importing-content-imported--error,.ocdi-importing-content-imported--warning,.ocdi-imported-content-imported--error,.ocdi-imported-content-imported--warning{width:124px;height:124px}.ocdi-importing-content .notice,.ocdi-imported-content .notice{text-align:left;margin:30px 0}.ocdi-importing-content .notice p,.ocdi-imported-content .notice p{padding:15px 3px;font-size:14px;line-height:22px;color:#777777}.ocdi-importing-footer,.ocdi-imported-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;min-height:100px;background-color:#F8F8F8;border-top:1px solid #dddddd;margin:30px -30px -30px}.ocdi-importing-footer a.button,.ocdi-imported-footer a.button{-webkit-box-flex:0;-ms-flex:0 1 25%;flex:0 1 25%;margin-right:30px}.ocdi-importing-footer a.button:last-child,.ocdi-imported-footer a.button:last-child{margin-right:0}.ocdi .button.button-hero{font-size:16px;line-height:20px;font-weight:500;min-height:40px;padding:9px 18px}.ocdi .button.button-hero.ocdi__button.button-primary:disabled,.ocdi .button.button-hero.ocdi__button.button-primary[disabled]{color:#ffffff !important;background:#999999 !important;border-color:#999999 !important;opacity:0.5}.ocdi__redux-option-name-input{margin-left:10px;width:137px;border-radius:3px !important;padding:0 10px !important;font-size:13px !important;line-height:16px !important}.ocdi-hide-input{width:0.1px !important;height:0.1px !important;opacity:0 !important;overflow:hidden !important;position:absolute !important;z-index:-1 !important}.feature-section+hr{margin-top:0}#wpbody select{height:auto;padding:.62em;line-height:inherit}.ocdi__title-container{height:30px;background-color:#ffffff;padding:20px 30px;-webkit-box-shadow:0px 1px 2px rgba(0,0,0,0.07);box-shadow:0px 1px 2px rgba(0,0,0,0.07);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.ocdi__title-container-title{margin:0;font-size:24px;line-height:29px;font-weight:700}.ocdi__title-container-icon{width:19px;height:19px}.ocdi__content-container{padding:30px}.ocdi__content-container-content{display:-webkit-box;display:-ms-flexbox;display:flex}.ocdi__content-container-content--main{-webkit-box-flex:1;-ms-flex:1;flex:1;margin-right:30px;background:#ffffff;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #dddddd;-webkit-box-shadow:0px 1px 1px rgba(0,0,0,0.07);box-shadow:0px 1px 1px rgba(0,0,0,0.07)}.ocdi__content-container-content--side{width:373px}.ocdi__content-container-content--side .ocdi__card-content{padding:0}.ocdi__content-container-content--side .screenshot{height:278px}.ocdi__content-container-content--side .screenshot.blank{border:1px solid #CCD0D4;-webkit-filter:drop-shadow(0px 1px 2px rgba(0,0,0,0.07));filter:drop-shadow(0px 1px 2px rgba(0,0,0,0.07));background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAALElEQVQYGWO8d+/efwYkoKioiMRjYGBC4WHhUK6A8T8QIJt8//59ZC493AAAQssKpBK4F5AAAAAASUVORK5CYII=)}.ocdi__content-container-content--side .ocdi__card-footer{padding:15px}.ocdi__content-container-content--side .ocdi__card-footer h3{font-size:16px;line-height:19px;font-weight:500;margin:0}.ocdi__content-container-content--side img{width:100%}.ocdi__content-container-content .ocdi-install-plugins-content-header,.ocdi__content-container-content .ocdi-create-content-header{padding:30px;border-bottom:1px solid #dddddd}.ocdi__content-container-content .ocdi-install-plugins-content-header h2,.ocdi__content-container-content .ocdi-create-content-header h2{font-size:22px;line-height:26px;font-weight:normal;margin:0 0 6px 0}.ocdi__content-container-content .ocdi-install-plugins-content-header p,.ocdi__content-container-content .ocdi-create-content-header p{font-size:16px;line-height:22px;font-weight:300;color:#444444;margin:0 0 10px 0}.ocdi__content-container-content .ocdi-install-plugins-content-header p:last-child,.ocdi__content-container-content .ocdi-create-content-header p:last-child{margin:0}.ocdi__content-container-content .ocdi-install-plugins-content-header .notice,.ocdi__content-container-content .ocdi-create-content-header .notice{margin:30px 0 0}.ocdi__content-container-content .ocdi-install-plugins-content-header .notice p,.ocdi__content-container-content .ocdi-create-content-header .notice p{margin:.5em 0;font-size:13px;line-height:1.5;color:#3c434a;font-weight:normal}.ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item,.ocdi__content-container-content .ocdi-install-plugins-content-content .content-item,.ocdi__content-container-content .ocdi-create-content-content .plugin-item,.ocdi__content-container-content .ocdi-create-content-content .content-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:0 30px;padding:25px 0;border-bottom:1px solid #eeeeee}.ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item .ocdi-loading,.ocdi__content-container-content .ocdi-install-plugins-content-content .content-item .ocdi-loading,.ocdi__content-container-content .ocdi-create-content-content .plugin-item .ocdi-loading,.ocdi__content-container-content .ocdi-create-content-content .content-item .ocdi-loading{display:none}.ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item--active,.ocdi__content-container-content .ocdi-install-plugins-content-content .content-item--active,.ocdi__content-container-content .ocdi-create-content-content .plugin-item--active,.ocdi__content-container-content .ocdi-create-content-content .content-item--active{cursor:default}.ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item--active .plugin-item-checkbox input[type=checkbox]:checked+.checkbox,.ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item--active .content-item-checkbox input[type=checkbox]:checked+.checkbox,.ocdi__content-container-content .ocdi-install-plugins-content-content .content-item--active .plugin-item-checkbox input[type=checkbox]:checked+.checkbox,.ocdi__content-container-content .ocdi-install-plugins-content-content .content-item--active .content-item-checkbox input[type=checkbox]:checked+.checkbox,.ocdi__content-container-content .ocdi-create-content-content .plugin-item--active .plugin-item-checkbox input[type=checkbox]:checked+.checkbox,.ocdi__content-container-content .ocdi-create-content-content .plugin-item--active .content-item-checkbox input[type=checkbox]:checked+.checkbox,.ocdi__content-container-content .ocdi-create-content-content .content-item--active .plugin-item-checkbox input[type=checkbox]:checked+.checkbox,.ocdi__content-container-content .ocdi-create-content-content .content-item--active .content-item-checkbox input[type=checkbox]:checked+.checkbox{border:none;background:#64B450}.ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item--active .plugin-item-checkbox input[type=checkbox]:checked+.checkbox .ocdi-check-icon,.ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item--active .content-item-checkbox input[type=checkbox]:checked+.checkbox .ocdi-check-icon,.ocdi__content-container-content .ocdi-install-plugins-content-content .content-item--active .plugin-item-checkbox input[type=checkbox]:checked+.checkbox .ocdi-check-icon,.ocdi__content-container-content .ocdi-install-plugins-content-content .content-item--active .content-item-checkbox input[type=checkbox]:checked+.checkbox .ocdi-check-icon,.ocdi__content-container-content .ocdi-create-content-content .plugin-item--active .plugin-item-checkbox input[type=checkbox]:checked+.checkbox .ocdi-check-icon,.ocdi__content-container-content .ocdi-create-content-content .plugin-item--active .content-item-checkbox input[type=checkbox]:checked+.checkbox .ocdi-check-icon,.ocdi__content-container-content .ocdi-create-content-content .content-item--active .plugin-item-checkbox input[type=checkbox]:checked+.checkbox .ocdi-check-icon,.ocdi__content-container-content .ocdi-create-content-content .content-item--active .content-item-checkbox input[type=checkbox]:checked+.checkbox .ocdi-check-icon{display:inline-block}.ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item--active .plugin-item-checkbox input[type=checkbox]:checked+.checkbox::after,.ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item--active .content-item-checkbox input[type=checkbox]:checked+.checkbox::after,.ocdi__content-container-content .ocdi-install-plugins-content-content .content-item--active .plugin-item-checkbox input[type=checkbox]:checked+.checkbox::after,.ocdi__content-container-content .ocdi-install-plugins-content-content .content-item--active .content-item-checkbox input[type=checkbox]:checked+.checkbox::after,.ocdi__content-container-content .ocdi-create-content-content .plugin-item--active .plugin-item-checkbox input[type=checkbox]:checked+.checkbox::after,.ocdi__content-container-content .ocdi-create-content-content .plugin-item--active .content-item-checkbox input[type=checkbox]:checked+.checkbox::after,.ocdi__content-container-content .ocdi-create-content-content .content-item--active .plugin-item-checkbox input[type=checkbox]:checked+.checkbox::after,.ocdi__content-container-content .ocdi-create-content-content .content-item--active .content-item-checkbox input[type=checkbox]:checked+.checkbox::after{display:none !important}.ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item--required,.ocdi__content-container-content .ocdi-install-plugins-content-content .content-item--required,.ocdi__content-container-content .ocdi-create-content-content .plugin-item--required,.ocdi__content-container-content .ocdi-create-content-content .content-item--required{cursor:default}.ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item--loading .ocdi-loading,.ocdi__content-container-content .ocdi-install-plugins-content-content .content-item--loading .ocdi-loading,.ocdi__content-container-content .ocdi-create-content-content .plugin-item--loading .ocdi-loading,.ocdi__content-container-content .ocdi-create-content-content .content-item--loading .ocdi-loading{display:block}.ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item--loading .plugin-item-checkbox input[type=checkbox]+.checkbox,.ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item--loading .content-item-checkbox input[type=checkbox]+.checkbox,.ocdi__content-container-content .ocdi-install-plugins-content-content .content-item--loading .plugin-item-checkbox input[type=checkbox]+.checkbox,.ocdi__content-container-content .ocdi-install-plugins-content-content .content-item--loading .content-item-checkbox input[type=checkbox]+.checkbox,.ocdi__content-container-content .ocdi-create-content-content .plugin-item--loading .plugin-item-checkbox input[type=checkbox]+.checkbox,.ocdi__content-container-content .ocdi-create-content-content .plugin-item--loading .content-item-checkbox input[type=checkbox]+.checkbox,.ocdi__content-container-content .ocdi-create-content-content .content-item--loading .plugin-item-checkbox input[type=checkbox]+.checkbox,.ocdi__content-container-content .ocdi-create-content-content .content-item--loading .content-item-checkbox input[type=checkbox]+.checkbox{border:none !important}.ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item--loading .plugin-item-checkbox input[type=checkbox]+.checkbox .ocdi-lock-icon,.ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item--loading .content-item-checkbox input[type=checkbox]+.checkbox .ocdi-lock-icon,.ocdi__content-container-content .ocdi-install-plugins-content-content .content-item--loading .plugin-item-checkbox input[type=checkbox]+.checkbox .ocdi-lock-icon,.ocdi__content-container-content .ocdi-install-plugins-content-content .content-item--loading .content-item-checkbox input[type=checkbox]+.checkbox .ocdi-lock-icon,.ocdi__content-container-content .ocdi-create-content-content .plugin-item--loading .plugin-item-checkbox input[type=checkbox]+.checkbox .ocdi-lock-icon,.ocdi__content-container-content .ocdi-create-content-content .plugin-item--loading .content-item-checkbox input[type=checkbox]+.checkbox .ocdi-lock-icon,.ocdi__content-container-content .ocdi-create-content-content .content-item--loading .plugin-item-checkbox input[type=checkbox]+.checkbox .ocdi-lock-icon,.ocdi__content-container-content .ocdi-create-content-content .content-item--loading .content-item-checkbox input[type=checkbox]+.checkbox .ocdi-lock-icon{display:none !important}.ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item--loading .plugin-item-checkbox input[type=checkbox]+.checkbox::after,.ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item--loading .content-item-checkbox input[type=checkbox]+.checkbox::after,.ocdi__content-container-content .ocdi-install-plugins-content-content .content-item--loading .plugin-item-checkbox input[type=checkbox]+.checkbox::after,.ocdi__content-container-content .ocdi-install-plugins-content-content .content-item--loading .content-item-checkbox input[type=checkbox]+.checkbox::after,.ocdi__content-container-content .ocdi-create-content-content .plugin-item--loading .plugin-item-checkbox input[type=checkbox]+.checkbox::after,.ocdi__content-container-content .ocdi-create-content-content .plugin-item--loading .content-item-checkbox input[type=checkbox]+.checkbox::after,.ocdi__content-container-content .ocdi-create-content-content .content-item--loading .plugin-item-checkbox input[type=checkbox]+.checkbox::after,.ocdi__content-container-content .ocdi-create-content-content .content-item--loading .content-item-checkbox input[type=checkbox]+.checkbox::after{display:none !important}.ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item-content,.ocdi__content-container-content .ocdi-install-plugins-content-content .content-item-content,.ocdi__content-container-content .ocdi-create-content-content .plugin-item-content,.ocdi__content-container-content .ocdi-create-content-content .content-item-content{margin-right:15px}.ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item-content-title,.ocdi__content-container-content .ocdi-install-plugins-content-content .content-item-content-title,.ocdi__content-container-content .ocdi-create-content-content .plugin-item-content-title,.ocdi__content-container-content .ocdi-create-content-content .content-item-content-title{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:0 0 4px 0}.ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item-content-title span,.ocdi__content-container-content .ocdi-install-plugins-content-content .content-item-content-title span,.ocdi__content-container-content .ocdi-create-content-content .plugin-item-content-title span,.ocdi__content-container-content .ocdi-create-content-content .content-item-content-title span{margin-left:5px;background-color:#FFB900;width:16px;height:16px;border-radius:8px;margin-top:-1px}.ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item-content-title span img,.ocdi__content-container-content .ocdi-install-plugins-content-content .content-item-content-title span img,.ocdi__content-container-content .ocdi-create-content-content .plugin-item-content-title span img,.ocdi__content-container-content .ocdi-create-content-content .content-item-content-title span img{width:10px;height:10px;margin:3px}.ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item-info p,.ocdi__content-container-content .ocdi-install-plugins-content-content .content-item-info p,.ocdi__content-container-content .ocdi-create-content-content .plugin-item-info p,.ocdi__content-container-content .ocdi-create-content-content .content-item-info p{color:#00a32a !important}.ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item-error p,.ocdi__content-container-content .ocdi-install-plugins-content-content .content-item-error p,.ocdi__content-container-content .ocdi-create-content-content .plugin-item-error p,.ocdi__content-container-content .ocdi-create-content-content .content-item-error p{color:#d63638 !important}.ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item:last-child,.ocdi__content-container-content .ocdi-install-plugins-content-content .content-item:last-child,.ocdi__content-container-content .ocdi-create-content-content .plugin-item:last-child,.ocdi__content-container-content .ocdi-create-content-content .content-item:last-child{padding-bottom:30px;border-bottom:none}.ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item label,.ocdi__content-container-content .ocdi-install-plugins-content-content .content-item label,.ocdi__content-container-content .ocdi-create-content-content .plugin-item label,.ocdi__content-container-content .ocdi-create-content-content .content-item label{display:block}.ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item h3,.ocdi__content-container-content .ocdi-install-plugins-content-content .content-item h3,.ocdi__content-container-content .ocdi-create-content-content .plugin-item h3,.ocdi__content-container-content .ocdi-create-content-content .content-item h3{font-size:18px;line-height:22px;color:#444444;font-weight:500;margin:0}.ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item p,.ocdi__content-container-content .ocdi-install-plugins-content-content .content-item p,.ocdi__content-container-content .ocdi-create-content-content .plugin-item p,.ocdi__content-container-content .ocdi-create-content-content .content-item p{font-size:14px;line-height:17px;color:#777777;margin:0 0 6px 0}.ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item p:last-child,.ocdi__content-container-content .ocdi-install-plugins-content-content .content-item p:last-child,.ocdi__content-container-content .ocdi-create-content-content .plugin-item p:last-child,.ocdi__content-container-content .ocdi-create-content-content .content-item p:last-child{margin:0}.ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item .plugin-item-checkbox .checkbox,.ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item .content-item-checkbox .checkbox,.ocdi__content-container-content .ocdi-install-plugins-content-content .content-item .plugin-item-checkbox .checkbox,.ocdi__content-container-content .ocdi-install-plugins-content-content .content-item .content-item-checkbox .checkbox,.ocdi__content-container-content .ocdi-create-content-content .plugin-item .plugin-item-checkbox .checkbox,.ocdi__content-container-content .ocdi-create-content-content .plugin-item .content-item-checkbox .checkbox,.ocdi__content-container-content .ocdi-create-content-content .content-item .plugin-item-checkbox .checkbox,.ocdi__content-container-content .ocdi-create-content-content .content-item .content-item-checkbox .checkbox{-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;background:#f1f1f1;width:32px;height:32px;border-radius:16px;border:1px solid #dddddd}.ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item .plugin-item-checkbox .checkbox .ocdi-check-icon,.ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item .content-item-checkbox .checkbox .ocdi-check-icon,.ocdi__content-container-content .ocdi-install-plugins-content-content .content-item .plugin-item-checkbox .checkbox .ocdi-check-icon,.ocdi__content-container-content .ocdi-install-plugins-content-content .content-item .content-item-checkbox .checkbox .ocdi-check-icon,.ocdi__content-container-content .ocdi-create-content-content .plugin-item .plugin-item-checkbox .checkbox .ocdi-check-icon,.ocdi__content-container-content .ocdi-create-content-content .plugin-item .content-item-checkbox .checkbox .ocdi-check-icon,.ocdi__content-container-content .ocdi-create-content-content .content-item .plugin-item-checkbox .checkbox .ocdi-check-icon,.ocdi__content-container-content .ocdi-create-content-content .content-item .content-item-checkbox .checkbox .ocdi-check-icon{display:none;width:20px;height:20px;margin:6px}.ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item .plugin-item-checkbox .checkbox .ocdi-lock-icon,.ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item .content-item-checkbox .checkbox .ocdi-lock-icon,.ocdi__content-container-content .ocdi-install-plugins-content-content .content-item .plugin-item-checkbox .checkbox .ocdi-lock-icon,.ocdi__content-container-content .ocdi-install-plugins-content-content .content-item .content-item-checkbox .checkbox .ocdi-lock-icon,.ocdi__content-container-content .ocdi-create-content-content .plugin-item .plugin-item-checkbox .checkbox .ocdi-lock-icon,.ocdi__content-container-content .ocdi-create-content-content .plugin-item .content-item-checkbox .checkbox .ocdi-lock-icon,.ocdi__content-container-content .ocdi-create-content-content .content-item .plugin-item-checkbox .checkbox .ocdi-lock-icon,.ocdi__content-container-content .ocdi-create-content-content .content-item .content-item-checkbox .checkbox .ocdi-lock-icon{position:absolute;width:14px;height:17px;bottom:-5px;right:-2px}.ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item .plugin-item-checkbox input[type=checkbox],.ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item .content-item-checkbox input[type=checkbox],.ocdi__content-container-content .ocdi-install-plugins-content-content .content-item .plugin-item-checkbox input[type=checkbox],.ocdi__content-container-content .ocdi-install-plugins-content-content .content-item .content-item-checkbox input[type=checkbox],.ocdi__content-container-content .ocdi-create-content-content .plugin-item .plugin-item-checkbox input[type=checkbox],.ocdi__content-container-content .ocdi-create-content-content .plugin-item .content-item-checkbox input[type=checkbox],.ocdi__content-container-content .ocdi-create-content-content .content-item .plugin-item-checkbox input[type=checkbox],.ocdi__content-container-content .ocdi-create-content-content .content-item .content-item-checkbox input[type=checkbox]{display:none}.ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item .plugin-item-checkbox input[type=checkbox]:checked+.checkbox::after,.ocdi__content-container-content .ocdi-install-plugins-content-content .plugin-item .content-item-checkbox input[type=checkbox]:checked+.checkbox::after,.ocdi__content-container-content .ocdi-install-plugins-content-content .content-item .plugin-item-checkbox input[type=checkbox]:checked+.checkbox::after,.ocdi__content-container-content .ocdi-install-plugins-content-content .content-item .content-item-checkbox input[type=checkbox]:checked+.checkbox::after,.ocdi__content-container-content .ocdi-create-content-content .plugin-item .plugin-item-checkbox input[type=checkbox]:checked+.checkbox::after,.ocdi__content-container-content .ocdi-create-content-content .plugin-item .content-item-checkbox input[type=checkbox]:checked+.checkbox::after,.ocdi__content-container-content .ocdi-create-content-content .content-item .plugin-item-checkbox input[type=checkbox]:checked+.checkbox::after,.ocdi__content-container-content .ocdi-create-content-content .content-item .content-item-checkbox input[type=checkbox]:checked+.checkbox::after{content:'';display:block;font-size:10px;background:#007cba;width:20px;height:20px;border-radius:10px;margin:5px}.ocdi__content-container-content .ocdi-install-plugins-content-content-notice,.ocdi__content-container-content .ocdi-create-content-content-notice{display:none;padding:25px;background:#E5F5FA;border-radius:6px;margin:-10px 30px 30px 30px}.ocdi__content-container-content .ocdi-install-plugins-content-content-notice p,.ocdi__content-container-content .ocdi-create-content-content-notice p{font-size:14px;line-height:24px;color:#444444;margin:0 0 10px 0}.ocdi__content-container-content .ocdi-install-plugins-content-content-notice p:last-child,.ocdi__content-container-content .ocdi-create-content-content-notice p:last-child{margin-bottom:0}.ocdi__content-container-content .ocdi-install-plugins-content-footer,.ocdi__content-container-content .ocdi-create-content-footer{padding:30px;background:#fafafa;border-top:1px solid #dddddd;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.ocdi__content-container-content .ocdi-install-plugins-content-footer .button,.ocdi__content-container-content .ocdi-create-content-footer .button{font-size:16px;line-height:19px;padding:10px 18px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.ocdi__content-container-content .ocdi-install-plugins-content-footer .button img,.ocdi__content-container-content .ocdi-create-content-footer .button img{width:16px;height:auto;margin-right:5px}.ocdi__intro-text p{font-size:18px;line-height:26px;font-weight:300;color:#666666;margin:0 0 24px}.ocdi__intro-text ul{padding:0 4%;list-style-type:square}.ocdi__theme-about{margin-bottom:30px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.ocdi__theme-about-screenshots{-webkit-box-flex:11;-ms-flex:11;flex:11;margin-right:30px}.ocdi__theme-about-screenshots .screenshot{-webkit-box-sizing:border-box;box-sizing:border-box}.ocdi__theme-about-screenshots .screenshot img{border:1px solid #CCD0D4;-webkit-filter:drop-shadow(0px 1px 2px rgba(0,0,0,0.07));filter:drop-shadow(0px 1px 2px rgba(0,0,0,0.07))}.ocdi__theme-about-screenshots .screenshot.blank{border:1px solid #CCD0D4;-webkit-filter:drop-shadow(0px 1px 2px rgba(0,0,0,0.07));filter:drop-shadow(0px 1px 2px rgba(0,0,0,0.07));min-height:500px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAALElEQVQYGWO8d+/efwYkoKioiMRjYGBC4WHhUK6A8T8QIJt8//59ZC493AAAQssKpBK4F5AAAAAASUVORK5CYII=)}.ocdi__theme-about-screenshots img{width:100%}.ocdi__theme-about-info{-webkit-box-flex:10;-ms-flex:10;flex:10;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.ocdi__theme-about-info .theme-title{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.ocdi__theme-about-info .theme-title .theme-name{margin-bottom:16px}.ocdi__theme-about-info .theme-title .theme-version{margin-left:10px;color:#72777C;font-size:13px;line-height:16px}.ocdi__theme-about-info .theme-author{font-size:16px;line-height:19px;color:#72777C;margin:0 0 20px}.ocdi__theme-about-info .theme-description{font-size:16px;line-height:24px;color:#555555;margin:0 0 20px}.ocdi__theme-about-info .theme-tags{font-size:13px;line-height:20px;color:#555555;margin:4px 0 0}.ocdi__theme-about-info .theme-tags span{font-weight:700}.ocdi__theme-about-info .ocdi-import-mode-switch{float:right;font-size:14px;line-height:17px}@media (max-width: 880px){.ocdi__theme-about{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.ocdi__theme-about-screenshots{margin:0 0 30px 0}}.ocdi__demo-import-files{width:100%}.ocdi__demo-import-preview-image-message{font-style:italic}.ocdi__title:before{width:auto;height:auto;font-size:inherit}.ocdi__multi-select-import,.ocdi__demo-import-notice:not(:empty){padding:20px;margin:30px 0;font-size:14px;line-height:19px;background-color:#ffffff;border:1px solid #e5e5e5}.ocdi__file-upload-container{border:1px solid #dddddd;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.07);box-shadow:0 1px 1px rgba(0,0,0,0.07)}.ocdi__file-upload-container--header{padding:30px;border-bottom:1px solid #dddddd;background-color:#ffffff}.ocdi__file-upload-container--header h2{font-size:22px;line-height:27px;margin:0}.ocdi__file-upload-container-items{padding:30px 30px 0 30px;background-color:#ffffff;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.ocdi__file-upload-container-items--second-row{padding-top:0}.ocdi__file-upload-container-items .ocdi__card{-webkit-box-shadow:none;box-shadow:none}.ocdi__file-upload-container-items .ocdi__card-content{position:relative}.ocdi__file-upload-container-items .ocdi__card-content-info{position:absolute;right:10px;top:10px}.ocdi__file-upload-container-items .ocdi__card-content-info img{width:16px;height:16px}.ocdi__file-upload-container--footer{padding:30px;background-color:#fafafa;border-top:1px solid #dddddd;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.ocdi__demo-import-notice:not(:empty){border:0;border-left:4px solid #00a0d2;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);box-shadow:0 1px 1px 0 rgba(0,0,0,0.1)}[dir="rtl"] .ocdi__demo-import-notice:not(:empty){border:0;border-right:4px solid #00a0d2}.ocdi__button-container{margin-top:30px}.ocdi__ajax-loader{font-size:1.5em}.ocdi__ajax-loader .spinner{display:inline-block;float:none;visibility:visible;margin-bottom:6px}.ocdi__gl-navigation li a{-webkit-box-shadow:none;box-shadow:none}.ocdi__gl-item-container{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.ocdi__gl-item{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;margin-bottom:20px;border:1px solid #ddd;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.07);box-shadow:0 1px 1px rgba(0,0,0,0.07);-webkit-box-sizing:border-box;box-sizing:border-box;background-color:#fafafa}.ocdi__gl-item-image-container{display:block;overflow:hidden;position:relative;-webkit-backface-visibility:hidden;-webkit-transition:opacity 0.2s ease-in-out;transition:opacity 0.2s ease-in-out}.ocdi__gl-item-image-container::after{content:"";display:block;padding-top:66.66666%}.ocdi__gl-item-image{height:auto;position:absolute;left:0;top:0;width:100%;-webkit-transition:opacity 0.2s ease-in-out;transition:opacity 0.2s ease-in-out}.ocdi__gl-item-image--no-image{display:inline-block;width:50%;text-align:center;position:absolute;top:45%;right:25%;left:25%}.ocdi__gl-item-footer{margin:0;padding:8px 10px;border-top:1px solid #dddddd;background:#ffffff;background:rgba(255,255,255,0.65)}.ocdi__gl-item-title{white-space:nowrap;text-overflow:ellipsis;display:block;margin:0;font-size:16px;line-height:19px;text-align:center;font-weight:500;color:#23282d;padding:5px 0 6px}@media (max-width: 782px){.ocdi__gl-item-title{padding:12px 0 13px}}.ocdi__gl-item-buttons{display:none;text-align:center}.ocdi__gl-item-button+.ocdi__gl-item-button{margin-left:15px}@media (max-width: 782px){.ocdi__gl-item-button{width:calc(50% - 10px);margin-bottom:10px}.ocdi__gl-item-button+.ocdi__gl-item-button{float:left}}.ocdi__gl-item:hover .ocdi__gl-item-buttons{display:block}.ocdi__gl-item:hover .ocdi__gl-item-title{display:none}.ocdi__gl-item:hover .ocdi__gl-item-footer{background:#ffffff}.ocdi__gl-header{display:inline-block;width:calc(100% - 24px);background-color:#ffffff;border:1px solid #ccd0d4;-webkit-box-shadow:0px 1px 2px rgba(0,0,0,0.07);box-shadow:0px 1px 2px rgba(0,0,0,0.07);margin-bottom:30px;padding:0 11px}.ocdi__gl-navigation{font-size:13px;line-height:16px;width:100%;float:left}.ocdi__gl-navigation ul{list-style-type:none;margin:0;padding:0;overflow:hidden}.ocdi__gl-navigation li{margin:0}.ocdi__gl-navigation li.active a span,.ocdi__gl-navigation li.active a:hover span{padding-bottom:14px;border-bottom:4px solid #666666}.ocdi__gl-navigation li a{display:block;text-align:center;text-decoration:none;color:#23282D;padding:18px 10px}.ocdi__gl-navigation li a span{padding-bottom:14px;border-bottom:4px solid #ffffff}.ocdi__gl-navigation li a:hover{color:#00a0d2;cursor:pointer}.ocdi__gl-navigation li a:hover span{border-bottom:4px solid #ffffff}.ocdi__gl-search-input{width:100%;margin:10px 0;font-size:13px;line-height:16px;color:#72777C !important}@media (min-width: 640px){.ocdi__gl-navigation{width:calc(100% - 280px)}.ocdi__gl-navigation li{margin:0 15px;float:left}.ocdi__gl-navigation li a{padding:18px 10px}.ocdi__gl-search-input{display:inline-block;width:280px;height:30px;margin:0;margin-top:11px}.ocdi__gl-item-container{margin-right:-20px}.ocdi__gl-item{-webkit-box-flex:0;-ms-flex:0 0 calc(50% - 20px);flex:0 0 calc(50% - 20px);margin-right:20px}}@media (min-width: 1120px){.ocdi__gl-item-container{margin-right:-30px}.ocdi__gl-item{-webkit-box-flex:0;-ms-flex:0 0 calc(33.33% - 30px);flex:0 0 calc(33.33% - 30px);margin-bottom:30px;margin-right:30px}}.ocdi__card{background:#ffffff;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #dddddd;-webkit-box-shadow:0px 1px 1px rgba(0,0,0,0.07);box-shadow:0px 1px 1px rgba(0,0,0,0.07);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.ocdi__card-content{padding:30px}.ocdi__card-content .ocdi-icon--content{width:53px;height:53px}.ocdi__card-content .ocdi-icon--widgets{width:56px;height:49px}.ocdi__card-content .ocdi-icon--brush{width:55px;height:52px}.ocdi__card-content .ocdi-icon--redux{width:82px;height:70px}.ocdi__card-content .ocdi-icon--plugins{width:65px;height:64px}.ocdi__card-content .ocdi-icon--copy{width:42px;height:52px}.ocdi__card-content .ocdi-icon--layout{width:53px;height:52px}.ocdi__card-content .ocdi-icon-container{height:70px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.ocdi__card-content h3{margin:5px 0;font-size:16px;line-height:20px;font-weight:500}.ocdi__card-content p{margin:0;font-size:13px;line-height:16px;color:#666666}.ocdi__card-footer{background:#fafafa;-webkit-box-shadow:0px -1px 0px #DDDDDD;box-shadow:0px -1px 0px #DDDDDD;padding:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.ocdi__card-footer .button-secondary{background:#fafafa}.ocdi__card-footer input[type="file"]{width:200px;padding:4px 0}.ocdi__card-footer .button-disabled{cursor:not-allowed}.ocdi__card--three{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;margin-bottom:20px}@media (min-width: 768px){.ocdi__card--three{-webkit-box-flex:0;-ms-flex:0 0 calc(50% - 10px);flex:0 0 calc(50% - 10px);margin-right:20px}.ocdi__card--three:nth-child(2n){margin-right:0}}@media (min-width: 1120px){.ocdi__card--three{-webkit-box-flex:0;-ms-flex:0 0 calc(33.33% - 20px);flex:0 0 calc(33.33% - 20px);margin-bottom:30px;margin-right:30px}.ocdi__card--three:nth-child(2n){margin-right:30px}.ocdi__card--three:nth-child(3n){margin-right:0}}.ocdi__card--four{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;margin-bottom:20px}@media (min-width: 768px){.ocdi__card--four{-webkit-box-flex:0;-ms-flex:0 0 calc(50% - 10px);flex:0 0 calc(50% - 10px);margin-right:20px}.ocdi__card--four:nth-child(2n){margin-right:0}}@media (min-width: 1120px){.ocdi__card--four{-webkit-box-flex:0;-ms-flex:0 0 calc(50% - 15px);flex:0 0 calc(50% - 15px);margin-bottom:30px;margin-right:30px}}@-webkit-keyframes ocdi-fade{from{opacity:1}to{opacity:0}}@keyframes ocdi-fade{from{opacity:1}to{opacity:0}}.ocdi-is-fadeout{-webkit-animation:ocdi-fade linear 200ms 1 forwards;animation:ocdi-fade linear 200ms 1 forwards}.ocdi-is-fadein{animation:ocdi-fade linear 200ms 1 reverse forwards}.ocdi__modal-image-container{width:100%;height:180px;margin:0;overflow:hidden}.ocdi__modal-image-container img{width:100%}.ocdi__modal-item-title{margin-top:0.5em;font-weight:bold}.ocdi__modal-notice.ocdi__demo-import-notice:not(:empty){border:1px solid #e5e5e5;border-left:4px solid #00a0d2;margin:20px 0 0}.ocdi-loading{-webkit-animation:0.65s linear infinite ocdi-loading-spin;animation:0.65s linear infinite ocdi-loading-spin}.ocdi-loading-md{width:32px;height:32px}.ocdi-loading-sm{width:16px;height:16px}@-webkit-keyframes ocdi-loading-spin{0%{-webkit-transform:rotateZ(270deg);transform:rotateZ(270deg)}100%{-webkit-transform:rotateZ(630deg);transform:rotateZ(630deg)}}@keyframes ocdi-loading-spin{0%{-webkit-transform:rotateZ(270deg);transform:rotateZ(270deg)}100%{-webkit-transform:rotateZ(630deg);transform:rotateZ(630deg)}}
assets/demo-content/about-page.xml ADDED
@@ -0,0 +1,112 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <!-- generator="WordPress/5.7" created="2021-03-25 06:41" -->
3
+ <rss version="2.0"
4
+ xmlns:excerpt="http://wordpress.org/export/1.2/excerpt/"
5
+ xmlns:content="http://purl.org/rss/1.0/modules/content/"
6
+ xmlns:wfw="http://wellformedweb.org/CommentAPI/"
7
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
8
+ xmlns:wp="http://wordpress.org/export/1.2/"
9
+ >
10
+
11
+ <channel>
12
+ <title>ocdi</title>
13
+ <link>https://ocdi.com</link>
14
+ <description>Just another WordPress site</description>
15
+ <pubDate>Thu, 25 Mar 2021 06:41:21 +0000</pubDate>
16
+ <language>en-US</language>
17
+ <wp:wxr_version>1.2</wp:wxr_version>
18
+ <wp:base_site_url>https://ocdi.com</wp:base_site_url>
19
+ <wp:base_blog_url>https://ocdi.com</wp:base_blog_url>
20
+
21
+ <generator>https://wordpress.org/?v=5.7</generator>
22
+
23
+ <item>
24
+ <title><![CDATA[About Us]]></title>
25
+ <link>https://ocdi.com/about-us/</link>
26
+ <pubDate>Tue, 09 Mar 2021 09:03:37 +0000</pubDate>
27
+ <description></description>
28
+ <content:encoded><![CDATA[<!-- wp:paragraph -->
29
+ <p>Here's the most important thing you need to know: <strong>we're more than just a marketing agency</strong>. We help small businesses to realize their full growth potential, and we're invested in their success.</p>
30
+ <!-- /wp:paragraph -->
31
+
32
+ <!-- wp:columns {"backgroundColor":"gray"} -->
33
+ <div class="wp-block-columns has-gray-background-color has-background"><!-- wp:column -->
34
+ <div class="wp-block-column"><!-- wp:heading {"level":4} -->
35
+ <h4>Since 2017</h4>
36
+ <!-- /wp:heading -->
37
+
38
+ <!-- wp:paragraph -->
39
+ <p>Acme Marketing was founded by Leah Robinson in New York City.</p>
40
+ <!-- /wp:paragraph --></div>
41
+ <!-- /wp:column -->
42
+
43
+ <!-- wp:column -->
44
+ <div class="wp-block-column"><!-- wp:heading {"level":4} -->
45
+ <h4>14 Experts</h4>
46
+ <!-- /wp:heading -->
47
+
48
+ <!-- wp:paragraph -->
49
+ <p>We're super proud of our diverse and talented team.</p>
50
+ <!-- /wp:paragraph --></div>
51
+ <!-- /wp:column -->
52
+
53
+ <!-- wp:column -->
54
+ <div class="wp-block-column"><!-- wp:heading {"level":4} -->
55
+ <h4>3 Countries</h4>
56
+ <!-- /wp:heading -->
57
+
58
+ <!-- wp:paragraph -->
59
+ <p>We work with hundreds of businesses <strong>just like yours</strong>.</p>
60
+ <!-- /wp:paragraph --></div>
61
+ <!-- /wp:column --></div>
62
+ <!-- /wp:columns -->
63
+
64
+ <!-- wp:quote {"className":"is-style-large"} -->
65
+ <blockquote class="wp-block-quote is-style-large" id="output"><p>Our team is driven by your success. Every single day, we'll support your business and help you to succeed.</p></blockquote>
66
+ <!-- /wp:quote -->
67
+
68
+ <!-- wp:heading {"textAlign":"center"} -->
69
+ <h2 class="has-text-align-center">Our History</h2>
70
+ <!-- /wp:heading -->
71
+
72
+ <!-- wp:paragraph -->
73
+ <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
74
+ <!-- /wp:paragraph -->
75
+
76
+ <!-- wp:heading {"textAlign":"center"} -->
77
+ <h2 class="has-text-align-center">Our Promise</h2>
78
+ <!-- /wp:heading -->
79
+
80
+ <!-- wp:paragraph -->
81
+ <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. </p>
82
+ <!-- /wp:paragraph -->]]></content:encoded>
83
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
84
+ <wp:post_date><![CDATA[2021-03-09 09:03:37]]></wp:post_date>
85
+ <wp:post_date_gmt><![CDATA[2021-03-09 09:03:37]]></wp:post_date_gmt>
86
+ <wp:post_modified><![CDATA[2021-03-23 13:41:53]]></wp:post_modified>
87
+ <wp:post_modified_gmt><![CDATA[2021-03-23 13:41:53]]></wp:post_modified_gmt>
88
+ <wp:comment_status><![CDATA[closed]]></wp:comment_status>
89
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
90
+ <wp:post_name><![CDATA[about-us]]></wp:post_name>
91
+ <wp:status><![CDATA[publish]]></wp:status>
92
+ <wp:post_parent>0</wp:post_parent>
93
+ <wp:menu_order>0</wp:menu_order>
94
+ <wp:post_type><![CDATA[page]]></wp:post_type>
95
+ <wp:post_password><![CDATA[]]></wp:post_password>
96
+ <wp:is_sticky>0</wp:is_sticky>
97
+ <wp:postmeta>
98
+ <wp:meta_key><![CDATA[_wp_page_template]]></wp:meta_key>
99
+ <wp:meta_value><![CDATA[default]]></wp:meta_value>
100
+ </wp:postmeta>
101
+ <wp:postmeta>
102
+ <wp:meta_key><![CDATA[_wxr_import_parent]]></wp:meta_key>
103
+ <wp:meta_value><![CDATA[2070]]></wp:meta_value>
104
+ </wp:postmeta>
105
+ <wp:postmeta>
106
+ <wp:meta_key><![CDATA[_edit_last]]></wp:meta_key>
107
+ <wp:meta_value><![CDATA[2]]></wp:meta_value>
108
+ </wp:postmeta>
109
+ </item>
110
+
111
+ </channel>
112
+ </rss>
assets/demo-content/book-now-page.xml ADDED
@@ -0,0 +1,568 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <!-- generator="WordPress/5.7" created="2021-03-25 06:41" -->
3
+ <rss version="2.0"
4
+ xmlns:excerpt="http://wordpress.org/export/1.2/excerpt/"
5
+ xmlns:content="http://purl.org/rss/1.0/modules/content/"
6
+ xmlns:wfw="http://wellformedweb.org/CommentAPI/"
7
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
8
+ xmlns:wp="http://wordpress.org/export/1.2/"
9
+ >
10
+
11
+ <channel>
12
+ <title>ocdi</title>
13
+ <link>https://ocdi.com</link>
14
+ <description>Just another WordPress site</description>
15
+ <pubDate>Thu, 25 Mar 2021 06:41:21 +0000</pubDate>
16
+ <language>en-US</language>
17
+ <wp:wxr_version>1.2</wp:wxr_version>
18
+ <wp:base_site_url>https://ocdi.com</wp:base_site_url>
19
+ <wp:base_blog_url>https://ocdi.com</wp:base_blog_url>
20
+
21
+ <generator>https://wordpress.org/?v=5.7</generator>
22
+
23
+ <item>
24
+ <title><![CDATA[Book Now]]></title>
25
+ <link>https://ocdi.com/book-now/</link>
26
+ <pubDate>Wed, 10 Mar 2021 22:35:00 +0000</pubDate>
27
+ <description></description>
28
+ <content:encoded><![CDATA[<!-- wp:cover {"url":"https://ocdi.com/wp-content/uploads/2021/03/pexels-rodnae-final-1.jpg","id":2378,"dimRatio":15,"focalPoint":{"x":"1.00","y":"0.44"},"minHeight":495,"minHeightUnit":"px","contentPosition":"center center","align":"wide","className":"is-position-center-center"} -->
29
+ <div class="wp-block-cover alignwide has-background-dim-20 has-background-dim is-position-center-center" style="min-height:495px"><img class="wp-block-cover__image-background wp-image-2378" alt="" src="https://ocdi.com/wp-content/uploads/2021/03/pexels-rodnae-final-1.jpg" style="object-position:100% 44%" data-object-fit="cover" data-object-position="100% 44%"/><div class="wp-block-cover__inner-container"><!-- wp:paragraph {"placeholder":"Write title…","style":{"typography":{"fontSize":74,"lineHeight":"1.1"}},"textColor":"dark-gray"} -->
30
+ <p class="has-dark-gray-color has-text-color" style="font-size:74px;line-height:1.1"><strong>Because you deserve an experience <em>just </em>for you.</strong></p>
31
+ <!-- /wp:paragraph --></div></div>
32
+ <!-- /wp:cover -->
33
+
34
+ <!-- wp:paragraph -->
35
+ <p>All of our staff are certified and receive annual training - so you can rest assured we're up to speed on the latest trends. <em>Our goal is to help you feel better by looking your best. </em>Book an appointment today!</p>
36
+ <!-- /wp:paragraph -->
37
+
38
+ <!-- wp:buttons {"contentJustification":"center"} -->
39
+ <div class="wp-block-buttons is-content-justification-center"><!-- wp:button {"borderRadius":2,"backgroundColor":"yellow","textColor":"dark-gray"} -->
40
+ <div class="wp-block-button"><a class="wp-block-button__link has-dark-gray-color has-yellow-background-color has-text-color has-background" style="border-radius:2px">VIEW SERVICE MENU</a></div>
41
+ <!-- /wp:button -->
42
+
43
+ <!-- wp:button {"borderRadius":2,"backgroundColor":"yellow","textColor":"dark-gray","className":"is-style-outline"} -->
44
+ <div class="wp-block-button is-style-outline"><a class="wp-block-button__link has-dark-gray-color has-yellow-background-color has-text-color has-background" href="#scheduleyourappointmentnow" style="border-radius:2px">BOOK APPOINTMENT</a></div>
45
+ <!-- /wp:button --></div>
46
+ <!-- /wp:buttons -->
47
+
48
+ <!-- wp:image {"align":"center","id":2381,"width":282,"height":282,"sizeSlug":"large","linkDestination":"none"} -->
49
+ <div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img src="https://ocdi.com/wp-content/uploads/2021/03/book-now-arrow.gif" alt="" class="wp-image-2381" width="282" height="282"/></figure></div>
50
+ <!-- /wp:image -->
51
+
52
+ <!-- wp:heading -->
53
+ <h2>What are the benefits of our services? </h2>
54
+ <!-- /wp:heading -->
55
+
56
+ <!-- wp:embed {"url":"https://www.youtube.com/watch?v=eiQ3viAGung","type":"video","providerNameSlug":"youtube","responsive":true,"className":"wp-embed-aspect-16-9 wp-has-aspect-ratio"} -->
57
+ <figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
58
+ https://www.youtube.com/watch?v=eiQ3viAGung
59
+ </div></figure>
60
+ <!-- /wp:embed -->
61
+
62
+ <!-- wp:heading {"level":4} -->
63
+ <h4>Book before this weekend and take 20% off!*</h4>
64
+ <!-- /wp:heading -->
65
+
66
+ <!-- wp:separator -->
67
+ <hr class="wp-block-separator"/>
68
+ <!-- /wp:separator -->
69
+
70
+ <!-- wp:heading {"level":3} -->
71
+ <h3 id="scheduleyourappointmentnow">SCHEDULE YOUR APPOINTMENT NOW</h3>
72
+ <!-- /wp:heading -->
73
+
74
+ <!-- wp:separator -->
75
+ <hr class="wp-block-separator"/>
76
+ <!-- /wp:separator -->
77
+
78
+ <!-- wp:columns -->
79
+ <div class="wp-block-columns"><!-- wp:column -->
80
+ <div class="wp-block-column"><!-- wp:image {"id":2478,"width":245,"height":367,"sizeSlug":"large","linkDestination":"none","className":"is-style-default"} -->
81
+ <figure class="wp-block-image size-large is-resized is-style-default"><img src="https://ocdi.com/wp-content/uploads/2021/03/michael-dam-mEZ3PoFGs_k-unsplash-scaled-1-683x1024.jpg" alt="" class="wp-image-2478" width="245" height="367"/><figcaption>Kelsey - Owner</figcaption></figure>
82
+ <!-- /wp:image --></div>
83
+ <!-- /wp:column -->
84
+
85
+ <!-- wp:column {"verticalAlignment":"center"} -->
86
+ <div class="wp-block-column is-vertically-aligned-center"><!-- wp:buttons {"contentJustification":"center","align":"full"} -->
87
+ <div class="wp-block-buttons alignfull is-content-justification-center"><!-- wp:button -->
88
+ <div class="wp-block-button"><a class="wp-block-button__link">Book Now</a></div>
89
+ <!-- /wp:button --></div>
90
+ <!-- /wp:buttons --></div>
91
+ <!-- /wp:column --></div>
92
+ <!-- /wp:columns -->
93
+
94
+ <!-- wp:columns -->
95
+ <div class="wp-block-columns"><!-- wp:column -->
96
+ <div class="wp-block-column"><!-- wp:image {"id":2479,"width":245,"height":367,"sizeSlug":"large","linkDestination":"none"} -->
97
+ <figure class="wp-block-image size-large is-resized"><img src="https://ocdi.com/wp-content/uploads/2021/03/joseph-gonzalez-iFgRcqHznqg-unsplash-scaled-1-683x1024.jpg" alt="" class="wp-image-2479" width="245" height="367"/><figcaption>Steve - Senior Stylist</figcaption></figure>
98
+ <!-- /wp:image --></div>
99
+ <!-- /wp:column -->
100
+
101
+ <!-- wp:column {"verticalAlignment":"center"} -->
102
+ <div class="wp-block-column is-vertically-aligned-center"><!-- wp:buttons {"contentJustification":"center","align":"full"} -->
103
+ <div class="wp-block-buttons alignfull is-content-justification-center"><!-- wp:button -->
104
+ <div class="wp-block-button"><a class="wp-block-button__link">Book Now</a></div>
105
+ <!-- /wp:button --></div>
106
+ <!-- /wp:buttons --></div>
107
+ <!-- /wp:column --></div>
108
+ <!-- /wp:columns -->
109
+
110
+ <!-- wp:columns -->
111
+ <div class="wp-block-columns"><!-- wp:column -->
112
+ <div class="wp-block-column"><!-- wp:image {"id":2480,"width":245,"height":367,"sizeSlug":"large","linkDestination":"none"} -->
113
+ <figure class="wp-block-image size-large is-resized"><img src="https://ocdi.com/wp-content/uploads/2021/03/brooke-cagle-oTweoxMKdkA-unsplash-scaled-1-683x1024.jpg" alt="" class="wp-image-2480" width="245" height="367"/><figcaption>Mary Kate - Eyelash Specialist</figcaption></figure>
114
+ <!-- /wp:image --></div>
115
+ <!-- /wp:column -->
116
+
117
+ <!-- wp:column {"verticalAlignment":"center"} -->
118
+ <div class="wp-block-column is-vertically-aligned-center"><!-- wp:buttons {"contentJustification":"center","align":"full"} -->
119
+ <div class="wp-block-buttons alignfull is-content-justification-center"><!-- wp:button -->
120
+ <div class="wp-block-button"><a class="wp-block-button__link">Book Now</a></div>
121
+ <!-- /wp:button --></div>
122
+ <!-- /wp:buttons --></div>
123
+ <!-- /wp:column --></div>
124
+ <!-- /wp:columns -->
125
+
126
+ <!-- wp:columns -->
127
+ <div class="wp-block-columns"><!-- wp:column -->
128
+ <div class="wp-block-column"><!-- wp:image {"id":2481,"width":245,"height":367,"sizeSlug":"large","linkDestination":"none"} -->
129
+ <figure class="wp-block-image size-large is-resized"><img src="https://ocdi.com/wp-content/uploads/2021/03/carrita-tanner-E7B9RWMTMLI-unsplash-scaled-1-755x1024.jpg" alt="" class="wp-image-2481" width="245" height="367"/><figcaption>Tina - Brow Master</figcaption></figure>
130
+ <!-- /wp:image --></div>
131
+ <!-- /wp:column -->
132
+
133
+ <!-- wp:column {"verticalAlignment":"center"} -->
134
+ <div class="wp-block-column is-vertically-aligned-center"><!-- wp:buttons {"contentJustification":"center","align":"full"} -->
135
+ <div class="wp-block-buttons alignfull is-content-justification-center"><!-- wp:button -->
136
+ <div class="wp-block-button"><a class="wp-block-button__link">Book Now</a></div>
137
+ <!-- /wp:button --></div>
138
+ <!-- /wp:buttons --></div>
139
+ <!-- /wp:column --></div>
140
+ <!-- /wp:columns -->
141
+
142
+ <!-- wp:columns -->
143
+ <div class="wp-block-columns"><!-- wp:column -->
144
+ <div class="wp-block-column"><!-- wp:image {"id":2483,"width":245,"height":367,"sizeSlug":"large","linkDestination":"none"} -->
145
+ <figure class="wp-block-image size-large is-resized"><img src="https://ocdi.com/wp-content/uploads/2021/03/courtney-cook-qFVPPU1mrMM-unsplash-1-scaled-1-683x1024.jpg" alt="" class="wp-image-2483" width="245" height="367"/><figcaption>Becky - Stylist</figcaption></figure>
146
+ <!-- /wp:image --></div>
147
+ <!-- /wp:column -->
148
+
149
+ <!-- wp:column {"verticalAlignment":"center"} -->
150
+ <div class="wp-block-column is-vertically-aligned-center"><!-- wp:buttons {"contentJustification":"center","align":"full"} -->
151
+ <div class="wp-block-buttons alignfull is-content-justification-center"><!-- wp:button -->
152
+ <div class="wp-block-button"><a class="wp-block-button__link">Book Now</a></div>
153
+ <!-- /wp:button --></div>
154
+ <!-- /wp:buttons --></div>
155
+ <!-- /wp:column --></div>
156
+ <!-- /wp:columns -->
157
+
158
+ <!-- wp:columns -->
159
+ <div class="wp-block-columns"><!-- wp:column -->
160
+ <div class="wp-block-column"><!-- wp:image {"id":2484,"width":245,"height":367,"sizeSlug":"large","linkDestination":"none"} -->
161
+ <figure class="wp-block-image size-large is-resized"><img src="https://ocdi.com/wp-content/uploads/2021/03/jorge-cesar-Atgu8TywltQ-unsplash-scaled-1-683x1024.jpg" alt="" class="wp-image-2484" width="245" height="367"/><figcaption>Rosa - Junior Stylist</figcaption></figure>
162
+ <!-- /wp:image --></div>
163
+ <!-- /wp:column -->
164
+
165
+ <!-- wp:column {"verticalAlignment":"center"} -->
166
+ <div class="wp-block-column is-vertically-aligned-center"><!-- wp:buttons {"contentJustification":"center","align":"full"} -->
167
+ <div class="wp-block-buttons alignfull is-content-justification-center"><!-- wp:button -->
168
+ <div class="wp-block-button"><a class="wp-block-button__link">Book Now</a></div>
169
+ <!-- /wp:button --></div>
170
+ <!-- /wp:buttons --></div>
171
+ <!-- /wp:column --></div>
172
+ <!-- /wp:columns -->
173
+
174
+ <!-- wp:columns -->
175
+ <div class="wp-block-columns"><!-- wp:column -->
176
+ <div class="wp-block-column"><!-- wp:image {"id":2487,"width":245,"height":367,"sizeSlug":"large","linkDestination":"none"} -->
177
+ <figure class="wp-block-image size-large is-resized"><img src="https://ocdi.com/wp-content/uploads/2021/03/ian-dooley-d1UPkiFd04A-unsplash-scaled-1-683x1024.jpg" alt="" class="wp-image-2487" width="245" height="367"/><figcaption>Ross - Apprentice Stylist</figcaption></figure>
178
+ <!-- /wp:image --></div>
179
+ <!-- /wp:column -->
180
+
181
+ <!-- wp:column {"verticalAlignment":"center"} -->
182
+ <div class="wp-block-column is-vertically-aligned-center"><!-- wp:buttons {"contentJustification":"center","align":"full"} -->
183
+ <div class="wp-block-buttons alignfull is-content-justification-center"><!-- wp:button -->
184
+ <div class="wp-block-button"><a class="wp-block-button__link">Book Now</a></div>
185
+ <!-- /wp:button --></div>
186
+ <!-- /wp:buttons --></div>
187
+ <!-- /wp:column --></div>
188
+ <!-- /wp:columns -->
189
+
190
+ <!-- wp:separator -->
191
+ <hr class="wp-block-separator"/>
192
+ <!-- /wp:separator -->
193
+
194
+ <!-- wp:columns -->
195
+ <div class="wp-block-columns"><!-- wp:column -->
196
+ <div class="wp-block-column"><!-- wp:paragraph {"style":{"typography":{"lineHeight":"1"}}} -->
197
+ <p style="line-height:1"><strong>Our Business</strong></p>
198
+ <!-- /wp:paragraph -->
199
+
200
+ <!-- wp:paragraph {"style":{"typography":{"lineHeight":"0"}}} -->
201
+ <p style="line-height:0">56203 Maribel Peaks Road</p>
202
+ <!-- /wp:paragraph -->
203
+
204
+ <!-- wp:paragraph {"style":{"typography":{"lineHeight":"0"}}} -->
205
+ <p style="line-height:0">Suite 180</p>
206
+ <!-- /wp:paragraph -->
207
+
208
+ <!-- wp:paragraph {"style":{"typography":{"lineHeight":"0"}}} -->
209
+ <p style="line-height:0">Big Bear Lake, CA 92333</p>
210
+ <!-- /wp:paragraph --></div>
211
+ <!-- /wp:column -->
212
+
213
+ <!-- wp:column -->
214
+ <div class="wp-block-column"><!-- wp:social-links {"align":"center","className":"is-style-pill-shape"} -->
215
+ <ul class="wp-block-social-links aligncenter is-style-pill-shape"><!-- wp:social-link {"url":"#facebook","service":"facebook"} /-->
216
+
217
+ <!-- wp:social-link {"url":"#instagram","service":"instagram"} /-->
218
+
219
+ <!-- wp:social-link {"url":"#yelp","service":"yelp"} /-->
220
+
221
+ <!-- wp:social-link {"url":"#pinterest","service":"pinterest"} /--></ul>
222
+ <!-- /wp:social-links --></div>
223
+ <!-- /wp:column --></div>
224
+ <!-- /wp:columns -->
225
+
226
+ <!-- wp:paragraph -->
227
+ <p>904-555-3092</p>
228
+ <!-- /wp:paragraph -->
229
+
230
+ <!-- wp:paragraph -->
231
+ <p><strong>Our Hours</strong></p>
232
+ <!-- /wp:paragraph -->
233
+
234
+ <!-- wp:paragraph -->
235
+ <p>Monday: 10:00am – 7:00pm<br>Tuesday: 9:00am – 8:00pm<br>Wednesday: 9:00am – 8:00pm<br>Thursday: 9:00am – 8:00pm<br>Friday: 9:00am – 8:00pm<br>Saturday: 9:00am – 6:00pm<br>Sunday: 10:00am – 5:00pm</p>
236
+ <!-- /wp:paragraph -->]]></content:encoded>
237
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
238
+ <wp:post_id>2372</wp:post_id>
239
+ <wp:post_date><![CDATA[2021-03-10 17:35:00]]></wp:post_date>
240
+ <wp:post_date_gmt><![CDATA[2021-03-10 22:35:00]]></wp:post_date_gmt>
241
+ <wp:post_modified><![CDATA[2021-03-30 06:03:37]]></wp:post_modified>
242
+ <wp:post_modified_gmt><![CDATA[2021-03-30 06:03:37]]></wp:post_modified_gmt>
243
+ <wp:comment_status><![CDATA[closed]]></wp:comment_status>
244
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
245
+ <wp:post_name><![CDATA[book-now]]></wp:post_name>
246
+ <wp:status><![CDATA[publish]]></wp:status>
247
+ <wp:post_parent>0</wp:post_parent>
248
+ <wp:menu_order>0</wp:menu_order>
249
+ <wp:post_type><![CDATA[page]]></wp:post_type>
250
+ <wp:post_password><![CDATA[]]></wp:post_password>
251
+ <wp:is_sticky>0</wp:is_sticky>
252
+ <wp:postmeta>
253
+ <wp:meta_key><![CDATA[_oembed_cbe95e5def08e45a2bff0a5c99680589]]></wp:meta_key>
254
+ <wp:meta_value><![CDATA[<iframe title="WPForms Overview - Best WordPress Contact Form Plugin" width="800" height="450" src="https://www.youtube.com/embed/eiQ3viAGung?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>]]></wp:meta_value>
255
+ </wp:postmeta>
256
+ <wp:postmeta>
257
+ <wp:meta_key><![CDATA[_oembed_time_cbe95e5def08e45a2bff0a5c99680589]]></wp:meta_key>
258
+ <wp:meta_value><![CDATA[1617084218]]></wp:meta_value>
259
+ </wp:postmeta>
260
+ <wp:postmeta>
261
+ <wp:meta_key><![CDATA[_oembed_e343e43e0a434afc750c45b498566b05]]></wp:meta_key>
262
+ <wp:meta_value><![CDATA[<iframe title="WPForms Overview - Best WordPress Contact Form Plugin" width="750" height="422" src="https://www.youtube.com/embed/eiQ3viAGung?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>]]></wp:meta_value>
263
+ </wp:postmeta>
264
+ <wp:postmeta>
265
+ <wp:meta_key><![CDATA[_oembed_time_e343e43e0a434afc750c45b498566b05]]></wp:meta_key>
266
+ <wp:meta_value><![CDATA[1614990008]]></wp:meta_value>
267
+ </wp:postmeta>
268
+ </item>
269
+
270
+ <item>
271
+ <title><![CDATA[pexels-rodnae-final (1)]]></title>
272
+ <link>https://ocdi.com/book-now/pexels-rodnae-final-1/</link>
273
+ <pubDate>Sat, 06 Mar 2021 00:10:45 +0000</pubDate>
274
+ <guid isPermaLink="false">https://ocdi.com/wp-content/uploads/2021/03/pexels-rodnae-final-1.jpg</guid>
275
+ <description></description>
276
+ <content:encoded><![CDATA[]]></content:encoded>
277
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
278
+ <wp:post_id>2378</wp:post_id>
279
+ <wp:post_date><![CDATA[2021-03-05 19:10:45]]></wp:post_date>
280
+ <wp:post_date_gmt><![CDATA[2021-03-06 00:10:45]]></wp:post_date_gmt>
281
+ <wp:post_modified><![CDATA[2021-03-22 15:36:59]]></wp:post_modified>
282
+ <wp:post_modified_gmt><![CDATA[2021-03-22 15:36:59]]></wp:post_modified_gmt>
283
+ <wp:comment_status><![CDATA[closed]]></wp:comment_status>
284
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
285
+ <wp:post_name><![CDATA[pexels-rodnae-final-1]]></wp:post_name>
286
+ <wp:status><![CDATA[inherit]]></wp:status>
287
+ <wp:post_parent>2372</wp:post_parent>
288
+ <wp:menu_order>0</wp:menu_order>
289
+ <wp:post_type><![CDATA[attachment]]></wp:post_type>
290
+ <wp:post_password><![CDATA[]]></wp:post_password>
291
+ <wp:is_sticky>0</wp:is_sticky>
292
+ <wp:attachment_url><![CDATA[https://ocdi.com/wp-content/uploads/2021/03/pexels-rodnae-final-1.jpg]]></wp:attachment_url>
293
+ <wp:postmeta>
294
+ <wp:meta_key><![CDATA[_wp_attached_file]]></wp:meta_key>
295
+ <wp:meta_value><![CDATA[2021/03/pexels-rodnae-final-1.jpg]]></wp:meta_value>
296
+ </wp:postmeta>
297
+ <wp:postmeta>
298
+ <wp:meta_key><![CDATA[_wp_attachment_metadata]]></wp:meta_key>
299
+ <wp:meta_value><![CDATA[a:5:{s:5:"width";i:2390;s:6:"height";i:1518;s:4:"file";s:33:"2021/03/pexels-rodnae-final-1.jpg";s:5:"sizes";a:6:{s:6:"medium";a:4:{s:4:"file";s:33:"pexels-rodnae-final-1-300x191.jpg";s:5:"width";i:300;s:6:"height";i:191;s:9:"mime-type";s:10:"image/jpeg";}s:5:"large";a:4:{s:4:"file";s:34:"pexels-rodnae-final-1-1024x650.jpg";s:5:"width";i:1024;s:6:"height";i:650;s:9:"mime-type";s:10:"image/jpeg";}s:9:"thumbnail";a:4:{s:4:"file";s:33:"pexels-rodnae-final-1-150x150.jpg";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:10:"image/jpeg";}s:12:"medium_large";a:4:{s:4:"file";s:33:"pexels-rodnae-final-1-768x488.jpg";s:5:"width";i:768;s:6:"height";i:488;s:9:"mime-type";s:10:"image/jpeg";}s:9:"1536x1536";a:4:{s:4:"file";s:34:"pexels-rodnae-final-1-1536x976.jpg";s:5:"width";i:1536;s:6:"height";i:976;s:9:"mime-type";s:10:"image/jpeg";}s:9:"2048x2048";a:4:{s:4:"file";s:35:"pexels-rodnae-final-1-2048x1301.jpg";s:5:"width";i:2048;s:6:"height";i:1301;s:9:"mime-type";s:10:"image/jpeg";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}]]></wp:meta_value>
300
+ </wp:postmeta>
301
+ <wp:postmeta>
302
+ <wp:meta_key><![CDATA[_wp_attachment_image_alt]]></wp:meta_key>
303
+ <wp:meta_value><![CDATA[pexels-rodnae-final (1)]]></wp:meta_value>
304
+ </wp:postmeta>
305
+ </item>
306
+
307
+ <item>
308
+ <title><![CDATA[book-now-arrow]]></title>
309
+ <link>https://ocdi.com/book-now/book-now-arrow/</link>
310
+ <pubDate>Sat, 06 Mar 2021 00:43:14 +0000</pubDate>
311
+ <guid isPermaLink="false">https://ocdi.com/wp-content/uploads/2021/03/book-now-arrow.gif</guid>
312
+ <description></description>
313
+ <content:encoded><![CDATA[]]></content:encoded>
314
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
315
+ <wp:post_id>2381</wp:post_id>
316
+ <wp:post_date><![CDATA[2021-03-05 19:43:14]]></wp:post_date>
317
+ <wp:post_date_gmt><![CDATA[2021-03-06 00:43:14]]></wp:post_date_gmt>
318
+ <wp:post_modified><![CDATA[2021-03-22 15:36:59]]></wp:post_modified>
319
+ <wp:post_modified_gmt><![CDATA[2021-03-22 15:36:59]]></wp:post_modified_gmt>
320
+ <wp:comment_status><![CDATA[open]]></wp:comment_status>
321
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
322
+ <wp:post_name><![CDATA[book-now-arrow]]></wp:post_name>
323
+ <wp:status><![CDATA[inherit]]></wp:status>
324
+ <wp:post_parent>2372</wp:post_parent>
325
+ <wp:menu_order>0</wp:menu_order>
326
+ <wp:post_type><![CDATA[attachment]]></wp:post_type>
327
+ <wp:post_password><![CDATA[]]></wp:post_password>
328
+ <wp:is_sticky>0</wp:is_sticky>
329
+ <wp:attachment_url><![CDATA[https://ocdi.com/wp-content/uploads/2021/03/book-now-arrow.gif]]></wp:attachment_url>
330
+ <wp:postmeta>
331
+ <wp:meta_key><![CDATA[_wp_attached_file]]></wp:meta_key>
332
+ <wp:meta_value><![CDATA[2021/03/book-now-arrow.gif]]></wp:meta_value>
333
+ </wp:postmeta>
334
+ <wp:postmeta>
335
+ <wp:meta_key><![CDATA[_wp_attachment_metadata]]></wp:meta_key>
336
+ <wp:meta_value><![CDATA[a:5:{s:5:"width";i:600;s:6:"height";i:600;s:4:"file";s:26:"2021/03/book-now-arrow.gif";s:5:"sizes";a:2:{s:6:"medium";a:4:{s:4:"file";s:26:"book-now-arrow-300x300.gif";s:5:"width";i:300;s:6:"height";i:300;s:9:"mime-type";s:9:"image/gif";}s:9:"thumbnail";a:4:{s:4:"file";s:26:"book-now-arrow-150x150.gif";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:9:"image/gif";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}]]></wp:meta_value>
337
+ </wp:postmeta>
338
+ </item>
339
+
340
+ <item>
341
+ <title><![CDATA[michael-dam-mEZ3PoFGs_k-unsplash]]></title>
342
+ <link>https://ocdi.com/book-now/michael-dam-mez3pofgs_k-unsplash/</link>
343
+ <pubDate>Wed, 10 Mar 2021 22:24:10 +0000</pubDate>
344
+ <guid isPermaLink="false">https://ocdi.com/wp-content/uploads/2021/03/michael-dam-mEZ3PoFGs_k-unsplash.jpg</guid>
345
+ <description></description>
346
+ <content:encoded><![CDATA[]]></content:encoded>
347
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
348
+ <wp:post_id>2478</wp:post_id>
349
+ <wp:post_date><![CDATA[2021-03-10 17:24:10]]></wp:post_date>
350
+ <wp:post_date_gmt><![CDATA[2021-03-10 22:24:10]]></wp:post_date_gmt>
351
+ <wp:post_modified><![CDATA[2021-03-22 15:37:00]]></wp:post_modified>
352
+ <wp:post_modified_gmt><![CDATA[2021-03-22 15:37:00]]></wp:post_modified_gmt>
353
+ <wp:comment_status><![CDATA[open]]></wp:comment_status>
354
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
355
+ <wp:post_name><![CDATA[michael-dam-mez3pofgs_k-unsplash]]></wp:post_name>
356
+ <wp:status><![CDATA[inherit]]></wp:status>
357
+ <wp:post_parent>2372</wp:post_parent>
358
+ <wp:menu_order>0</wp:menu_order>
359
+ <wp:post_type><![CDATA[attachment]]></wp:post_type>
360
+ <wp:post_password><![CDATA[]]></wp:post_password>
361
+ <wp:is_sticky>0</wp:is_sticky>
362
+ <wp:attachment_url><![CDATA[https://ocdi.com/wp-content/uploads/2021/03/michael-dam-mEZ3PoFGs_k-unsplash-scaled-1.jpg]]></wp:attachment_url>
363
+ <wp:postmeta>
364
+ <wp:meta_key><![CDATA[_wp_attached_file]]></wp:meta_key>
365
+ <wp:meta_value><![CDATA[2021/03/michael-dam-mEZ3PoFGs_k-unsplash-scaled-1.jpg]]></wp:meta_value>
366
+ </wp:postmeta>
367
+ <wp:postmeta>
368
+ <wp:meta_key><![CDATA[_wp_attachment_metadata]]></wp:meta_key>
369
+ <wp:meta_value><![CDATA[a:5:{s:5:"width";i:1707;s:6:"height";i:2560;s:4:"file";s:53:"2021/03/michael-dam-mEZ3PoFGs_k-unsplash-scaled-1.jpg";s:5:"sizes";a:6:{s:6:"medium";a:4:{s:4:"file";s:53:"michael-dam-mEZ3PoFGs_k-unsplash-scaled-1-200x300.jpg";s:5:"width";i:200;s:6:"height";i:300;s:9:"mime-type";s:10:"image/jpeg";}s:5:"large";a:4:{s:4:"file";s:54:"michael-dam-mEZ3PoFGs_k-unsplash-scaled-1-683x1024.jpg";s:5:"width";i:683;s:6:"height";i:1024;s:9:"mime-type";s:10:"image/jpeg";}s:9:"thumbnail";a:4:{s:4:"file";s:53:"michael-dam-mEZ3PoFGs_k-unsplash-scaled-1-150x150.jpg";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:10:"image/jpeg";}s:12:"medium_large";a:4:{s:4:"file";s:54:"michael-dam-mEZ3PoFGs_k-unsplash-scaled-1-768x1152.jpg";s:5:"width";i:768;s:6:"height";i:1152;s:9:"mime-type";s:10:"image/jpeg";}s:9:"1536x1536";a:4:{s:4:"file";s:55:"michael-dam-mEZ3PoFGs_k-unsplash-scaled-1-1024x1536.jpg";s:5:"width";i:1024;s:6:"height";i:1536;s:9:"mime-type";s:10:"image/jpeg";}s:9:"2048x2048";a:4:{s:4:"file";s:55:"michael-dam-mEZ3PoFGs_k-unsplash-scaled-1-1366x2048.jpg";s:5:"width";i:1366;s:6:"height";i:2048;s:9:"mime-type";s:10:"image/jpeg";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}]]></wp:meta_value>
370
+ </wp:postmeta>
371
+ </item>
372
+ <item>
373
+ <title><![CDATA[joseph-gonzalez-iFgRcqHznqg-unsplash]]></title>
374
+ <link>https://ocdi.com/book-now/joseph-gonzalez-ifgrcqhznqg-unsplash/</link>
375
+ <pubDate>Wed, 10 Mar 2021 22:27:18 +0000</pubDate>
376
+ <guid isPermaLink="false">https://ocdi.com/wp-content/uploads/2021/03/joseph-gonzalez-iFgRcqHznqg-unsplash.jpg</guid>
377
+ <description></description>
378
+ <content:encoded><![CDATA[]]></content:encoded>
379
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
380
+ <wp:post_id>2479</wp:post_id>
381
+ <wp:post_date><![CDATA[2021-03-10 17:27:18]]></wp:post_date>
382
+ <wp:post_date_gmt><![CDATA[2021-03-10 22:27:18]]></wp:post_date_gmt>
383
+ <wp:post_modified><![CDATA[2021-03-22 15:37:00]]></wp:post_modified>
384
+ <wp:post_modified_gmt><![CDATA[2021-03-22 15:37:00]]></wp:post_modified_gmt>
385
+ <wp:comment_status><![CDATA[open]]></wp:comment_status>
386
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
387
+ <wp:post_name><![CDATA[joseph-gonzalez-ifgrcqhznqg-unsplash]]></wp:post_name>
388
+ <wp:status><![CDATA[inherit]]></wp:status>
389
+ <wp:post_parent>2372</wp:post_parent>
390
+ <wp:menu_order>0</wp:menu_order>
391
+ <wp:post_type><![CDATA[attachment]]></wp:post_type>
392
+ <wp:post_password><![CDATA[]]></wp:post_password>
393
+ <wp:is_sticky>0</wp:is_sticky>
394
+ <wp:attachment_url><![CDATA[https://ocdi.com/wp-content/uploads/2021/03/joseph-gonzalez-iFgRcqHznqg-unsplash-scaled-1.jpg]]></wp:attachment_url>
395
+ <wp:postmeta>
396
+ <wp:meta_key><![CDATA[_wp_attached_file]]></wp:meta_key>
397
+ <wp:meta_value><![CDATA[2021/03/joseph-gonzalez-iFgRcqHznqg-unsplash-scaled-1.jpg]]></wp:meta_value>
398
+ </wp:postmeta>
399
+ <wp:postmeta>
400
+ <wp:meta_key><![CDATA[_wp_attachment_metadata]]></wp:meta_key>
401
+ <wp:meta_value><![CDATA[a:5:{s:5:"width";i:1707;s:6:"height";i:2560;s:4:"file";s:57:"2021/03/joseph-gonzalez-iFgRcqHznqg-unsplash-scaled-1.jpg";s:5:"sizes";a:6:{s:6:"medium";a:4:{s:4:"file";s:57:"joseph-gonzalez-iFgRcqHznqg-unsplash-scaled-1-200x300.jpg";s:5:"width";i:200;s:6:"height";i:300;s:9:"mime-type";s:10:"image/jpeg";}s:5:"large";a:4:{s:4:"file";s:58:"joseph-gonzalez-iFgRcqHznqg-unsplash-scaled-1-683x1024.jpg";s:5:"width";i:683;s:6:"height";i:1024;s:9:"mime-type";s:10:"image/jpeg";}s:9:"thumbnail";a:4:{s:4:"file";s:57:"joseph-gonzalez-iFgRcqHznqg-unsplash-scaled-1-150x150.jpg";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:10:"image/jpeg";}s:12:"medium_large";a:4:{s:4:"file";s:58:"joseph-gonzalez-iFgRcqHznqg-unsplash-scaled-1-768x1152.jpg";s:5:"width";i:768;s:6:"height";i:1152;s:9:"mime-type";s:10:"image/jpeg";}s:9:"1536x1536";a:4:{s:4:"file";s:59:"joseph-gonzalez-iFgRcqHznqg-unsplash-scaled-1-1024x1536.jpg";s:5:"width";i:1024;s:6:"height";i:1536;s:9:"mime-type";s:10:"image/jpeg";}s:9:"2048x2048";a:4:{s:4:"file";s:59:"joseph-gonzalez-iFgRcqHznqg-unsplash-scaled-1-1366x2048.jpg";s:5:"width";i:1366;s:6:"height";i:2048;s:9:"mime-type";s:10:"image/jpeg";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}]]></wp:meta_value>
402
+ </wp:postmeta>
403
+ </item>
404
+ <item>
405
+ <title><![CDATA[brooke-cagle-oTweoxMKdkA-unsplash]]></title>
406
+ <link>https://ocdi.com/book-now/brooke-cagle-otweoxmkdka-unsplash/</link>
407
+ <pubDate>Wed, 10 Mar 2021 22:27:56 +0000</pubDate>
408
+ <guid isPermaLink="false">https://ocdi.com/wp-content/uploads/2021/03/brooke-cagle-oTweoxMKdkA-unsplash.jpg</guid>
409
+ <description></description>
410
+ <content:encoded><![CDATA[]]></content:encoded>
411
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
412
+ <wp:post_id>2480</wp:post_id>
413
+ <wp:post_date><![CDATA[2021-03-10 17:27:56]]></wp:post_date>
414
+ <wp:post_date_gmt><![CDATA[2021-03-10 22:27:56]]></wp:post_date_gmt>
415
+ <wp:post_modified><![CDATA[2021-03-22 15:37:00]]></wp:post_modified>
416
+ <wp:post_modified_gmt><![CDATA[2021-03-22 15:37:00]]></wp:post_modified_gmt>
417
+ <wp:comment_status><![CDATA[open]]></wp:comment_status>
418
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
419
+ <wp:post_name><![CDATA[brooke-cagle-otweoxmkdka-unsplash]]></wp:post_name>
420
+ <wp:status><![CDATA[inherit]]></wp:status>
421
+ <wp:post_parent>2372</wp:post_parent>
422
+ <wp:menu_order>0</wp:menu_order>
423
+ <wp:post_type><![CDATA[attachment]]></wp:post_type>
424
+ <wp:post_password><![CDATA[]]></wp:post_password>
425
+ <wp:is_sticky>0</wp:is_sticky>
426
+ <wp:attachment_url><![CDATA[https://ocdi.com/wp-content/uploads/2021/03/brooke-cagle-oTweoxMKdkA-unsplash-scaled-1.jpg]]></wp:attachment_url>
427
+ <wp:postmeta>
428
+ <wp:meta_key><![CDATA[_wp_attached_file]]></wp:meta_key>
429
+ <wp:meta_value><![CDATA[2021/03/brooke-cagle-oTweoxMKdkA-unsplash-scaled-1.jpg]]></wp:meta_value>
430
+ </wp:postmeta>
431
+ <wp:postmeta>
432
+ <wp:meta_key><![CDATA[_wp_attachment_metadata]]></wp:meta_key>
433
+ <wp:meta_value><![CDATA[a:5:{s:5:"width";i:1707;s:6:"height";i:2560;s:4:"file";s:54:"2021/03/brooke-cagle-oTweoxMKdkA-unsplash-scaled-1.jpg";s:5:"sizes";a:6:{s:6:"medium";a:4:{s:4:"file";s:54:"brooke-cagle-oTweoxMKdkA-unsplash-scaled-1-200x300.jpg";s:5:"width";i:200;s:6:"height";i:300;s:9:"mime-type";s:10:"image/jpeg";}s:5:"large";a:4:{s:4:"file";s:55:"brooke-cagle-oTweoxMKdkA-unsplash-scaled-1-683x1024.jpg";s:5:"width";i:683;s:6:"height";i:1024;s:9:"mime-type";s:10:"image/jpeg";}s:9:"thumbnail";a:4:{s:4:"file";s:54:"brooke-cagle-oTweoxMKdkA-unsplash-scaled-1-150x150.jpg";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:10:"image/jpeg";}s:12:"medium_large";a:4:{s:4:"file";s:55:"brooke-cagle-oTweoxMKdkA-unsplash-scaled-1-768x1152.jpg";s:5:"width";i:768;s:6:"height";i:1152;s:9:"mime-type";s:10:"image/jpeg";}s:9:"1536x1536";a:4:{s:4:"file";s:56:"brooke-cagle-oTweoxMKdkA-unsplash-scaled-1-1024x1536.jpg";s:5:"width";i:1024;s:6:"height";i:1536;s:9:"mime-type";s:10:"image/jpeg";}s:9:"2048x2048";a:4:{s:4:"file";s:56:"brooke-cagle-oTweoxMKdkA-unsplash-scaled-1-1366x2048.jpg";s:5:"width";i:1366;s:6:"height";i:2048;s:9:"mime-type";s:10:"image/jpeg";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}]]></wp:meta_value>
434
+ </wp:postmeta>
435
+ </item>
436
+ <item>
437
+ <title><![CDATA[carrita-tanner-E7B9RWMTMLI-unsplash]]></title>
438
+ <link>https://ocdi.com/book-now/carrita-tanner-e7b9rwmtmli-unsplash/</link>
439
+ <pubDate>Wed, 10 Mar 2021 22:29:17 +0000</pubDate>
440
+ <guid isPermaLink="false">https://ocdi.com/wp-content/uploads/2021/03/carrita-tanner-E7B9RWMTMLI-unsplash.jpg</guid>
441
+ <description></description>
442
+ <content:encoded><![CDATA[]]></content:encoded>
443
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
444
+ <wp:post_id>2481</wp:post_id>
445
+ <wp:post_date><![CDATA[2021-03-10 17:29:17]]></wp:post_date>
446
+ <wp:post_date_gmt><![CDATA[2021-03-10 22:29:17]]></wp:post_date_gmt>
447
+ <wp:post_modified><![CDATA[2021-03-22 15:37:00]]></wp:post_modified>
448
+ <wp:post_modified_gmt><![CDATA[2021-03-22 15:37:00]]></wp:post_modified_gmt>
449
+ <wp:comment_status><![CDATA[open]]></wp:comment_status>
450
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
451
+ <wp:post_name><![CDATA[carrita-tanner-e7b9rwmtmli-unsplash]]></wp:post_name>
452
+ <wp:status><![CDATA[inherit]]></wp:status>
453
+ <wp:post_parent>2372</wp:post_parent>
454
+ <wp:menu_order>0</wp:menu_order>
455
+ <wp:post_type><![CDATA[attachment]]></wp:post_type>
456
+ <wp:post_password><![CDATA[]]></wp:post_password>
457
+ <wp:is_sticky>0</wp:is_sticky>
458
+ <wp:attachment_url><![CDATA[https://ocdi.com/wp-content/uploads/2021/03/carrita-tanner-E7B9RWMTMLI-unsplash-scaled-1.jpg]]></wp:attachment_url>
459
+ <wp:postmeta>
460
+ <wp:meta_key><![CDATA[_wp_attached_file]]></wp:meta_key>
461
+ <wp:meta_value><![CDATA[2021/03/carrita-tanner-E7B9RWMTMLI-unsplash-scaled-1.jpg]]></wp:meta_value>
462
+ </wp:postmeta>
463
+ <wp:postmeta>
464
+ <wp:meta_key><![CDATA[_wp_attachment_metadata]]></wp:meta_key>
465
+ <wp:meta_value><![CDATA[a:5:{s:5:"width";i:1888;s:6:"height";i:2560;s:4:"file";s:56:"2021/03/carrita-tanner-E7B9RWMTMLI-unsplash-scaled-1.jpg";s:5:"sizes";a:6:{s:6:"medium";a:4:{s:4:"file";s:56:"carrita-tanner-E7B9RWMTMLI-unsplash-scaled-1-221x300.jpg";s:5:"width";i:221;s:6:"height";i:300;s:9:"mime-type";s:10:"image/jpeg";}s:5:"large";a:4:{s:4:"file";s:57:"carrita-tanner-E7B9RWMTMLI-unsplash-scaled-1-755x1024.jpg";s:5:"width";i:755;s:6:"height";i:1024;s:9:"mime-type";s:10:"image/jpeg";}s:9:"thumbnail";a:4:{s:4:"file";s:56:"carrita-tanner-E7B9RWMTMLI-unsplash-scaled-1-150x150.jpg";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:10:"image/jpeg";}s:12:"medium_large";a:4:{s:4:"file";s:57:"carrita-tanner-E7B9RWMTMLI-unsplash-scaled-1-768x1041.jpg";s:5:"width";i:768;s:6:"height";i:1041;s:9:"mime-type";s:10:"image/jpeg";}s:9:"1536x1536";a:4:{s:4:"file";s:58:"carrita-tanner-E7B9RWMTMLI-unsplash-scaled-1-1133x1536.jpg";s:5:"width";i:1133;s:6:"height";i:1536;s:9:"mime-type";s:10:"image/jpeg";}s:9:"2048x2048";a:4:{s:4:"file";s:58:"carrita-tanner-E7B9RWMTMLI-unsplash-scaled-1-1510x2048.jpg";s:5:"width";i:1510;s:6:"height";i:2048;s:9:"mime-type";s:10:"image/jpeg";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}]]></wp:meta_value>
466
+ </wp:postmeta>
467
+ </item>
468
+
469
+ <item>
470
+ <title><![CDATA[courtney-cook-qFVPPU1mrMM-unsplash-1]]></title>
471
+ <link>https://ocdi.com/book-now/courtney-cook-qfvppu1mrmm-unsplash-1/</link>
472
+ <pubDate>Wed, 10 Mar 2021 22:30:00 +0000</pubDate>
473
+ <guid isPermaLink="false">https://ocdi.com/wp-content/uploads/2021/03/courtney-cook-qFVPPU1mrMM-unsplash-1.jpg</guid>
474
+ <description></description>
475
+ <content:encoded><![CDATA[]]></content:encoded>
476
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
477
+ <wp:post_id>2483</wp:post_id>
478
+ <wp:post_date><![CDATA[2021-03-10 17:30:00]]></wp:post_date>
479
+ <wp:post_date_gmt><![CDATA[2021-03-10 22:30:00]]></wp:post_date_gmt>
480
+ <wp:post_modified><![CDATA[2021-03-22 15:37:00]]></wp:post_modified>
481
+ <wp:post_modified_gmt><![CDATA[2021-03-22 15:37:00]]></wp:post_modified_gmt>
482
+ <wp:comment_status><![CDATA[open]]></wp:comment_status>
483
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
484
+ <wp:post_name><![CDATA[courtney-cook-qfvppu1mrmm-unsplash-1]]></wp:post_name>
485
+ <wp:status><![CDATA[inherit]]></wp:status>
486
+ <wp:post_parent>2372</wp:post_parent>
487
+ <wp:menu_order>0</wp:menu_order>
488
+ <wp:post_type><![CDATA[attachment]]></wp:post_type>
489
+ <wp:post_password><![CDATA[]]></wp:post_password>
490
+ <wp:is_sticky>0</wp:is_sticky>
491
+ <wp:attachment_url><![CDATA[https://ocdi.com/wp-content/uploads/2021/03/courtney-cook-qFVPPU1mrMM-unsplash-1-scaled-1.jpg]]></wp:attachment_url>
492
+ <wp:postmeta>
493
+ <wp:meta_key><![CDATA[_wp_attached_file]]></wp:meta_key>
494
+ <wp:meta_value><![CDATA[2021/03/courtney-cook-qFVPPU1mrMM-unsplash-1-scaled-1.jpg]]></wp:meta_value>
495
+ </wp:postmeta>
496
+ <wp:postmeta>
497
+ <wp:meta_key><![CDATA[_wp_attachment_metadata]]></wp:meta_key>
498
+ <wp:meta_value><![CDATA[a:5:{s:5:"width";i:1707;s:6:"height";i:2560;s:4:"file";s:57:"2021/03/courtney-cook-qFVPPU1mrMM-unsplash-1-scaled-1.jpg";s:5:"sizes";a:6:{s:6:"medium";a:4:{s:4:"file";s:57:"courtney-cook-qFVPPU1mrMM-unsplash-1-scaled-1-200x300.jpg";s:5:"width";i:200;s:6:"height";i:300;s:9:"mime-type";s:10:"image/jpeg";}s:5:"large";a:4:{s:4:"file";s:58:"courtney-cook-qFVPPU1mrMM-unsplash-1-scaled-1-683x1024.jpg";s:5:"width";i:683;s:6:"height";i:1024;s:9:"mime-type";s:10:"image/jpeg";}s:9:"thumbnail";a:4:{s:4:"file";s:57:"courtney-cook-qFVPPU1mrMM-unsplash-1-scaled-1-150x150.jpg";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:10:"image/jpeg";}s:12:"medium_large";a:4:{s:4:"file";s:58:"courtney-cook-qFVPPU1mrMM-unsplash-1-scaled-1-768x1152.jpg";s:5:"width";i:768;s:6:"height";i:1152;s:9:"mime-type";s:10:"image/jpeg";}s:9:"1536x1536";a:4:{s:4:"file";s:59:"courtney-cook-qFVPPU1mrMM-unsplash-1-scaled-1-1024x1536.jpg";s:5:"width";i:1024;s:6:"height";i:1536;s:9:"mime-type";s:10:"image/jpeg";}s:9:"2048x2048";a:4:{s:4:"file";s:59:"courtney-cook-qFVPPU1mrMM-unsplash-1-scaled-1-1366x2048.jpg";s:5:"width";i:1366;s:6:"height";i:2048;s:9:"mime-type";s:10:"image/jpeg";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}]]></wp:meta_value>
499
+ </wp:postmeta>
500
+ </item>
501
+ <item>
502
+ <title><![CDATA[jorge-cesar-Atgu8TywltQ-unsplash]]></title>
503
+ <link>https://ocdi.com/book-now/jorge-cesar-atgu8tywltq-unsplash/</link>
504
+ <pubDate>Wed, 10 Mar 2021 22:30:25 +0000</pubDate>
505
+ <guid isPermaLink="false">https://ocdi.com/wp-content/uploads/2021/03/jorge-cesar-Atgu8TywltQ-unsplash.jpg</guid>
506
+ <description></description>
507
+ <content:encoded><![CDATA[]]></content:encoded>
508
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
509
+ <wp:post_id>2484</wp:post_id>
510
+ <wp:post_date><![CDATA[2021-03-10 17:30:25]]></wp:post_date>
511
+ <wp:post_date_gmt><![CDATA[2021-03-10 22:30:25]]></wp:post_date_gmt>
512
+ <wp:post_modified><![CDATA[2021-03-22 15:37:00]]></wp:post_modified>
513
+ <wp:post_modified_gmt><![CDATA[2021-03-22 15:37:00]]></wp:post_modified_gmt>
514
+ <wp:comment_status><![CDATA[open]]></wp:comment_status>
515
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
516
+ <wp:post_name><![CDATA[jorge-cesar-atgu8tywltq-unsplash]]></wp:post_name>
517
+ <wp:status><![CDATA[inherit]]></wp:status>
518
+ <wp:post_parent>2372</wp:post_parent>
519
+ <wp:menu_order>0</wp:menu_order>
520
+ <wp:post_type><![CDATA[attachment]]></wp:post_type>
521
+ <wp:post_password><![CDATA[]]></wp:post_password>
522
+ <wp:is_sticky>0</wp:is_sticky>
523
+ <wp:attachment_url><![CDATA[https://ocdi.com/wp-content/uploads/2021/03/jorge-cesar-Atgu8TywltQ-unsplash-scaled-1.jpg]]></wp:attachment_url>
524
+ <wp:postmeta>
525
+ <wp:meta_key><![CDATA[_wp_attached_file]]></wp:meta_key>
526
+ <wp:meta_value><![CDATA[2021/03/jorge-cesar-Atgu8TywltQ-unsplash-scaled-1.jpg]]></wp:meta_value>
527
+ </wp:postmeta>
528
+ <wp:postmeta>
529
+ <wp:meta_key><![CDATA[_wp_attachment_metadata]]></wp:meta_key>
530
+ <wp:meta_value><![CDATA[a:5:{s:5:"width";i:1707;s:6:"height";i:2560;s:4:"file";s:53:"2021/03/jorge-cesar-Atgu8TywltQ-unsplash-scaled-1.jpg";s:5:"sizes";a:6:{s:6:"medium";a:4:{s:4:"file";s:53:"jorge-cesar-Atgu8TywltQ-unsplash-scaled-1-200x300.jpg";s:5:"width";i:200;s:6:"height";i:300;s:9:"mime-type";s:10:"image/jpeg";}s:5:"large";a:4:{s:4:"file";s:54:"jorge-cesar-Atgu8TywltQ-unsplash-scaled-1-683x1024.jpg";s:5:"width";i:683;s:6:"height";i:1024;s:9:"mime-type";s:10:"image/jpeg";}s:9:"thumbnail";a:4:{s:4:"file";s:53:"jorge-cesar-Atgu8TywltQ-unsplash-scaled-1-150x150.jpg";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:10:"image/jpeg";}s:12:"medium_large";a:4:{s:4:"file";s:54:"jorge-cesar-Atgu8TywltQ-unsplash-scaled-1-768x1152.jpg";s:5:"width";i:768;s:6:"height";i:1152;s:9:"mime-type";s:10:"image/jpeg";}s:9:"1536x1536";a:4:{s:4:"file";s:55:"jorge-cesar-Atgu8TywltQ-unsplash-scaled-1-1024x1536.jpg";s:5:"width";i:1024;s:6:"height";i:1536;s:9:"mime-type";s:10:"image/jpeg";}s:9:"2048x2048";a:4:{s:4:"file";s:55:"jorge-cesar-Atgu8TywltQ-unsplash-scaled-1-1366x2048.jpg";s:5:"width";i:1366;s:6:"height";i:2048;s:9:"mime-type";s:10:"image/jpeg";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}]]></wp:meta_value>
531
+ </wp:postmeta>
532
+ </item>
533
+
534
+ <item>
535
+ <title><![CDATA[ian-dooley-d1UPkiFd04A-unsplash]]></title>
536
+ <link>https://ocdi.com/book-now/ian-dooley-d1upkifd04a-unsplash/</link>
537
+ <pubDate>Wed, 10 Mar 2021 22:32:00 +0000</pubDate>
538
+ <guid isPermaLink="false">https://ocdi.com/wp-content/uploads/2021/03/ian-dooley-d1UPkiFd04A-unsplash.jpg</guid>
539
+ <description></description>
540
+ <content:encoded><![CDATA[]]></content:encoded>
541
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
542
+ <wp:post_id>2487</wp:post_id>
543
+ <wp:post_date><![CDATA[2021-03-10 17:32:00]]></wp:post_date>
544
+ <wp:post_date_gmt><![CDATA[2021-03-10 22:32:00]]></wp:post_date_gmt>
545
+ <wp:post_modified><![CDATA[2021-03-22 15:37:00]]></wp:post_modified>
546
+ <wp:post_modified_gmt><![CDATA[2021-03-22 15:37:00]]></wp:post_modified_gmt>
547
+ <wp:comment_status><![CDATA[open]]></wp:comment_status>
548
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
549
+ <wp:post_name><![CDATA[ian-dooley-d1upkifd04a-unsplash]]></wp:post_name>
550
+ <wp:status><![CDATA[inherit]]></wp:status>
551
+ <wp:post_parent>2372</wp:post_parent>
552
+ <wp:menu_order>0</wp:menu_order>
553
+ <wp:post_type><![CDATA[attachment]]></wp:post_type>
554
+ <wp:post_password><![CDATA[]]></wp:post_password>
555
+ <wp:is_sticky>0</wp:is_sticky>
556
+ <wp:attachment_url><![CDATA[https://ocdi.com/wp-content/uploads/2021/03/ian-dooley-d1UPkiFd04A-unsplash-scaled-1.jpg]]></wp:attachment_url>
557
+ <wp:postmeta>
558
+ <wp:meta_key><![CDATA[_wp_attached_file]]></wp:meta_key>
559
+ <wp:meta_value><![CDATA[2021/03/ian-dooley-d1UPkiFd04A-unsplash-scaled-1.jpg]]></wp:meta_value>
560
+ </wp:postmeta>
561
+ <wp:postmeta>
562
+ <wp:meta_key><![CDATA[_wp_attachment_metadata]]></wp:meta_key>
563
+ <wp:meta_value><![CDATA[a:5:{s:5:"width";i:1707;s:6:"height";i:2560;s:4:"file";s:52:"2021/03/ian-dooley-d1UPkiFd04A-unsplash-scaled-1.jpg";s:5:"sizes";a:6:{s:6:"medium";a:4:{s:4:"file";s:52:"ian-dooley-d1UPkiFd04A-unsplash-scaled-1-200x300.jpg";s:5:"width";i:200;s:6:"height";i:300;s:9:"mime-type";s:10:"image/jpeg";}s:5:"large";a:4:{s:4:"file";s:53:"ian-dooley-d1UPkiFd04A-unsplash-scaled-1-683x1024.jpg";s:5:"width";i:683;s:6:"height";i:1024;s:9:"mime-type";s:10:"image/jpeg";}s:9:"thumbnail";a:4:{s:4:"file";s:52:"ian-dooley-d1UPkiFd04A-unsplash-scaled-1-150x150.jpg";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:10:"image/jpeg";}s:12:"medium_large";a:4:{s:4:"file";s:53:"ian-dooley-d1UPkiFd04A-unsplash-scaled-1-768x1152.jpg";s:5:"width";i:768;s:6:"height";i:1152;s:9:"mime-type";s:10:"image/jpeg";}s:9:"1536x1536";a:4:{s:4:"file";s:54:"ian-dooley-d1UPkiFd04A-unsplash-scaled-1-1024x1536.jpg";s:5:"width";i:1024;s:6:"height";i:1536;s:9:"mime-type";s:10:"image/jpeg";}s:9:"2048x2048";a:4:{s:4:"file";s:54:"ian-dooley-d1UPkiFd04A-unsplash-scaled-1-1366x2048.jpg";s:5:"width";i:1366;s:6:"height";i:2048;s:9:"mime-type";s:10:"image/jpeg";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}]]></wp:meta_value>
564
+ </wp:postmeta>
565
+ </item>
566
+
567
+ </channel>
568
+ </rss>
assets/demo-content/contact-page.xml ADDED
@@ -0,0 +1,167 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <!-- generator="WordPress/5.7" created="2021-03-25 06:41" -->
3
+ <rss version="2.0"
4
+ xmlns:excerpt="http://wordpress.org/export/1.2/excerpt/"
5
+ xmlns:content="http://purl.org/rss/1.0/modules/content/"
6
+ xmlns:wfw="http://wellformedweb.org/CommentAPI/"
7
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
8
+ xmlns:wp="http://wordpress.org/export/1.2/"
9
+ >
10
+
11
+ <channel>
12
+ <title>ocdi</title>
13
+ <link>https://ocdi.com</link>
14
+ <description>Just another WordPress site</description>
15
+ <pubDate>Thu, 25 Mar 2021 06:41:21 +0000</pubDate>
16
+ <language>en-US</language>
17
+ <wp:wxr_version>1.2</wp:wxr_version>
18
+ <wp:base_site_url>https://ocdi.com</wp:base_site_url>
19
+ <wp:base_blog_url>https://ocdi.com</wp:base_blog_url>
20
+
21
+ <generator>https://wordpress.org/?v=5.7</generator>
22
+
23
+ <item>
24
+ <title><![CDATA[Contact Us]]></title>
25
+ <link>https://ocdi.com/contact-us/</link>
26
+ <pubDate>Fri, 05 Mar 2021 17:38:57 +0000</pubDate>
27
+ <description></description>
28
+ <content:encoded><![CDATA[<!-- wp:cover {"url":"https://ocdi.com/wp-content/uploads/2021/03/adam-solomon-WHUDOzd5IYU-unsplash-1-scaled-1.jpg","id":2318,"dimRatio":15,"focalPoint":{"x":"0.40","y":"0.26"},"minHeight":375,"minHeightUnit":"px","contentPosition":"center center","align":"wide","className":"is-position-center-center"} -->
29
+ <div class="wp-block-cover alignwide has-background-dim-20 has-background-dim is-position-center-center" style="min-height:375px"><img class="wp-block-cover__image-background wp-image-2318" alt="" src="https://ocdi.com/wp-content/uploads/2021/03/adam-solomon-WHUDOzd5IYU-unsplash-1-scaled-1.jpg" style="object-position:40% 26%" data-object-fit="cover" data-object-position="40% 26%"/><div class="wp-block-cover__inner-container"><!-- wp:paragraph {"align":"center","placeholder":"Write title…","style":{"typography":{"fontSize":74,"lineHeight":"1.1"},"color":{"text":"#fffffa"}}} -->
30
+ <p class="has-text-align-center has-text-color" style="color:#fffffa;font-size:74px;line-height:1.1"></p>
31
+ <!-- /wp:paragraph --></div></div>
32
+ <!-- /wp:cover -->
33
+
34
+ <!-- wp:columns {"verticalAlignment":"center","align":"full"} -->
35
+ <div class="wp-block-columns alignfull are-vertically-aligned-center"><!-- wp:column {"verticalAlignment":"center"} -->
36
+ <div class="wp-block-column is-vertically-aligned-center"><!-- wp:buttons {"contentJustification":"center"} -->
37
+ <div class="wp-block-buttons is-content-justification-center"><!-- wp:button {"backgroundColor":"yellow","textColor":"white"} -->
38
+ <div class="wp-block-button"><a class="wp-block-button__link has-white-color has-yellow-background-color has-text-color has-background" href="#">Learn More About Our Features</a></div>
39
+ <!-- /wp:button --></div>
40
+ <!-- /wp:buttons --></div>
41
+ <!-- /wp:column -->
42
+
43
+ <!-- wp:column {"verticalAlignment":"center"} -->
44
+ <div class="wp-block-column is-vertically-aligned-center"><!-- wp:buttons {"contentJustification":"center"} -->
45
+ <div class="wp-block-buttons is-content-justification-center"><!-- wp:button {"backgroundColor":"yellow","textColor":"white"} -->
46
+ <div class="wp-block-button"><a class="wp-block-button__link has-white-color has-yellow-background-color has-text-color has-background" href="#">View Our Support Documentation</a></div>
47
+ <!-- /wp:button --></div>
48
+ <!-- /wp:buttons --></div>
49
+ <!-- /wp:column --></div>
50
+ <!-- /wp:columns -->
51
+
52
+ <!-- wp:heading {"textAlign":"center","level":1,"align":"full"} -->
53
+ <h1 class="alignfull has-text-align-center" id="h-talk-to-a-human">Talk to a Human</h1>
54
+ <!-- /wp:heading -->
55
+
56
+ <!-- wp:paragraph {"align":"center","fontSize":"medium"} -->
57
+ <p class="has-text-align-center has-medium-font-size">We promise, your message won't disappear into the abyss. We're standing by and ready to help with any questions, comments, or thoughts you may have. </p>
58
+ <!-- /wp:paragraph -->
59
+
60
+ <!-- wp:columns -->
61
+ <div class="wp-block-columns"><!-- wp:column {"width":"33.33%"} -->
62
+ <div class="wp-block-column" style="flex-basis:33.33%"><!-- wp:heading {"textAlign":"center","align":"full"} -->
63
+ <h2 class="alignfull has-text-align-center" id="h-let-s-chat">Let's Chat!</h2>
64
+ <!-- /wp:heading -->
65
+
66
+ <!-- wp:image {"id":2367,"sizeSlug":"large","linkDestination":"none"} -->
67
+ <figure class="wp-block-image size-large"><img src="https://ocdi.com/wp-content/uploads/2021/03/animated-arrow-form.gif" alt="" class="wp-image-2367"/></figure>
68
+ <!-- /wp:image --></div>
69
+ <!-- /wp:column -->
70
+
71
+ <!-- wp:column {"width":"66.66%"} -->
72
+ <div class="wp-block-column" style="flex-basis:66.66%"><!-- wp:wpforms/form-selector {"formId":"9999"} /--></div>
73
+ <!-- /wp:column --></div>
74
+ <!-- /wp:columns -->]]></content:encoded>
75
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
76
+ <wp:post_id>2307</wp:post_id>
77
+ <wp:post_date><![CDATA[2021-03-05 12:38:57]]></wp:post_date>
78
+ <wp:post_date_gmt><![CDATA[2021-03-05 17:38:57]]></wp:post_date_gmt>
79
+ <wp:post_modified><![CDATA[2021-03-24 12:24:08]]></wp:post_modified>
80
+ <wp:post_modified_gmt><![CDATA[2021-03-24 12:24:08]]></wp:post_modified_gmt>
81
+ <wp:comment_status><![CDATA[closed]]></wp:comment_status>
82
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
83
+ <wp:post_name><![CDATA[contact-us]]></wp:post_name>
84
+ <wp:status><![CDATA[publish]]></wp:status>
85
+ <wp:post_parent>0</wp:post_parent>
86
+ <wp:menu_order>0</wp:menu_order>
87
+ <wp:post_type><![CDATA[page]]></wp:post_type>
88
+ <wp:post_password><![CDATA[]]></wp:post_password>
89
+ <wp:is_sticky>0</wp:is_sticky>
90
+ <wp:postmeta>
91
+ <wp:meta_key><![CDATA[ocdi_precreated_demo]]></wp:meta_key>
92
+ <wp:meta_value><![CDATA[contact-page]]></wp:meta_value>
93
+ </wp:postmeta>
94
+ <wp:postmeta>
95
+ <wp:meta_key><![CDATA[ocdi_precreated_demo_updated]]></wp:meta_key>
96
+ <wp:meta_value><![CDATA[no]]></wp:meta_value>
97
+ </wp:postmeta>
98
+ </item>
99
+
100
+ <item>
101
+ <title><![CDATA[animated-arrow-form]]></title>
102
+ <link>https://ocdi.com/contact-us/animated-arrow-form/</link>
103
+ <pubDate>Fri, 05 Mar 2021 23:11:12 +0000</pubDate>
104
+ <guid isPermaLink="false">https://ocdi.com/wp-content/uploads/2021/03/animated-arrow-form.gif</guid>
105
+ <description></description>
106
+ <content:encoded><![CDATA[]]></content:encoded>
107
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
108
+ <wp:post_id>2367</wp:post_id>
109
+ <wp:post_date><![CDATA[2021-03-05 18:11:12]]></wp:post_date>
110
+ <wp:post_date_gmt><![CDATA[2021-03-05 23:11:12]]></wp:post_date_gmt>
111
+ <wp:post_modified><![CDATA[2021-03-22 15:36:58]]></wp:post_modified>
112
+ <wp:post_modified_gmt><![CDATA[2021-03-22 15:36:58]]></wp:post_modified_gmt>
113
+ <wp:comment_status><![CDATA[open]]></wp:comment_status>
114
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
115
+ <wp:post_name><![CDATA[animated-arrow-form]]></wp:post_name>
116
+ <wp:status><![CDATA[inherit]]></wp:status>
117
+ <wp:post_parent>2307</wp:post_parent>
118
+ <wp:menu_order>0</wp:menu_order>
119
+ <wp:post_type><![CDATA[attachment]]></wp:post_type>
120
+ <wp:post_password><![CDATA[]]></wp:post_password>
121
+ <wp:is_sticky>0</wp:is_sticky>
122
+ <wp:attachment_url><![CDATA[https://ocdi.com/wp-content/uploads/2021/03/animated-arrow-form.gif]]></wp:attachment_url>
123
+ <wp:postmeta>
124
+ <wp:meta_key><![CDATA[_wp_attached_file]]></wp:meta_key>
125
+ <wp:meta_value><![CDATA[2021/03/animated-arrow-form.gif]]></wp:meta_value>
126
+ </wp:postmeta>
127
+ <wp:postmeta>
128
+ <wp:meta_key><![CDATA[_wp_attachment_metadata]]></wp:meta_key>
129
+ <wp:meta_value><![CDATA[a:5:{s:5:"width";i:600;s:6:"height";i:600;s:4:"file";s:31:"2021/03/animated-arrow-form.gif";s:5:"sizes";a:2:{s:6:"medium";a:4:{s:4:"file";s:31:"animated-arrow-form-300x300.gif";s:5:"width";i:300;s:6:"height";i:300;s:9:"mime-type";s:9:"image/gif";}s:9:"thumbnail";a:4:{s:4:"file";s:31:"animated-arrow-form-150x150.gif";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:9:"image/gif";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}]]></wp:meta_value>
130
+ </wp:postmeta>
131
+ </item>
132
+
133
+ <item>
134
+ <title><![CDATA[adam-solomon-WHUDOzd5IYU-unsplash-1]]></title>
135
+ <link>https://ocdi.com/contact-us/adam-solomon-whudozd5iyu-unsplash-1/</link>
136
+ <pubDate>Fri, 05 Mar 2021 17:25:32 +0000</pubDate>
137
+ <guid isPermaLink="false">https://ocdi.com/wp-content/uploads/2021/03/adam-solomon-WHUDOzd5IYU-unsplash-1-scaled-1.jpg</guid>
138
+ <description></description>
139
+ <content:encoded><![CDATA[]]></content:encoded>
140
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
141
+ <wp:post_id>2318</wp:post_id>
142
+ <wp:post_date><![CDATA[2021-03-05 12:25:32]]></wp:post_date>
143
+ <wp:post_date_gmt><![CDATA[2021-03-05 17:25:32]]></wp:post_date_gmt>
144
+ <wp:post_modified><![CDATA[2021-03-22 15:36:57]]></wp:post_modified>
145
+ <wp:post_modified_gmt><![CDATA[2021-03-22 15:36:57]]></wp:post_modified_gmt>
146
+ <wp:comment_status><![CDATA[open]]></wp:comment_status>
147
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
148
+ <wp:post_name><![CDATA[adam-solomon-whudozd5iyu-unsplash-1]]></wp:post_name>
149
+ <wp:status><![CDATA[inherit]]></wp:status>
150
+ <wp:post_parent>2307</wp:post_parent>
151
+ <wp:menu_order>0</wp:menu_order>
152
+ <wp:post_type><![CDATA[attachment]]></wp:post_type>
153
+ <wp:post_password><![CDATA[]]></wp:post_password>
154
+ <wp:is_sticky>0</wp:is_sticky>
155
+ <wp:attachment_url><![CDATA[https://ocdi.com/wp-content/uploads/2021/03/adam-solomon-WHUDOzd5IYU-unsplash-1-scaled-1.jpg]]></wp:attachment_url>
156
+ <wp:postmeta>
157
+ <wp:meta_key><![CDATA[_wp_attached_file]]></wp:meta_key>
158
+ <wp:meta_value><![CDATA[2021/03/adam-solomon-WHUDOzd5IYU-unsplash-1-scaled-1.jpg]]></wp:meta_value>
159
+ </wp:postmeta>
160
+ <wp:postmeta>
161
+ <wp:meta_key><![CDATA[_wp_attachment_metadata]]></wp:meta_key>
162
+ <wp:meta_value><![CDATA[a:5:{s:5:"width";i:2560;s:6:"height";i:1105;s:4:"file";s:56:"2021/03/adam-solomon-WHUDOzd5IYU-unsplash-1-scaled-1.jpg";s:5:"sizes";a:6:{s:6:"medium";a:4:{s:4:"file";s:56:"adam-solomon-WHUDOzd5IYU-unsplash-1-scaled-1-300x129.jpg";s:5:"width";i:300;s:6:"height";i:129;s:9:"mime-type";s:10:"image/jpeg";}s:5:"large";a:4:{s:4:"file";s:57:"adam-solomon-WHUDOzd5IYU-unsplash-1-scaled-1-1024x442.jpg";s:5:"width";i:1024;s:6:"height";i:442;s:9:"mime-type";s:10:"image/jpeg";}s:9:"thumbnail";a:4:{s:4:"file";s:56:"adam-solomon-WHUDOzd5IYU-unsplash-1-scaled-1-150x150.jpg";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:10:"image/jpeg";}s:12:"medium_large";a:4:{s:4:"file";s:56:"adam-solomon-WHUDOzd5IYU-unsplash-1-scaled-1-768x332.jpg";s:5:"width";i:768;s:6:"height";i:332;s:9:"mime-type";s:10:"image/jpeg";}s:9:"1536x1536";a:4:{s:4:"file";s:57:"adam-solomon-WHUDOzd5IYU-unsplash-1-scaled-1-1536x663.jpg";s:5:"width";i:1536;s:6:"height";i:663;s:9:"mime-type";s:10:"image/jpeg";}s:9:"2048x2048";a:4:{s:4:"file";s:57:"adam-solomon-WHUDOzd5IYU-unsplash-1-scaled-1-2048x884.jpg";s:5:"width";i:2048;s:6:"height";i:884;s:9:"mime-type";s:10:"image/jpeg";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}]]></wp:meta_value>
163
+ </wp:postmeta>
164
+ </item>
165
+
166
+ </channel>
167
+ </rss>
assets/demo-content/faq-page.xml ADDED
@@ -0,0 +1,157 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <!-- generator="WordPress/5.7" created="2021-03-25 06:41" -->
3
+ <rss version="2.0"
4
+ xmlns:excerpt="http://wordpress.org/export/1.2/excerpt/"
5
+ xmlns:content="http://purl.org/rss/1.0/modules/content/"
6
+ xmlns:wfw="http://wellformedweb.org/CommentAPI/"
7
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
8
+ xmlns:wp="http://wordpress.org/export/1.2/"
9
+ >
10
+
11
+ <channel>
12
+ <title>ocdi</title>
13
+ <link>https://ocdi.com</link>
14
+ <description>Just another WordPress site</description>
15
+ <pubDate>Thu, 25 Mar 2021 06:41:21 +0000</pubDate>
16
+ <language>en-US</language>
17
+ <wp:wxr_version>1.2</wp:wxr_version>
18
+ <wp:base_site_url>https://ocdi.com</wp:base_site_url>
19
+ <wp:base_blog_url>https://ocdi.com</wp:base_blog_url>
20
+
21
+ <generator>https://wordpress.org/?v=5.7</generator>
22
+
23
+ <item>
24
+ <title><![CDATA[FAQ]]></title>
25
+ <link>https://ocdi.com/faq/</link>
26
+ <pubDate>Fri, 26 Feb 2021 20:33:06 +0000</pubDate>
27
+ <description></description>
28
+ <content:encoded><![CDATA[<!-- wp:media-text {"mediaPosition":"right","mediaId":2203,"mediaLink":"https://ocdi.com/faq/pexels-dids-1616472-1/","mediaType":"image","mediaSizeSlug":"full","imageFill":true,"className":"is-style-default"} -->
29
+ <div class="wp-block-media-text alignwide has-media-on-the-right is-stacked-on-mobile is-image-fill is-style-default"><figure class="wp-block-media-text__media" style="background-image:url(https://ocdi.com/wp-content/uploads/2021/02/pexels-dids-1616472-1-scaled-1.jpg);background-position:50% 50%"><img src="https://ocdi.com/wp-content/uploads/2021/02/pexels-dids-1616472-1-scaled-1.jpg" alt="" class="wp-image-2203 size-full"/></figure><div class="wp-block-media-text__content"><!-- wp:heading -->
30
+ <h2 id="h-got-questions-we-re-here-to-help-get-you-started-with-our-product"><strong>Got Questions? We’re Here to Help Get You Started With Our Product.</strong></h2>
31
+ <!-- /wp:heading --></div></div>
32
+ <!-- /wp:media-text -->
33
+
34
+ <!-- wp:search {"label":"What Do You Need Help With?","buttonText":"Search"} /-->
35
+
36
+ <!-- wp:columns -->
37
+ <div class="wp-block-columns"><!-- wp:column -->
38
+ <div class="wp-block-column"><!-- wp:columns -->
39
+ <div class="wp-block-columns"><!-- wp:column {"width":"100%"} -->
40
+ <div class="wp-block-column" style="flex-basis:100%"><!-- wp:heading {"textAlign":"center"} -->
41
+ <h2 class="has-text-align-center" id="h-frequently-asked-questions">Frequently Asked Questions</h2>
42
+ <!-- /wp:heading --></div>
43
+ <!-- /wp:column --></div>
44
+ <!-- /wp:columns --></div>
45
+ <!-- /wp:column --></div>
46
+ <!-- /wp:columns -->
47
+
48
+ <!-- wp:columns -->
49
+ <div class="wp-block-columns"><!-- wp:column -->
50
+ <div class="wp-block-column"><!-- wp:heading {"textAlign":"left","level":3,"align":"wide"} -->
51
+ <h3 class="alignwide has-text-align-left" id="h-what-if-i-change-my-mind">What if I change my mind?</h3>
52
+ <!-- /wp:heading --></div>
53
+ <!-- /wp:column -->
54
+
55
+ <!-- wp:column -->
56
+ <div class="wp-block-column"><!-- wp:paragraph -->
57
+ <p>No problem! We're confident you'll love our product. We offer a 14-day money-back guarantee, no questions asked. </p>
58
+ <!-- /wp:paragraph --></div>
59
+ <!-- /wp:column --></div>
60
+ <!-- /wp:columns -->
61
+
62
+ <!-- wp:columns -->
63
+ <div class="wp-block-columns"><!-- wp:column -->
64
+ <div class="wp-block-column"><!-- wp:heading {"level":3,"align":"full"} -->
65
+ <h3 class="alignfull" id="h-is-your-product-eco-friendly">Is your product eco-friendly?</h3>
66
+ <!-- /wp:heading --></div>
67
+ <!-- /wp:column -->
68
+
69
+ <!-- wp:column -->
70
+ <div class="wp-block-column"><!-- wp:paragraph -->
71
+ <p>It sure is. We're 100% biodegradable and sustainable. Plus, we're Leaping Bunny certified.</p>
72
+ <!-- /wp:paragraph --></div>
73
+ <!-- /wp:column --></div>
74
+ <!-- /wp:columns -->
75
+
76
+ <!-- wp:columns -->
77
+ <div class="wp-block-columns"><!-- wp:column -->
78
+ <div class="wp-block-column"><!-- wp:heading {"level":3,"align":"full"} -->
79
+ <h3 class="alignfull" id="h-do-you-offer-any-discounts">Do you offer any discounts?</h3>
80
+ <!-- /wp:heading -->
81
+
82
+ <!-- wp:paragraph -->
83
+ <p></p>
84
+ <!-- /wp:paragraph --></div>
85
+ <!-- /wp:column -->
86
+
87
+ <!-- wp:column -->
88
+ <div class="wp-block-column"><!-- wp:paragraph -->
89
+ <p>Although we don't currently have any active coupon codes, we occasionally run seasonal sales - <a href="http://newsletterlandingpageexample.com">join our newsletter</a> to stay updated!</p>
90
+ <!-- /wp:paragraph --></div>
91
+ <!-- /wp:column --></div>
92
+ <!-- /wp:columns -->
93
+
94
+ <!-- wp:heading {"textAlign":"center"} -->
95
+ <h2 class="has-text-align-center" id="h-still-need-help-we-re-here">Still Need Help? We're Here!</h2>
96
+ <!-- /wp:heading -->
97
+
98
+ <!-- wp:buttons {"contentJustification":"center"} -->
99
+ <div class="wp-block-buttons is-content-justification-center"><!-- wp:button -->
100
+ <div class="wp-block-button"><a class="wp-block-button__link">Contact Us Now</a></div>
101
+ <!-- /wp:button --></div>
102
+ <!-- /wp:buttons -->
103
+
104
+ <!-- wp:paragraph -->
105
+ <p></p>
106
+ <!-- /wp:paragraph -->]]></content:encoded>
107
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
108
+ <wp:post_date><![CDATA[2021-02-26 15:33:06]]></wp:post_date>
109
+ <wp:post_date_gmt><![CDATA[2021-02-26 20:33:06]]></wp:post_date_gmt>
110
+ <wp:post_modified><![CDATA[2021-03-29 14:36:50]]></wp:post_modified>
111
+ <wp:post_modified_gmt><![CDATA[2021-03-29 14:36:50]]></wp:post_modified_gmt>
112
+ <wp:comment_status><![CDATA[closed]]></wp:comment_status>
113
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
114
+ <wp:post_name><![CDATA[faq]]></wp:post_name>
115
+ <wp:status><![CDATA[publish]]></wp:status>
116
+ <wp:post_parent>0</wp:post_parent>
117
+ <wp:menu_order>0</wp:menu_order>
118
+ <wp:post_type><![CDATA[page]]></wp:post_type>
119
+ <wp:post_password><![CDATA[]]></wp:post_password>
120
+ <wp:is_sticky>0</wp:is_sticky>
121
+ </item>
122
+
123
+ <item>
124
+ <title><![CDATA[pexels-dids-1616472-1]]></title>
125
+ <link>https://ocdi.com/faq/pexels-dids-1616472-1/</link>
126
+ <pubDate>Fri, 26 Feb 2021 20:26:40 +0000</pubDate>
127
+ <guid isPermaLink="false">https://ocdi.com/wp-content/uploads/2021/02/pexels-dids-1616472-1.jpg</guid>
128
+ <description></description>
129
+ <content:encoded><![CDATA[]]></content:encoded>
130
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
131
+ <wp:post_id>2203</wp:post_id>
132
+ <wp:post_date><![CDATA[2021-02-26 15:26:40]]></wp:post_date>
133
+ <wp:post_date_gmt><![CDATA[2021-02-26 20:26:40]]></wp:post_date_gmt>
134
+ <wp:post_modified><![CDATA[2021-03-22 15:36:55]]></wp:post_modified>
135
+ <wp:post_modified_gmt><![CDATA[2021-03-22 15:36:55]]></wp:post_modified_gmt>
136
+ <wp:comment_status><![CDATA[open]]></wp:comment_status>
137
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
138
+ <wp:post_name><![CDATA[pexels-dids-1616472-1]]></wp:post_name>
139
+ <wp:status><![CDATA[inherit]]></wp:status>
140
+ <wp:post_parent>2201</wp:post_parent>
141
+ <wp:menu_order>0</wp:menu_order>
142
+ <wp:post_type><![CDATA[attachment]]></wp:post_type>
143
+ <wp:post_password><![CDATA[]]></wp:post_password>
144
+ <wp:is_sticky>0</wp:is_sticky>
145
+ <wp:attachment_url><![CDATA[https://ocdi.com/wp-content/uploads/2021/02/pexels-dids-1616472-1-scaled-1.jpg]]></wp:attachment_url>
146
+ <wp:postmeta>
147
+ <wp:meta_key><![CDATA[_wp_attached_file]]></wp:meta_key>
148
+ <wp:meta_value><![CDATA[2021/02/pexels-dids-1616472-1-scaled-1.jpg]]></wp:meta_value>
149
+ </wp:postmeta>
150
+ <wp:postmeta>
151
+ <wp:meta_key><![CDATA[_wp_attachment_metadata]]></wp:meta_key>
152
+ <wp:meta_value><![CDATA[a:5:{s:5:"width";i:2560;s:6:"height";i:1707;s:4:"file";s:42:"2021/02/pexels-dids-1616472-1-scaled-1.jpg";s:5:"sizes";a:6:{s:6:"medium";a:4:{s:4:"file";s:42:"pexels-dids-1616472-1-scaled-1-300x200.jpg";s:5:"width";i:300;s:6:"height";i:200;s:9:"mime-type";s:10:"image/jpeg";}s:5:"large";a:4:{s:4:"file";s:43:"pexels-dids-1616472-1-scaled-1-1024x683.jpg";s:5:"width";i:1024;s:6:"height";i:683;s:9:"mime-type";s:10:"image/jpeg";}s:9:"thumbnail";a:4:{s:4:"file";s:42:"pexels-dids-1616472-1-scaled-1-150x150.jpg";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:10:"image/jpeg";}s:12:"medium_large";a:4:{s:4:"file";s:42:"pexels-dids-1616472-1-scaled-1-768x512.jpg";s:5:"width";i:768;s:6:"height";i:512;s:9:"mime-type";s:10:"image/jpeg";}s:9:"1536x1536";a:4:{s:4:"file";s:44:"pexels-dids-1616472-1-scaled-1-1536x1024.jpg";s:5:"width";i:1536;s:6:"height";i:1024;s:9:"mime-type";s:10:"image/jpeg";}s:9:"2048x2048";a:4:{s:4:"file";s:44:"pexels-dids-1616472-1-scaled-1-2048x1366.jpg";s:5:"width";i:2048;s:6:"height";i:1366;s:9:"mime-type";s:10:"image/jpeg";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}]]></wp:meta_value>
153
+ </wp:postmeta>
154
+ </item>
155
+
156
+ </channel>
157
+ </rss>
assets/demo-content/meet-the-team-page.xml ADDED
@@ -0,0 +1,287 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <!-- generator="WordPress/5.7" created="2021-03-25 06:41" -->
3
+ <rss version="2.0"
4
+ xmlns:excerpt="http://wordpress.org/export/1.2/excerpt/"
5
+ xmlns:content="http://purl.org/rss/1.0/modules/content/"
6
+ xmlns:wfw="http://wellformedweb.org/CommentAPI/"
7
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
8
+ xmlns:wp="http://wordpress.org/export/1.2/"
9
+ >
10
+
11
+ <channel>
12
+ <title>ocdi</title>
13
+ <link>https://ocdi.com</link>
14
+ <description>Just another WordPress site</description>
15
+ <pubDate>Thu, 25 Mar 2021 06:41:21 +0000</pubDate>
16
+ <language>en-US</language>
17
+ <wp:wxr_version>1.2</wp:wxr_version>
18
+ <wp:base_site_url>https://ocdi.com</wp:base_site_url>
19
+ <wp:base_blog_url>https://ocdi.com</wp:base_blog_url>
20
+
21
+ <generator>https://wordpress.org/?v=5.7</generator>
22
+
23
+ <item>
24
+ <title><![CDATA[Meet the Team]]></title>
25
+ <link>https://ocdi.com/meet-the-team/</link>
26
+ <pubDate>Tue, 09 Mar 2021 11:43:12 +0000</pubDate>
27
+ <description></description>
28
+ <content:encoded><![CDATA[<!-- wp:paragraph {"align":"center"} -->
29
+ <p class="has-text-align-center">Meet the awesome team behind Acme Marketing.</p>
30
+ <!-- /wp:paragraph -->
31
+
32
+ <!-- wp:columns {"className":"is-style-default"} -->
33
+ <div class="wp-block-columns is-style-default"><!-- wp:column -->
34
+ <div class="wp-block-column"><!-- wp:heading {"textAlign":"center","level":3} -->
35
+ <h3 class="has-text-align-center">Leah Robinson</h3>
36
+ <!-- /wp:heading -->
37
+
38
+ <!-- wp:image {"align":"center","id":2098,"width":200,"height":200,"sizeSlug":"large","linkDestination":"none","className":"is-style-rounded"} -->
39
+ <div class="wp-block-image is-style-rounded"><figure class="aligncenter size-large is-resized"><img src="https://ocdi.com/wp-content/uploads/2021/02/demo-woman.png" alt="" class="wp-image-2098" width="200" height="200"/></figure></div>
40
+ <!-- /wp:image --></div>
41
+ <!-- /wp:column -->
42
+
43
+ <!-- wp:column -->
44
+ <div class="wp-block-column"><!-- wp:heading {"textAlign":"center","level":3} -->
45
+ <h3 class="has-text-align-center">Dan D. Connor</h3>
46
+ <!-- /wp:heading -->
47
+
48
+ <!-- wp:image {"align":"center","id":2100,"width":200,"height":200,"sizeSlug":"large","linkDestination":"none","className":"is-style-rounded"} -->
49
+ <div class="wp-block-image is-style-rounded"><figure class="aligncenter size-large is-resized"><img src="https://ocdi.com/wp-content/uploads/2021/02/demo-man-2.png" alt="" class="wp-image-2100" width="200" height="200"/></figure></div>
50
+ <!-- /wp:image --></div>
51
+ <!-- /wp:column -->
52
+
53
+ <!-- wp:column -->
54
+ <div class="wp-block-column"><!-- wp:columns -->
55
+ <div class="wp-block-columns"><!-- wp:column -->
56
+ <div class="wp-block-column"><!-- wp:heading {"textAlign":"center","level":3} -->
57
+ <h3 class="has-text-align-center">Thomas J. Turner</h3>
58
+ <!-- /wp:heading -->
59
+
60
+ <!-- wp:image {"align":"center","id":2099,"width":200,"height":200,"sizeSlug":"large","linkDestination":"none","className":"is-style-rounded"} -->
61
+ <div class="wp-block-image is-style-rounded"><figure class="aligncenter size-large is-resized"><img src="https://ocdi.com/wp-content/uploads/2021/02/demo-man.png" alt="" class="wp-image-2099" width="200" height="200"/></figure></div>
62
+ <!-- /wp:image --></div>
63
+ <!-- /wp:column --></div>
64
+ <!-- /wp:columns --></div>
65
+ <!-- /wp:column --></div>
66
+ <!-- /wp:columns -->
67
+
68
+ <!-- wp:separator {"className":"is-style-dots"} -->
69
+ <hr class="wp-block-separator is-style-dots"/>
70
+ <!-- /wp:separator -->
71
+
72
+ <!-- wp:columns -->
73
+ <div class="wp-block-columns"><!-- wp:column {"width":"33%"} -->
74
+ <div class="wp-block-column" style="flex-basis:33%"><!-- wp:image {"id":2098,"sizeSlug":"large","linkDestination":"none","className":"is-style-rounded"} -->
75
+ <figure class="wp-block-image size-large is-style-rounded"><img src="https://ocdi.com/wp-content/uploads/2021/02/demo-woman.png" alt="" class="wp-image-2098"/></figure>
76
+ <!-- /wp:image -->
77
+
78
+ <!-- wp:social-links {"className":"is-style-logos-only"} -->
79
+ <ul class="wp-block-social-links is-style-logos-only"><!-- wp:social-link {"url":"#url","service":"linkedin"} /-->
80
+
81
+ <!-- wp:social-link {"url":"#url","service":"twitch"} /-->
82
+
83
+ <!-- wp:social-link {"url":"#url","service":"youtube"} /-->
84
+
85
+ <!-- wp:social-link {"url":"#url","service":"facebook"} /--></ul>
86
+ <!-- /wp:social-links --></div>
87
+ <!-- /wp:column -->
88
+
89
+ <!-- wp:column -->
90
+ <div class="wp-block-column"><!-- wp:paragraph -->
91
+ <p>Leah is the CEO and founder of Acme Marketing. She spent several years working as a freelance marketing consultant before moving into full-time management positions. Before founding Acme Marketing, Leah handled several million-dollar accounts for some of the biggest names in tech.</p>
92
+ <!-- /wp:paragraph --></div>
93
+ <!-- /wp:column --></div>
94
+ <!-- /wp:columns -->
95
+
96
+ <!-- wp:spacer -->
97
+ <div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>
98
+ <!-- /wp:spacer -->
99
+
100
+ <!-- wp:columns -->
101
+ <div class="wp-block-columns"><!-- wp:column {"width":"33%"} -->
102
+ <div class="wp-block-column" style="flex-basis:33%"><!-- wp:image {"id":2099,"sizeSlug":"large","linkDestination":"none","className":"is-style-rounded"} -->
103
+ <figure class="wp-block-image size-large is-style-rounded"><img src="https://ocdi.com/wp-content/uploads/2021/02/demo-man.png" alt="" class="wp-image-2099"/></figure>
104
+ <!-- /wp:image -->
105
+
106
+ <!-- wp:social-links {"className":"is-style-logos-only"} -->
107
+ <ul class="wp-block-social-links is-style-logos-only"><!-- wp:social-link {"url":"#url","service":"linkedin"} /-->
108
+
109
+ <!-- wp:social-link {"url":"#url","service":"twitch"} /-->
110
+
111
+ <!-- wp:social-link {"url":"#url","service":"youtube"} /-->
112
+
113
+ <!-- wp:social-link {"url":"#url","service":"facebook"} /--></ul>
114
+ <!-- /wp:social-links --></div>
115
+ <!-- /wp:column -->
116
+
117
+ <!-- wp:column -->
118
+ <div class="wp-block-column"><!-- wp:paragraph -->
119
+ <p>Thomas started out as a freelance content writer and quickly moved into full-time content production for one of America's biggest homeware brands. As Acme's first full-time employee, he's developed and perfected the content strategy from the ground up. </p>
120
+ <!-- /wp:paragraph --></div>
121
+ <!-- /wp:column --></div>
122
+ <!-- /wp:columns -->
123
+
124
+ <!-- wp:spacer -->
125
+ <div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>
126
+ <!-- /wp:spacer -->
127
+
128
+ <!-- wp:columns -->
129
+ <div class="wp-block-columns"><!-- wp:column {"width":"33%"} -->
130
+ <div class="wp-block-column" style="flex-basis:33%"><!-- wp:image {"id":2100,"sizeSlug":"large","linkDestination":"none","className":"is-style-rounded"} -->
131
+ <figure class="wp-block-image size-large is-style-rounded"><img src="https://ocdi.com/wp-content/uploads/2021/02/demo-man-2.png" alt="" class="wp-image-2100"/></figure>
132
+ <!-- /wp:image -->
133
+
134
+ <!-- wp:social-links {"className":"is-style-logos-only"} -->
135
+ <ul class="wp-block-social-links is-style-logos-only"><!-- wp:social-link {"url":"#url","service":"linkedin"} /-->
136
+
137
+ <!-- wp:social-link {"url":"#url","service":"twitch"} /-->
138
+
139
+ <!-- wp:social-link {"url":"#url","service":"youtube"} /-->
140
+
141
+ <!-- wp:social-link {"url":"#url","service":"facebook"} /--></ul>
142
+ <!-- /wp:social-links --></div>
143
+ <!-- /wp:column -->
144
+
145
+ <!-- wp:column -->
146
+ <div class="wp-block-column"><!-- wp:paragraph -->
147
+ <p>Dan is an experienced social media manager, and his skills span everything from video production to creating PPC campaigns. Dan has deep understanding of the tools and strategies needed to get your content in front of the right people on social networks.</p>
148
+ <!-- /wp:paragraph --></div>
149
+ <!-- /wp:column --></div>
150
+ <!-- /wp:columns -->
151
+
152
+ <!-- wp:paragraph -->
153
+ <p>Contact the Team</p>
154
+ <!-- /wp:paragraph -->
155
+
156
+ <!-- wp:wpforms/form-selector {"formId":"9999"} /-->]]></content:encoded>
157
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
158
+ <wp:post_date><![CDATA[2021-03-09 06:43:12]]></wp:post_date>
159
+ <wp:post_date_gmt><![CDATA[2021-03-09 11:43:12]]></wp:post_date_gmt>
160
+ <wp:post_modified><![CDATA[2021-03-22 15:37:00]]></wp:post_modified>
161
+ <wp:post_modified_gmt><![CDATA[2021-03-22 15:37:00]]></wp:post_modified_gmt>
162
+ <wp:comment_status><![CDATA[closed]]></wp:comment_status>
163
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
164
+ <wp:post_name><![CDATA[meet-the-team]]></wp:post_name>
165
+ <wp:status><![CDATA[publish]]></wp:status>
166
+ <wp:post_parent>0</wp:post_parent>
167
+ <wp:menu_order>0</wp:menu_order>
168
+ <wp:post_type><![CDATA[page]]></wp:post_type>
169
+ <wp:post_password><![CDATA[]]></wp:post_password>
170
+ <wp:is_sticky>0</wp:is_sticky>
171
+ <wp:postmeta>
172
+ <wp:meta_key><![CDATA[ocdi_precreated_demo]]></wp:meta_key>
173
+ <wp:meta_value><![CDATA[contact-page]]></wp:meta_value>
174
+ </wp:postmeta>
175
+ <wp:postmeta>
176
+ <wp:meta_key><![CDATA[ocdi_precreated_demo_updated]]></wp:meta_key>
177
+ <wp:meta_value><![CDATA[no]]></wp:meta_value>
178
+ </wp:postmeta>
179
+ </item>
180
+
181
+ <item>
182
+ <title><![CDATA[demo-woman]]></title>
183
+ <link>https://ocdi.com/meet-the-team/demo-woman/</link>
184
+ <pubDate>Tue, 23 Feb 2021 10:21:11 +0000</pubDate>
185
+ <dc:creator><![CDATA[gcapuder@awesomemotive.com]]></dc:creator>
186
+ <guid isPermaLink="false">https://ocdi.com/wp-content/uploads/2021/02/demo-woman.png</guid>
187
+ <description></description>
188
+ <content:encoded><![CDATA[]]></content:encoded>
189
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
190
+ <wp:post_id>2098</wp:post_id>
191
+ <wp:post_date><![CDATA[2021-02-23 05:21:11]]></wp:post_date>
192
+ <wp:post_date_gmt><![CDATA[2021-02-23 10:21:11]]></wp:post_date_gmt>
193
+ <wp:post_modified><![CDATA[2021-03-22 15:36:54]]></wp:post_modified>
194
+ <wp:post_modified_gmt><![CDATA[2021-03-22 15:36:54]]></wp:post_modified_gmt>
195
+ <wp:comment_status><![CDATA[closed]]></wp:comment_status>
196
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
197
+ <wp:post_name><![CDATA[demo-woman]]></wp:post_name>
198
+ <wp:status><![CDATA[inherit]]></wp:status>
199
+ <wp:post_parent>2097</wp:post_parent>
200
+ <wp:menu_order>0</wp:menu_order>
201
+ <wp:post_type><![CDATA[attachment]]></wp:post_type>
202
+ <wp:post_password><![CDATA[]]></wp:post_password>
203
+ <wp:is_sticky>0</wp:is_sticky>
204
+ <wp:attachment_url><![CDATA[https://ocdi.com/wp-content/uploads/2021/02/demo-woman.png]]></wp:attachment_url>
205
+ <wp:postmeta>
206
+ <wp:meta_key><![CDATA[_wp_attached_file]]></wp:meta_key>
207
+ <wp:meta_value><![CDATA[2021/02/demo-woman.png]]></wp:meta_value>
208
+ </wp:postmeta>
209
+ <wp:postmeta>
210
+ <wp:meta_key><![CDATA[_wp_attachment_metadata]]></wp:meta_key>
211
+ <wp:meta_value><![CDATA[a:5:{s:5:"width";i:800;s:6:"height";i:800;s:4:"file";s:22:"2021/02/demo-woman.png";s:5:"sizes";a:3:{s:6:"medium";a:4:{s:4:"file";s:22:"demo-woman-300x300.png";s:5:"width";i:300;s:6:"height";i:300;s:9:"mime-type";s:9:"image/png";}s:9:"thumbnail";a:4:{s:4:"file";s:22:"demo-woman-150x150.png";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:9:"image/png";}s:12:"medium_large";a:4:{s:4:"file";s:22:"demo-woman-768x768.png";s:5:"width";i:768;s:6:"height";i:768;s:9:"mime-type";s:9:"image/png";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}]]></wp:meta_value>
212
+ </wp:postmeta>
213
+ <wp:postmeta>
214
+ <wp:meta_key><![CDATA[_wp_attachment_image_alt]]></wp:meta_key>
215
+ <wp:meta_value><![CDATA[demo-woman]]></wp:meta_value>
216
+ </wp:postmeta>
217
+ </item>
218
+
219
+ <item>
220
+ <title><![CDATA[demo-man]]></title>
221
+ <link>https://ocdi.com/meet-the-team/demo-man/</link>
222
+ <pubDate>Tue, 23 Feb 2021 10:21:16 +0000</pubDate>
223
+ <dc:creator><![CDATA[gcapuder@awesomemotive.com]]></dc:creator>
224
+ <guid isPermaLink="false">https://ocdi.com/wp-content/uploads/2021/02/demo-man.png</guid>
225
+ <description></description>
226
+ <content:encoded><![CDATA[]]></content:encoded>
227
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
228
+ <wp:post_id>2099</wp:post_id>
229
+ <wp:post_date><![CDATA[2021-02-23 05:21:16]]></wp:post_date>
230
+ <wp:post_date_gmt><![CDATA[2021-02-23 10:21:16]]></wp:post_date_gmt>
231
+ <wp:post_modified><![CDATA[2021-03-22 15:36:54]]></wp:post_modified>
232
+ <wp:post_modified_gmt><![CDATA[2021-03-22 15:36:54]]></wp:post_modified_gmt>
233
+ <wp:comment_status><![CDATA[open]]></wp:comment_status>
234
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
235
+ <wp:post_name><![CDATA[demo-man]]></wp:post_name>
236
+ <wp:status><![CDATA[inherit]]></wp:status>
237
+ <wp:post_parent>2097</wp:post_parent>
238
+ <wp:menu_order>0</wp:menu_order>
239
+ <wp:post_type><![CDATA[attachment]]></wp:post_type>
240
+ <wp:post_password><![CDATA[]]></wp:post_password>
241
+ <wp:is_sticky>0</wp:is_sticky>
242
+ <wp:attachment_url><![CDATA[https://ocdi.com/wp-content/uploads/2021/02/demo-man.png]]></wp:attachment_url>
243
+ <wp:postmeta>
244
+ <wp:meta_key><![CDATA[_wp_attached_file]]></wp:meta_key>
245
+ <wp:meta_value><![CDATA[2021/02/demo-man.png]]></wp:meta_value>
246
+ </wp:postmeta>
247
+ <wp:postmeta>
248
+ <wp:meta_key><![CDATA[_wp_attachment_metadata]]></wp:meta_key>
249
+ <wp:meta_value><![CDATA[a:5:{s:5:"width";i:800;s:6:"height";i:800;s:4:"file";s:20:"2021/02/demo-man.png";s:5:"sizes";a:3:{s:6:"medium";a:4:{s:4:"file";s:20:"demo-man-300x300.png";s:5:"width";i:300;s:6:"height";i:300;s:9:"mime-type";s:9:"image/png";}s:9:"thumbnail";a:4:{s:4:"file";s:20:"demo-man-150x150.png";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:9:"image/png";}s:12:"medium_large";a:4:{s:4:"file";s:20:"demo-man-768x768.png";s:5:"width";i:768;s:6:"height";i:768;s:9:"mime-type";s:9:"image/png";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}]]></wp:meta_value>
250
+ </wp:postmeta>
251
+ </item>
252
+
253
+ <item>
254
+ <title><![CDATA[demo-man-2]]></title>
255
+ <link>https://ocdi.com/meet-the-team/demo-man-2/</link>
256
+ <pubDate>Tue, 23 Feb 2021 10:27:58 +0000</pubDate>
257
+ <guid isPermaLink="false">https://ocdi.com/wp-content/uploads/2021/02/demo-man-2.png</guid>
258
+ <description></description>
259
+ <content:encoded><![CDATA[]]></content:encoded>
260
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
261
+ <wp:post_id>2100</wp:post_id>
262
+ <wp:post_date><![CDATA[2021-02-23 05:27:58]]></wp:post_date>
263
+ <wp:post_date_gmt><![CDATA[2021-02-23 10:27:58]]></wp:post_date_gmt>
264
+ <wp:post_modified><![CDATA[2021-03-22 15:36:54]]></wp:post_modified>
265
+ <wp:post_modified_gmt><![CDATA[2021-03-22 15:36:54]]></wp:post_modified_gmt>
266
+ <wp:comment_status><![CDATA[open]]></wp:comment_status>
267
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
268
+ <wp:post_name><![CDATA[demo-man-2]]></wp:post_name>
269
+ <wp:status><![CDATA[inherit]]></wp:status>
270
+ <wp:post_parent>2097</wp:post_parent>
271
+ <wp:menu_order>0</wp:menu_order>
272
+ <wp:post_type><![CDATA[attachment]]></wp:post_type>
273
+ <wp:post_password><![CDATA[]]></wp:post_password>
274
+ <wp:is_sticky>0</wp:is_sticky>
275
+ <wp:attachment_url><![CDATA[https://ocdi.com/wp-content/uploads/2021/02/demo-man-2.png]]></wp:attachment_url>
276
+ <wp:postmeta>
277
+ <wp:meta_key><![CDATA[_wp_attached_file]]></wp:meta_key>
278
+ <wp:meta_value><![CDATA[2021/02/demo-man-2.png]]></wp:meta_value>
279
+ </wp:postmeta>
280
+ <wp:postmeta>
281
+ <wp:meta_key><![CDATA[_wp_attachment_metadata]]></wp:meta_key>
282
+ <wp:meta_value><![CDATA[a:5:{s:5:"width";i:800;s:6:"height";i:800;s:4:"file";s:22:"2021/02/demo-man-2.png";s:5:"sizes";a:3:{s:6:"medium";a:4:{s:4:"file";s:22:"demo-man-2-300x300.png";s:5:"width";i:300;s:6:"height";i:300;s:9:"mime-type";s:9:"image/png";}s:9:"thumbnail";a:4:{s:4:"file";s:22:"demo-man-2-150x150.png";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:9:"image/png";}s:12:"medium_large";a:4:{s:4:"file";s:22:"demo-man-2-768x768.png";s:5:"width";i:768;s:6:"height";i:768;s:9:"mime-type";s:9:"image/png";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}]]></wp:meta_value>
283
+ </wp:postmeta>
284
+ </item>
285
+
286
+ </channel>
287
+ </rss>
assets/demo-content/menu-page.xml ADDED
@@ -0,0 +1,684 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <!-- generator="WordPress/5.7" created="2021-03-25 06:41" -->
3
+ <rss version="2.0"
4
+ xmlns:excerpt="http://wordpress.org/export/1.2/excerpt/"
5
+ xmlns:content="http://purl.org/rss/1.0/modules/content/"
6
+ xmlns:wfw="http://wellformedweb.org/CommentAPI/"
7
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
8
+ xmlns:wp="http://wordpress.org/export/1.2/"
9
+ >
10
+
11
+ <channel>
12
+ <title>ocdi</title>
13
+ <link>https://ocdi.com</link>
14
+ <description>Just another WordPress site</description>
15
+ <pubDate>Thu, 25 Mar 2021 06:41:21 +0000</pubDate>
16
+ <language>en-US</language>
17
+ <wp:wxr_version>1.2</wp:wxr_version>
18
+ <wp:base_site_url>https://ocdi.com</wp:base_site_url>
19
+ <wp:base_blog_url>https://ocdi.com</wp:base_blog_url>
20
+
21
+ <generator>https://wordpress.org/?v=5.7</generator>
22
+
23
+ <item>
24
+ <title><![CDATA[Menu]]></title>
25
+ <link>https://ocdi.com/menu/</link>
26
+ <pubDate>Tue, 09 Mar 2021 14:34:09 +0000</pubDate>
27
+ <description></description>
28
+ <content:encoded><![CDATA[<!-- wp:image {"align":"full","id":2407,"sizeSlug":"large","linkDestination":"none","className":"is-style-default"} -->
29
+ <figure class="wp-block-image alignfull size-large is-style-default"><img src="https://ocdi.com/wp-content/uploads/2021/03/demo-menu-header-scaled-1-1024x683.jpg" alt="" class="wp-image-2407"/></figure>
30
+ <!-- /wp:image -->
31
+
32
+ <!-- wp:columns -->
33
+ <div class="wp-block-columns"><!-- wp:column -->
34
+ <div class="wp-block-column"><!-- wp:buttons {"contentJustification":"center"} -->
35
+ <div class="wp-block-buttons is-content-justification-center"><!-- wp:button -->
36
+ <div class="wp-block-button"><a class="wp-block-button__link" rel="#lunch">Lunch</a></div>
37
+ <!-- /wp:button --></div>
38
+ <!-- /wp:buttons --></div>
39
+ <!-- /wp:column -->
40
+
41
+ <!-- wp:column -->
42
+ <div class="wp-block-column"><!-- wp:buttons {"contentJustification":"center"} -->
43
+ <div class="wp-block-buttons is-content-justification-center"><!-- wp:button -->
44
+ <div class="wp-block-button"><a class="wp-block-button__link" rel="#dinner">Dinner</a></div>
45
+ <!-- /wp:button --></div>
46
+ <!-- /wp:buttons --></div>
47
+ <!-- /wp:column -->
48
+
49
+ <!-- wp:column -->
50
+ <div class="wp-block-column"><!-- wp:buttons {"contentJustification":"center"} -->
51
+ <div class="wp-block-buttons is-content-justification-center"><!-- wp:button -->
52
+ <div class="wp-block-button"><a class="wp-block-button__link" rel="#dessert">Dessert</a></div>
53
+ <!-- /wp:button --></div>
54
+ <!-- /wp:buttons --></div>
55
+ <!-- /wp:column --></div>
56
+ <!-- /wp:columns -->
57
+
58
+ <!-- wp:separator {"className":"is-style-dots"} -->
59
+ <hr class="wp-block-separator is-style-dots"/>
60
+ <!-- /wp:separator -->
61
+
62
+ <!-- wp:heading {"textAlign":"center","fontSize":"huge"} -->
63
+ <h2 class="has-text-align-center has-huge-font-size" id="lunch">Lunch</h2>
64
+ <!-- /wp:heading -->
65
+
66
+ <!-- wp:columns -->
67
+ <div class="wp-block-columns"><!-- wp:column {"width":"33.33%"} -->
68
+ <div class="wp-block-column" style="flex-basis:33.33%"><!-- wp:image {"id":2411,"sizeSlug":"large","linkDestination":"none","className":"is-style-default"} -->
69
+ <figure class="wp-block-image size-large is-style-default"><img src="https://ocdi.com/wp-content/uploads/2021/03/demo-gyoza-scaled-1-1024x768.jpg" alt="" class="wp-image-2411"/></figure>
70
+ <!-- /wp:image --></div>
71
+ <!-- /wp:column -->
72
+
73
+ <!-- wp:column {"width":"66.66%"} -->
74
+ <div class="wp-block-column" style="flex-basis:66.66%"><!-- wp:heading {"level":4} -->
75
+ <h4>Chicken Gyoza</h4>
76
+ <!-- /wp:heading -->
77
+
78
+ <!-- wp:paragraph {"style":{"typography":{"lineHeight":"1"}},"fontSize":"extra-small"} -->
79
+ <p class="has-extra-small-font-size" style="line-height:1">Japanese dumplings served with soy sauce.<br><em>Ingredients: Lorem, ipsum, dolor, sit, amet.</em></p>
80
+ <!-- /wp:paragraph -->
81
+
82
+ <!-- wp:paragraph {"style":{"typography":{"lineHeight":"1"}}} -->
83
+ <p style="line-height:1">$1</p>
84
+ <!-- /wp:paragraph --></div>
85
+ <!-- /wp:column --></div>
86
+ <!-- /wp:columns -->
87
+
88
+ <!-- wp:columns -->
89
+ <div class="wp-block-columns"><!-- wp:column {"width":"33.33%"} -->
90
+ <div class="wp-block-column" style="flex-basis:33.33%"><!-- wp:image {"id":2420,"sizeSlug":"large","linkDestination":"none","className":"is-style-default"} -->
91
+ <figure class="wp-block-image size-large is-style-default"><img src="https://ocdi.com/wp-content/uploads/2021/03/demo-vegan-edited-scaled-1-1024x768.jpg" alt="" class="wp-image-2420"/></figure>
92
+ <!-- /wp:image --></div>
93
+ <!-- /wp:column -->
94
+
95
+ <!-- wp:column {"width":"66.66%"} -->
96
+ <div class="wp-block-column" style="flex-basis:66.66%"><!-- wp:heading {"level":4} -->
97
+ <h4>Maki Plate</h4>
98
+ <!-- /wp:heading -->
99
+
100
+ <!-- wp:paragraph {"style":{"typography":{"lineHeight":"1"}},"fontSize":"extra-small"} -->
101
+ <p class="has-extra-small-font-size" style="line-height:1">Carrot and avocado sushi plate. Suitable for vegans.<br><em>Ingredients: Lorem, ipsum, dolor, sit, amet.</em> </p>
102
+ <!-- /wp:paragraph -->
103
+
104
+ <!-- wp:paragraph {"style":{"typography":{"lineHeight":"1"}}} -->
105
+ <p style="line-height:1">$1</p>
106
+ <!-- /wp:paragraph --></div>
107
+ <!-- /wp:column --></div>
108
+ <!-- /wp:columns -->
109
+
110
+ <!-- wp:columns -->
111
+ <div class="wp-block-columns"><!-- wp:column {"width":"33.33%"} -->
112
+ <div class="wp-block-column" style="flex-basis:33.33%"><!-- wp:image {"id":2418,"sizeSlug":"large","linkDestination":"none","className":"is-style-default"} -->
113
+ <figure class="wp-block-image size-large is-style-default"><img src="https://ocdi.com/wp-content/uploads/2021/03/demo-salmon-avocado-edited-scaled-1-1024x766.jpg" alt="" class="wp-image-2418"/></figure>
114
+ <!-- /wp:image --></div>
115
+ <!-- /wp:column -->
116
+
117
+ <!-- wp:column {"width":"66.66%"} -->
118
+ <div class="wp-block-column" style="flex-basis:66.66%"><!-- wp:heading {"level":4} -->
119
+ <h4>Salmon &amp; Avocado Lunch Platter</h4>
120
+ <!-- /wp:heading -->
121
+
122
+ <!-- wp:paragraph {"style":{"typography":{"lineHeight":"1"}},"fontSize":"extra-small"} -->
123
+ <p class="has-extra-small-font-size" style="line-height:1">Sushi plate. Available for take-out.<br><em>Ingredients: Lorem, ipsum, dolor, sit, amet.</em></p>
124
+ <!-- /wp:paragraph -->
125
+
126
+ <!-- wp:paragraph {"style":{"typography":{"lineHeight":"1"}}} -->
127
+ <p style="line-height:1">$1</p>
128
+ <!-- /wp:paragraph --></div>
129
+ <!-- /wp:column --></div>
130
+ <!-- /wp:columns -->
131
+
132
+ <!-- wp:columns -->
133
+ <div class="wp-block-columns"><!-- wp:column {"width":"33.33%"} -->
134
+ <div class="wp-block-column" style="flex-basis:33.33%"><!-- wp:image {"id":2419,"sizeSlug":"large","linkDestination":"none","className":"is-style-default"} -->
135
+ <figure class="wp-block-image size-large is-style-default"><img src="https://ocdi.com/wp-content/uploads/2021/03/demo-lunch-edited-scaled-1-1024x764.jpg" alt="" class="wp-image-2419"/></figure>
136
+ <!-- /wp:image --></div>
137
+ <!-- /wp:column -->
138
+
139
+ <!-- wp:column {"width":"66.66%"} -->
140
+ <div class="wp-block-column" style="flex-basis:66.66%"><!-- wp:heading {"level":4} -->
141
+ <h4>Lunch Sharing Platter</h4>
142
+ <!-- /wp:heading -->
143
+
144
+ <!-- wp:paragraph {"style":{"typography":{"lineHeight":"1"}},"fontSize":"extra-small"} -->
145
+ <p class="has-extra-small-font-size" style="line-height:1">Salmon, avocado, and tuna for 3-4 diners. <br><em>Ingredients: Lorem, ipsum, dolor, sit, amet.</em></p>
146
+ <!-- /wp:paragraph -->
147
+
148
+ <!-- wp:paragraph {"style":{"typography":{"lineHeight":"1"}}} -->
149
+ <p style="line-height:1">$1</p>
150
+ <!-- /wp:paragraph --></div>
151
+ <!-- /wp:column --></div>
152
+ <!-- /wp:columns -->
153
+
154
+ <!-- wp:separator {"className":"is-style-dots"} -->
155
+ <hr class="wp-block-separator is-style-dots"/>
156
+ <!-- /wp:separator -->
157
+
158
+ <!-- wp:heading {"textAlign":"center","fontSize":"huge"} -->
159
+ <h2 class="has-text-align-center has-huge-font-size" id="dinner">Dinner</h2>
160
+ <!-- /wp:heading -->
161
+
162
+ <!-- wp:columns -->
163
+ <div class="wp-block-columns"><!-- wp:column {"width":"33.33%"} -->
164
+ <div class="wp-block-column" style="flex-basis:33.33%"><!-- wp:image {"id":2421,"sizeSlug":"large","linkDestination":"none","className":"is-style-default"} -->
165
+ <figure class="wp-block-image size-large is-style-default"><img src="https://ocdi.com/wp-content/uploads/2021/03/demo-salmon-edited-scaled-1-1024x769.jpg" alt="" class="wp-image-2421"/></figure>
166
+ <!-- /wp:image --></div>
167
+ <!-- /wp:column -->
168
+
169
+ <!-- wp:column {"width":"66.66%"} -->
170
+ <div class="wp-block-column" style="flex-basis:66.66%"><!-- wp:heading {"level":4} -->
171
+ <h4>Salmon Maki Special</h4>
172
+ <!-- /wp:heading -->
173
+
174
+ <!-- wp:paragraph {"style":{"typography":{"lineHeight":"1"}},"fontSize":"extra-small"} -->
175
+ <p class="has-extra-small-font-size" style="line-height:1">Salmon in toasted nori.<br><em>Ingredients: Lorem, ipsum, dolor, sit, amet.</em></p>
176
+ <!-- /wp:paragraph -->
177
+
178
+ <!-- wp:paragraph {"style":{"typography":{"lineHeight":"1"}}} -->
179
+ <p style="line-height:1">$1</p>
180
+ <!-- /wp:paragraph --></div>
181
+ <!-- /wp:column --></div>
182
+ <!-- /wp:columns -->
183
+
184
+ <!-- wp:columns -->
185
+ <div class="wp-block-columns"><!-- wp:column {"width":"33.33%"} -->
186
+ <div class="wp-block-column" style="flex-basis:33.33%"><!-- wp:image {"id":2423,"sizeSlug":"large","linkDestination":"none","className":"is-style-default"} -->
187
+ <figure class="wp-block-image size-large is-style-default"><img src="https://ocdi.com/wp-content/uploads/2021/03/demo-tofu-katsu-edited-scaled-1-1024x766.jpg" alt="" class="wp-image-2423"/></figure>
188
+ <!-- /wp:image --></div>
189
+ <!-- /wp:column -->
190
+
191
+ <!-- wp:column {"width":"66.66%"} -->
192
+ <div class="wp-block-column" style="flex-basis:66.66%"><!-- wp:heading {"level":4} -->
193
+ <h4>Tofu Katsu Curry</h4>
194
+ <!-- /wp:heading -->
195
+
196
+ <!-- wp:paragraph {"style":{"typography":{"lineHeight":"1"}},"fontSize":"extra-small"} -->
197
+ <p class="has-extra-small-font-size" style="line-height:1">Served with steamed rice. Suitable for vegans.<br><em>Ingredients: Lorem, ipsum, dolor, sit, amet.</em></p>
198
+ <!-- /wp:paragraph -->
199
+
200
+ <!-- wp:paragraph {"style":{"typography":{"lineHeight":"1"}}} -->
201
+ <p style="line-height:1">$1</p>
202
+ <!-- /wp:paragraph --></div>
203
+ <!-- /wp:column --></div>
204
+ <!-- /wp:columns -->
205
+
206
+ <!-- wp:columns -->
207
+ <div class="wp-block-columns"><!-- wp:column {"width":"33.33%"} -->
208
+ <div class="wp-block-column" style="flex-basis:33.33%"><!-- wp:image {"id":2422,"sizeSlug":"large","linkDestination":"none","className":"is-style-default"} -->
209
+ <figure class="wp-block-image size-large is-style-default"><img src="https://ocdi.com/wp-content/uploads/2021/03/demo-sashimi-deluxe-edited-scaled-1-1024x769.jpg" alt="" class="wp-image-2422"/></figure>
210
+ <!-- /wp:image --></div>
211
+ <!-- /wp:column -->
212
+
213
+ <!-- wp:column {"width":"66.66%"} -->
214
+ <div class="wp-block-column" style="flex-basis:66.66%"><!-- wp:heading {"level":4} -->
215
+ <h4>Sashimi Special</h4>
216
+ <!-- /wp:heading -->
217
+
218
+ <!-- wp:paragraph {"style":{"typography":{"lineHeight":"1"}},"fontSize":"extra-small"} -->
219
+ <p class="has-extra-small-font-size" style="line-height:1">Served with miso.<br><em>Ingredients: Lorem, ipsum, dolor, sit, amet.</em></p>
220
+ <!-- /wp:paragraph -->
221
+
222
+ <!-- wp:paragraph -->
223
+ <p>$1</p>
224
+ <!-- /wp:paragraph --></div>
225
+ <!-- /wp:column --></div>
226
+ <!-- /wp:columns -->
227
+
228
+ <!-- wp:columns -->
229
+ <div class="wp-block-columns"><!-- wp:column {"width":"33.33%"} -->
230
+ <div class="wp-block-column" style="flex-basis:33.33%"><!-- wp:image {"id":2424,"sizeSlug":"large","linkDestination":"none","className":"is-style-default"} -->
231
+ <figure class="wp-block-image size-large is-style-default"><img src="https://ocdi.com/wp-content/uploads/2021/03/demo-eel-bento-edited-scaled-1-1024x769.jpg" alt="" class="wp-image-2424"/></figure>
232
+ <!-- /wp:image --></div>
233
+ <!-- /wp:column -->
234
+
235
+ <!-- wp:column {"width":"66.66%"} -->
236
+ <div class="wp-block-column" style="flex-basis:66.66%"><!-- wp:heading {"level":4} -->
237
+ <h4>Eel Bento</h4>
238
+ <!-- /wp:heading -->
239
+
240
+ <!-- wp:paragraph {"style":{"typography":{"lineHeight":"1"}},"fontSize":"extra-small"} -->
241
+ <p class="has-extra-small-font-size" style="line-height:1">Grilled unagi with sweet soy sauce.<br><em>Ingredients: Lorem, ipsum, dolor, sit, amet.</em></p>
242
+ <!-- /wp:paragraph -->
243
+
244
+ <!-- wp:paragraph -->
245
+ <p>$1</p>
246
+ <!-- /wp:paragraph --></div>
247
+ <!-- /wp:column --></div>
248
+ <!-- /wp:columns -->
249
+
250
+ <!-- wp:separator {"className":"is-style-dots"} -->
251
+ <hr class="wp-block-separator is-style-dots"/>
252
+ <!-- /wp:separator -->
253
+
254
+ <!-- wp:heading {"textAlign":"center","fontSize":"huge"} -->
255
+ <h2 class="has-text-align-center has-huge-font-size" id="dessert">Dessert</h2>
256
+ <!-- /wp:heading -->
257
+
258
+ <!-- wp:columns -->
259
+ <div class="wp-block-columns"><!-- wp:column {"width":"33.33%"} -->
260
+ <div class="wp-block-column" style="flex-basis:33.33%"><!-- wp:image {"id":2425,"sizeSlug":"large","linkDestination":"none","className":"is-style-default"} -->
261
+ <figure class="wp-block-image size-large is-style-default"><img src="https://ocdi.com/wp-content/uploads/2021/03/demo-chocolate-edited-scaled-1-1024x768.jpg" alt="" class="wp-image-2425"/></figure>
262
+ <!-- /wp:image --></div>
263
+ <!-- /wp:column -->
264
+
265
+ <!-- wp:column {"width":"66.66%"} -->
266
+ <div class="wp-block-column" style="flex-basis:66.66%"><!-- wp:heading {"level":4} -->
267
+ <h4>Moist Chocolate Cake</h4>
268
+ <!-- /wp:heading -->
269
+
270
+ <!-- wp:paragraph {"fontSize":"extra-small"} -->
271
+ <p class="has-extra-small-font-size">Served with fruit.<br><em>Ingredients: Lorem, ipsum, dolor, sit, amet.</em></p>
272
+ <!-- /wp:paragraph -->
273
+
274
+ <!-- wp:paragraph -->
275
+ <p>$1</p>
276
+ <!-- /wp:paragraph --></div>
277
+ <!-- /wp:column --></div>
278
+ <!-- /wp:columns -->
279
+
280
+ <!-- wp:columns -->
281
+ <div class="wp-block-columns"><!-- wp:column {"width":"33.33%"} -->
282
+ <div class="wp-block-column" style="flex-basis:33.33%"><!-- wp:image {"id":2426,"sizeSlug":"large","linkDestination":"none","className":"is-style-default"} -->
283
+ <figure class="wp-block-image size-large is-style-default"><img src="https://ocdi.com/wp-content/uploads/2021/03/demo-cream-puff-edited-scaled-1-1024x766.jpg" alt="" class="wp-image-2426"/></figure>
284
+ <!-- /wp:image --></div>
285
+ <!-- /wp:column -->
286
+
287
+ <!-- wp:column {"width":"66.66%"} -->
288
+ <div class="wp-block-column" style="flex-basis:66.66%"><!-- wp:heading {"level":4} -->
289
+ <h4>Japanese Cream Puff</h4>
290
+ <!-- /wp:heading -->
291
+
292
+ <!-- wp:paragraph {"fontSize":"extra-small"} -->
293
+ <p class="has-extra-small-font-size">Served with green tea.<br><em>Ingredients: Lorem, ipsum, dolor, sit, amet.</em></p>
294
+ <!-- /wp:paragraph -->
295
+
296
+ <!-- wp:paragraph -->
297
+ <p>$1</p>
298
+ <!-- /wp:paragraph --></div>
299
+ <!-- /wp:column --></div>
300
+ <!-- /wp:columns -->
301
+
302
+ <!-- wp:paragraph -->
303
+ <p></p>
304
+ <!-- /wp:paragraph -->]]></content:encoded>
305
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
306
+ <wp:post_date><![CDATA[2021-03-09 09:34:09]]></wp:post_date>
307
+ <wp:post_date_gmt><![CDATA[2021-03-09 14:34:09]]></wp:post_date_gmt>
308
+ <wp:post_modified><![CDATA[2021-03-29 14:43:07]]></wp:post_modified>
309
+ <wp:post_modified_gmt><![CDATA[2021-03-29 14:43:07]]></wp:post_modified_gmt>
310
+ <wp:comment_status><![CDATA[closed]]></wp:comment_status>
311
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
312
+ <wp:post_name><![CDATA[menu]]></wp:post_name>
313
+ <wp:status><![CDATA[publish]]></wp:status>
314
+ <wp:post_parent>0</wp:post_parent>
315
+ <wp:menu_order>0</wp:menu_order>
316
+ <wp:post_type><![CDATA[page]]></wp:post_type>
317
+ <wp:post_password><![CDATA[]]></wp:post_password>
318
+ <wp:is_sticky>0</wp:is_sticky>
319
+ </item>
320
+
321
+ <item>
322
+ <title><![CDATA[demo-menu-header]]></title>
323
+ <link>https://ocdi.com/menu/demo-menu-header/</link>
324
+ <pubDate>Tue, 09 Mar 2021 10:57:58 +0000</pubDate>
325
+ <guid isPermaLink="false">https://ocdi.com/wp-content/uploads/2021/03/demo-menu-header.jpg</guid>
326
+ <description></description>
327
+ <content:encoded><![CDATA[]]></content:encoded>
328
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
329
+ <wp:post_id>2407</wp:post_id>
330
+ <wp:post_date><![CDATA[2021-03-09 05:57:58]]></wp:post_date>
331
+ <wp:post_date_gmt><![CDATA[2021-03-09 10:57:58]]></wp:post_date_gmt>
332
+ <wp:post_modified><![CDATA[2021-03-22 15:36:59]]></wp:post_modified>
333
+ <wp:post_modified_gmt><![CDATA[2021-03-22 15:36:59]]></wp:post_modified_gmt>
334
+ <wp:comment_status><![CDATA[open]]></wp:comment_status>
335
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
336
+ <wp:post_name><![CDATA[demo-menu-header]]></wp:post_name>
337
+ <wp:status><![CDATA[inherit]]></wp:status>
338
+ <wp:post_parent>2405</wp:post_parent>
339
+ <wp:menu_order>0</wp:menu_order>
340
+ <wp:post_type><![CDATA[attachment]]></wp:post_type>
341
+ <wp:post_password><![CDATA[]]></wp:post_password>
342
+ <wp:is_sticky>0</wp:is_sticky>
343
+ <wp:attachment_url><![CDATA[https://ocdi.com/wp-content/uploads/2021/03/demo-menu-header-scaled-1.jpg]]></wp:attachment_url>
344
+ <wp:postmeta>
345
+ <wp:meta_key><![CDATA[_wp_attached_file]]></wp:meta_key>
346
+ <wp:meta_value><![CDATA[2021/03/demo-menu-header-scaled-1.jpg]]></wp:meta_value>
347
+ </wp:postmeta>
348
+ <wp:postmeta>
349
+ <wp:meta_key><![CDATA[_wp_attachment_metadata]]></wp:meta_key>
350
+ <wp:meta_value><![CDATA[a:5:{s:5:"width";i:2560;s:6:"height";i:1707;s:4:"file";s:37:"2021/03/demo-menu-header-scaled-1.jpg";s:5:"sizes";a:6:{s:6:"medium";a:4:{s:4:"file";s:37:"demo-menu-header-scaled-1-300x200.jpg";s:5:"width";i:300;s:6:"height";i:200;s:9:"mime-type";s:10:"image/jpeg";}s:5:"large";a:4:{s:4:"file";s:38:"demo-menu-header-scaled-1-1024x683.jpg";s:5:"width";i:1024;s:6:"height";i:683;s:9:"mime-type";s:10:"image/jpeg";}s:9:"thumbnail";a:4:{s:4:"file";s:37:"demo-menu-header-scaled-1-150x150.jpg";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:10:"image/jpeg";}s:12:"medium_large";a:4:{s:4:"file";s:37:"demo-menu-header-scaled-1-768x512.jpg";s:5:"width";i:768;s:6:"height";i:512;s:9:"mime-type";s:10:"image/jpeg";}s:9:"1536x1536";a:4:{s:4:"file";s:39:"demo-menu-header-scaled-1-1536x1024.jpg";s:5:"width";i:1536;s:6:"height";i:1024;s:9:"mime-type";s:10:"image/jpeg";}s:9:"2048x2048";a:4:{s:4:"file";s:39:"demo-menu-header-scaled-1-2048x1366.jpg";s:5:"width";i:2048;s:6:"height";i:1366;s:9:"mime-type";s:10:"image/jpeg";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}]]></wp:meta_value>
351
+ </wp:postmeta>
352
+ </item>
353
+
354
+ <item>
355
+ <title><![CDATA[demo-gyoza]]></title>
356
+ <link>https://ocdi.com/menu/demo-gyoza/</link>
357
+ <pubDate>Tue, 09 Mar 2021 11:17:04 +0000</pubDate>
358
+ <guid isPermaLink="false">https://ocdi.com/wp-content/uploads/2021/03/demo-gyoza.jpg</guid>
359
+ <description></description>
360
+ <content:encoded><![CDATA[]]></content:encoded>
361
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
362
+ <wp:post_id>2411</wp:post_id>
363
+ <wp:post_date><![CDATA[2021-03-09 06:17:04]]></wp:post_date>
364
+ <wp:post_date_gmt><![CDATA[2021-03-09 11:17:04]]></wp:post_date_gmt>
365
+ <wp:post_modified><![CDATA[2021-03-22 15:36:59]]></wp:post_modified>
366
+ <wp:post_modified_gmt><![CDATA[2021-03-22 15:36:59]]></wp:post_modified_gmt>
367
+ <wp:comment_status><![CDATA[open]]></wp:comment_status>
368
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
369
+ <wp:post_name><![CDATA[demo-gyoza]]></wp:post_name>
370
+ <wp:status><![CDATA[inherit]]></wp:status>
371
+ <wp:post_parent>2405</wp:post_parent>
372
+ <wp:menu_order>0</wp:menu_order>
373
+ <wp:post_type><![CDATA[attachment]]></wp:post_type>
374
+ <wp:post_password><![CDATA[]]></wp:post_password>
375
+ <wp:is_sticky>0</wp:is_sticky>
376
+ <wp:attachment_url><![CDATA[https://ocdi.com/wp-content/uploads/2021/03/demo-gyoza-scaled-1.jpg]]></wp:attachment_url>
377
+ <wp:postmeta>
378
+ <wp:meta_key><![CDATA[_wp_attached_file]]></wp:meta_key>
379
+ <wp:meta_value><![CDATA[2021/03/demo-gyoza-scaled-1.jpg]]></wp:meta_value>
380
+ </wp:postmeta>
381
+ <wp:postmeta>
382
+ <wp:meta_key><![CDATA[_wp_attachment_metadata]]></wp:meta_key>
383
+ <wp:meta_value><![CDATA[a:5:{s:5:"width";i:2560;s:6:"height";i:1920;s:4:"file";s:31:"2021/03/demo-gyoza-scaled-1.jpg";s:5:"sizes";a:6:{s:6:"medium";a:4:{s:4:"file";s:31:"demo-gyoza-scaled-1-300x225.jpg";s:5:"width";i:300;s:6:"height";i:225;s:9:"mime-type";s:10:"image/jpeg";}s:5:"large";a:4:{s:4:"file";s:32:"demo-gyoza-scaled-1-1024x768.jpg";s:5:"width";i:1024;s:6:"height";i:768;s:9:"mime-type";s:10:"image/jpeg";}s:9:"thumbnail";a:4:{s:4:"file";s:31:"demo-gyoza-scaled-1-150x150.jpg";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:10:"image/jpeg";}s:12:"medium_large";a:4:{s:4:"file";s:31:"demo-gyoza-scaled-1-768x576.jpg";s:5:"width";i:768;s:6:"height";i:576;s:9:"mime-type";s:10:"image/jpeg";}s:9:"1536x1536";a:4:{s:4:"file";s:33:"demo-gyoza-scaled-1-1536x1152.jpg";s:5:"width";i:1536;s:6:"height";i:1152;s:9:"mime-type";s:10:"image/jpeg";}s:9:"2048x2048";a:4:{s:4:"file";s:33:"demo-gyoza-scaled-1-2048x1536.jpg";s:5:"width";i:2048;s:6:"height";i:1536;s:9:"mime-type";s:10:"image/jpeg";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}]]></wp:meta_value>
384
+ </wp:postmeta>
385
+ </item>
386
+
387
+ <item>
388
+ <title><![CDATA[demo-vegan]]></title>
389
+ <link>https://ocdi.com/demo-vegan-2/</link>
390
+ <pubDate>Tue, 09 Mar 2021 11:23:10 +0000</pubDate>
391
+ <guid isPermaLink="false">https://ocdi.com/wp-content/uploads/2021/03/demo-vegan-edited.jpg</guid>
392
+ <description></description>
393
+ <content:encoded><![CDATA[]]></content:encoded>
394
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
395
+ <wp:post_id>2420</wp:post_id>
396
+ <wp:post_date><![CDATA[2021-03-09 06:23:10]]></wp:post_date>
397
+ <wp:post_date_gmt><![CDATA[2021-03-09 11:23:10]]></wp:post_date_gmt>
398
+ <wp:post_modified><![CDATA[2021-03-09 06:23:10]]></wp:post_modified>
399
+ <wp:post_modified_gmt><![CDATA[2021-03-09 11:23:10]]></wp:post_modified_gmt>
400
+ <wp:comment_status><![CDATA[open]]></wp:comment_status>
401
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
402
+ <wp:post_name><![CDATA[demo-vegan-2]]></wp:post_name>
403
+ <wp:status><![CDATA[inherit]]></wp:status>
404
+ <wp:post_parent>0</wp:post_parent>
405
+ <wp:menu_order>0</wp:menu_order>
406
+ <wp:post_type><![CDATA[attachment]]></wp:post_type>
407
+ <wp:post_password><![CDATA[]]></wp:post_password>
408
+ <wp:is_sticky>0</wp:is_sticky>
409
+ <wp:attachment_url><![CDATA[https://ocdi.com/wp-content/uploads/2021/03/demo-vegan-edited-scaled-1.jpg]]></wp:attachment_url>
410
+ <wp:postmeta>
411
+ <wp:meta_key><![CDATA[_wp_attached_file]]></wp:meta_key>
412
+ <wp:meta_value><![CDATA[2021/03/demo-vegan-edited-scaled-1.jpg]]></wp:meta_value>
413
+ </wp:postmeta>
414
+ <wp:postmeta>
415
+ <wp:meta_key><![CDATA[_wp_attachment_metadata]]></wp:meta_key>
416
+ <wp:meta_value><![CDATA[a:5:{s:5:"width";i:2560;s:6:"height";i:1920;s:4:"file";s:38:"2021/03/demo-vegan-edited-scaled-1.jpg";s:5:"sizes";a:6:{s:6:"medium";a:4:{s:4:"file";s:38:"demo-vegan-edited-scaled-1-300x225.jpg";s:5:"width";i:300;s:6:"height";i:225;s:9:"mime-type";s:10:"image/jpeg";}s:5:"large";a:4:{s:4:"file";s:39:"demo-vegan-edited-scaled-1-1024x768.jpg";s:5:"width";i:1024;s:6:"height";i:768;s:9:"mime-type";s:10:"image/jpeg";}s:9:"thumbnail";a:4:{s:4:"file";s:38:"demo-vegan-edited-scaled-1-150x150.jpg";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:10:"image/jpeg";}s:12:"medium_large";a:4:{s:4:"file";s:38:"demo-vegan-edited-scaled-1-768x576.jpg";s:5:"width";i:768;s:6:"height";i:576;s:9:"mime-type";s:10:"image/jpeg";}s:9:"1536x1536";a:4:{s:4:"file";s:40:"demo-vegan-edited-scaled-1-1536x1152.jpg";s:5:"width";i:1536;s:6:"height";i:1152;s:9:"mime-type";s:10:"image/jpeg";}s:9:"2048x2048";a:4:{s:4:"file";s:40:"demo-vegan-edited-scaled-1-2048x1536.jpg";s:5:"width";i:2048;s:6:"height";i:1536;s:9:"mime-type";s:10:"image/jpeg";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}]]></wp:meta_value>
417
+ </wp:postmeta>
418
+ </item>
419
+
420
+ <item>
421
+ <title><![CDATA[demo-salmon-avocado]]></title>
422
+ <link>https://ocdi.com/demo-salmon-avocado-2/</link>
423
+ <pubDate>Tue, 09 Mar 2021 11:22:31 +0000</pubDate>
424
+ <guid isPermaLink="false">https://ocdi.com/wp-content/uploads/2021/03/demo-salmon-avocado-edited.jpg</guid>
425
+ <description></description>
426
+ <content:encoded><![CDATA[]]></content:encoded>
427
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
428
+ <wp:post_id>2418</wp:post_id>
429
+ <wp:post_date><![CDATA[2021-03-09 06:22:31]]></wp:post_date>
430
+ <wp:post_date_gmt><![CDATA[2021-03-09 11:22:31]]></wp:post_date_gmt>
431
+ <wp:post_modified><![CDATA[2021-03-09 06:22:31]]></wp:post_modified>
432
+ <wp:post_modified_gmt><![CDATA[2021-03-09 11:22:31]]></wp:post_modified_gmt>
433
+ <wp:comment_status><![CDATA[open]]></wp:comment_status>
434
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
435
+ <wp:post_name><![CDATA[demo-salmon-avocado-2]]></wp:post_name>
436
+ <wp:status><![CDATA[inherit]]></wp:status>
437
+ <wp:post_parent>0</wp:post_parent>
438
+ <wp:menu_order>0</wp:menu_order>
439
+ <wp:post_type><![CDATA[attachment]]></wp:post_type>
440
+ <wp:post_password><![CDATA[]]></wp:post_password>
441
+ <wp:is_sticky>0</wp:is_sticky>
442
+ <wp:attachment_url><![CDATA[https://ocdi.com/wp-content/uploads/2021/03/demo-salmon-avocado-edited-scaled-1.jpg]]></wp:attachment_url>
443
+ <wp:postmeta>
444
+ <wp:meta_key><![CDATA[_wp_attached_file]]></wp:meta_key>
445
+ <wp:meta_value><![CDATA[2021/03/demo-salmon-avocado-edited-scaled-1.jpg]]></wp:meta_value>
446
+ </wp:postmeta>
447
+ <wp:postmeta>
448
+ <wp:meta_key><![CDATA[_wp_attachment_metadata]]></wp:meta_key>
449
+ <wp:meta_value><![CDATA[a:5:{s:5:"width";i:2560;s:6:"height";i:1915;s:4:"file";s:47:"2021/03/demo-salmon-avocado-edited-scaled-1.jpg";s:5:"sizes";a:6:{s:6:"medium";a:4:{s:4:"file";s:47:"demo-salmon-avocado-edited-scaled-1-300x224.jpg";s:5:"width";i:300;s:6:"height";i:224;s:9:"mime-type";s:10:"image/jpeg";}s:5:"large";a:4:{s:4:"file";s:48:"demo-salmon-avocado-edited-scaled-1-1024x766.jpg";s:5:"width";i:1024;s:6:"height";i:766;s:9:"mime-type";s:10:"image/jpeg";}s:9:"thumbnail";a:4:{s:4:"file";s:47:"demo-salmon-avocado-edited-scaled-1-150x150.jpg";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:10:"image/jpeg";}s:12:"medium_large";a:4:{s:4:"file";s:47:"demo-salmon-avocado-edited-scaled-1-768x575.jpg";s:5:"width";i:768;s:6:"height";i:575;s:9:"mime-type";s:10:"image/jpeg";}s:9:"1536x1536";a:4:{s:4:"file";s:49:"demo-salmon-avocado-edited-scaled-1-1536x1149.jpg";s:5:"width";i:1536;s:6:"height";i:1149;s:9:"mime-type";s:10:"image/jpeg";}s:9:"2048x2048";a:4:{s:4:"file";s:49:"demo-salmon-avocado-edited-scaled-1-2048x1532.jpg";s:5:"width";i:2048;s:6:"height";i:1532;s:9:"mime-type";s:10:"image/jpeg";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}]]></wp:meta_value>
450
+ </wp:postmeta>
451
+ </item>
452
+
453
+ <item>
454
+ <title><![CDATA[demo-lunch]]></title>
455
+ <link>https://ocdi.com/demo-lunch-2/</link>
456
+ <pubDate>Tue, 09 Mar 2021 11:22:50 +0000</pubDate>
457
+ <guid isPermaLink="false">https://ocdi.com/wp-content/uploads/2021/03/demo-lunch-edited.jpg</guid>
458
+ <description></description>
459
+ <content:encoded><![CDATA[]]></content:encoded>
460
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
461
+ <wp:post_id>2419</wp:post_id>
462
+ <wp:post_date><![CDATA[2021-03-09 06:22:50]]></wp:post_date>
463
+ <wp:post_date_gmt><![CDATA[2021-03-09 11:22:50]]></wp:post_date_gmt>
464
+ <wp:post_modified><![CDATA[2021-03-09 06:22:50]]></wp:post_modified>
465
+ <wp:post_modified_gmt><![CDATA[2021-03-09 11:22:50]]></wp:post_modified_gmt>
466
+ <wp:comment_status><![CDATA[open]]></wp:comment_status>
467
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
468
+ <wp:post_name><![CDATA[demo-lunch-2]]></wp:post_name>
469
+ <wp:status><![CDATA[inherit]]></wp:status>
470
+ <wp:post_parent>0</wp:post_parent>
471
+ <wp:menu_order>0</wp:menu_order>
472
+ <wp:post_type><![CDATA[attachment]]></wp:post_type>
473
+ <wp:post_password><![CDATA[]]></wp:post_password>
474
+ <wp:is_sticky>0</wp:is_sticky>
475
+ <wp:attachment_url><![CDATA[https://ocdi.com/wp-content/uploads/2021/03/demo-lunch-edited-scaled-1.jpg]]></wp:attachment_url>
476
+ <wp:postmeta>
477
+ <wp:meta_key><![CDATA[_wp_attached_file]]></wp:meta_key>
478
+ <wp:meta_value><![CDATA[2021/03/demo-lunch-edited-scaled-1.jpg]]></wp:meta_value>
479
+ </wp:postmeta>
480
+ <wp:postmeta>
481
+ <wp:meta_key><![CDATA[_wp_attachment_metadata]]></wp:meta_key>
482
+ <wp:meta_value><![CDATA[a:5:{s:5:"width";i:2560;s:6:"height";i:1911;s:4:"file";s:38:"2021/03/demo-lunch-edited-scaled-1.jpg";s:5:"sizes";a:6:{s:6:"medium";a:4:{s:4:"file";s:38:"demo-lunch-edited-scaled-1-300x224.jpg";s:5:"width";i:300;s:6:"height";i:224;s:9:"mime-type";s:10:"image/jpeg";}s:5:"large";a:4:{s:4:"file";s:39:"demo-lunch-edited-scaled-1-1024x764.jpg";s:5:"width";i:1024;s:6:"height";i:764;s:9:"mime-type";s:10:"image/jpeg";}s:9:"thumbnail";a:4:{s:4:"file";s:38:"demo-lunch-edited-scaled-1-150x150.jpg";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:10:"image/jpeg";}s:12:"medium_large";a:4:{s:4:"file";s:38:"demo-lunch-edited-scaled-1-768x573.jpg";s:5:"width";i:768;s:6:"height";i:573;s:9:"mime-type";s:10:"image/jpeg";}s:9:"1536x1536";a:4:{s:4:"file";s:40:"demo-lunch-edited-scaled-1-1536x1147.jpg";s:5:"width";i:1536;s:6:"height";i:1147;s:9:"mime-type";s:10:"image/jpeg";}s:9:"2048x2048";a:4:{s:4:"file";s:40:"demo-lunch-edited-scaled-1-2048x1529.jpg";s:5:"width";i:2048;s:6:"height";i:1529;s:9:"mime-type";s:10:"image/jpeg";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}]]></wp:meta_value>
483
+ </wp:postmeta>
484
+ </item>
485
+
486
+ <item>
487
+ <title><![CDATA[demo-salmon]]></title>
488
+ <link>https://ocdi.com/demo-salmon-2/</link>
489
+ <pubDate>Tue, 09 Mar 2021 11:23:40 +0000</pubDate>
490
+ <guid isPermaLink="false">https://ocdi.com/wp-content/uploads/2021/03/demo-salmon-edited.jpg</guid>
491
+ <description></description>
492
+ <content:encoded><![CDATA[]]></content:encoded>
493
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
494
+ <wp:post_id>2421</wp:post_id>
495
+ <wp:post_date><![CDATA[2021-03-09 06:23:40]]></wp:post_date>
496
+ <wp:post_date_gmt><![CDATA[2021-03-09 11:23:40]]></wp:post_date_gmt>
497
+ <wp:post_modified><![CDATA[2021-03-09 06:23:40]]></wp:post_modified>
498
+ <wp:post_modified_gmt><![CDATA[2021-03-09 11:23:40]]></wp:post_modified_gmt>
499
+ <wp:comment_status><![CDATA[open]]></wp:comment_status>
500
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
501
+ <wp:post_name><![CDATA[demo-salmon-2]]></wp:post_name>
502
+ <wp:status><![CDATA[inherit]]></wp:status>
503
+ <wp:post_parent>0</wp:post_parent>
504
+ <wp:menu_order>0</wp:menu_order>
505
+ <wp:post_type><![CDATA[attachment]]></wp:post_type>
506
+ <wp:post_password><![CDATA[]]></wp:post_password>
507
+ <wp:is_sticky>0</wp:is_sticky>
508
+ <wp:attachment_url><![CDATA[https://ocdi.com/wp-content/uploads/2021/03/demo-salmon-edited-scaled-1.jpg]]></wp:attachment_url>
509
+ <wp:postmeta>
510
+ <wp:meta_key><![CDATA[_wp_attached_file]]></wp:meta_key>
511
+ <wp:meta_value><![CDATA[2021/03/demo-salmon-edited-scaled-1.jpg]]></wp:meta_value>
512
+ </wp:postmeta>
513
+ <wp:postmeta>
514
+ <wp:meta_key><![CDATA[_wp_attachment_metadata]]></wp:meta_key>
515
+ <wp:meta_value><![CDATA[a:5:{s:5:"width";i:2560;s:6:"height";i:1922;s:4:"file";s:39:"2021/03/demo-salmon-edited-scaled-1.jpg";s:5:"sizes";a:6:{s:6:"medium";a:4:{s:4:"file";s:39:"demo-salmon-edited-scaled-1-300x225.jpg";s:5:"width";i:300;s:6:"height";i:225;s:9:"mime-type";s:10:"image/jpeg";}s:5:"large";a:4:{s:4:"file";s:40:"demo-salmon-edited-scaled-1-1024x769.jpg";s:5:"width";i:1024;s:6:"height";i:769;s:9:"mime-type";s:10:"image/jpeg";}s:9:"thumbnail";a:4:{s:4:"file";s:39:"demo-salmon-edited-scaled-1-150x150.jpg";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:10:"image/jpeg";}s:12:"medium_large";a:4:{s:4:"file";s:39:"demo-salmon-edited-scaled-1-768x577.jpg";s:5:"width";i:768;s:6:"height";i:577;s:9:"mime-type";s:10:"image/jpeg";}s:9:"1536x1536";a:4:{s:4:"file";s:41:"demo-salmon-edited-scaled-1-1536x1153.jpg";s:5:"width";i:1536;s:6:"height";i:1153;s:9:"mime-type";s:10:"image/jpeg";}s:9:"2048x2048";a:4:{s:4:"file";s:41:"demo-salmon-edited-scaled-1-2048x1538.jpg";s:5:"width";i:2048;s:6:"height";i:1538;s:9:"mime-type";s:10:"image/jpeg";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}]]></wp:meta_value>
516
+ </wp:postmeta>
517
+ </item>
518
+
519
+ <item>
520
+ <title><![CDATA[demo-tofu-katsu]]></title>
521
+ <link>https://ocdi.com/demo-tofu-katsu-2/</link>
522
+ <pubDate>Tue, 09 Mar 2021 11:24:21 +0000</pubDate>
523
+ <guid isPermaLink="false">https://ocdi.com/wp-content/uploads/2021/03/demo-tofu-katsu-edited.jpg</guid>
524
+ <description></description>
525
+ <content:encoded><![CDATA[]]></content:encoded>
526
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
527
+ <wp:post_id>2423</wp:post_id>
528
+ <wp:post_date><![CDATA[2021-03-09 06:24:21]]></wp:post_date>
529
+ <wp:post_date_gmt><![CDATA[2021-03-09 11:24:21]]></wp:post_date_gmt>
530
+ <wp:post_modified><![CDATA[2021-03-09 06:24:21]]></wp:post_modified>
531
+ <wp:post_modified_gmt><![CDATA[2021-03-09 11:24:21]]></wp:post_modified_gmt>
532
+ <wp:comment_status><![CDATA[open]]></wp:comment_status>
533
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
534
+ <wp:post_name><![CDATA[demo-tofu-katsu-2]]></wp:post_name>
535
+ <wp:status><![CDATA[inherit]]></wp:status>
536
+ <wp:post_parent>0</wp:post_parent>
537
+ <wp:menu_order>0</wp:menu_order>
538
+ <wp:post_type><![CDATA[attachment]]></wp:post_type>
539
+ <wp:post_password><![CDATA[]]></wp:post_password>
540
+ <wp:is_sticky>0</wp:is_sticky>
541
+ <wp:attachment_url><![CDATA[https://ocdi.com/wp-content/uploads/2021/03/demo-tofu-katsu-edited-scaled-1.jpg]]></wp:attachment_url>
542
+ <wp:postmeta>
543
+ <wp:meta_key><![CDATA[_wp_attached_file]]></wp:meta_key>
544
+ <wp:meta_value><![CDATA[2021/03/demo-tofu-katsu-edited-scaled-1.jpg]]></wp:meta_value>
545
+ </wp:postmeta>
546
+ <wp:postmeta>
547
+ <wp:meta_key><![CDATA[_wp_attachment_metadata]]></wp:meta_key>
548
+ <wp:meta_value><![CDATA[a:5:{s:5:"width";i:2560;s:6:"height";i:1915;s:4:"file";s:43:"2021/03/demo-tofu-katsu-edited-scaled-1.jpg";s:5:"sizes";a:6:{s:6:"medium";a:4:{s:4:"file";s:43:"demo-tofu-katsu-edited-scaled-1-300x224.jpg";s:5:"width";i:300;s:6:"height";i:224;s:9:"mime-type";s:10:"image/jpeg";}s:5:"large";a:4:{s:4:"file";s:44:"demo-tofu-katsu-edited-scaled-1-1024x766.jpg";s:5:"width";i:1024;s:6:"height";i:766;s:9:"mime-type";s:10:"image/jpeg";}s:9:"thumbnail";a:4:{s:4:"file";s:43:"demo-tofu-katsu-edited-scaled-1-150x150.jpg";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:10:"image/jpeg";}s:12:"medium_large";a:4:{s:4:"file";s:43:"demo-tofu-katsu-edited-scaled-1-768x575.jpg";s:5:"width";i:768;s:6:"height";i:575;s:9:"mime-type";s:10:"image/jpeg";}s:9:"1536x1536";a:4:{s:4:"file";s:45:"demo-tofu-katsu-edited-scaled-1-1536x1149.jpg";s:5:"width";i:1536;s:6:"height";i:1149;s:9:"mime-type";s:10:"image/jpeg";}s:9:"2048x2048";a:4:{s:4:"file";s:45:"demo-tofu-katsu-edited-scaled-1-2048x1532.jpg";s:5:"width";i:2048;s:6:"height";i:1532;s:9:"mime-type";s:10:"image/jpeg";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}]]></wp:meta_value>
549
+ </wp:postmeta>
550
+ </item>
551
+
552
+ <item>
553
+ <title><![CDATA[demo-sashimi-deluxe]]></title>
554
+ <link>https://ocdi.com/demo-sashimi-deluxe-2/</link>
555
+ <pubDate>Tue, 09 Mar 2021 11:24:06 +0000</pubDate>
556
+ <guid isPermaLink="false">https://ocdi.com/wp-content/uploads/2021/03/demo-sashimi-deluxe-edited.jpg</guid>
557
+ <description></description>
558
+ <content:encoded><![CDATA[]]></content:encoded>
559
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
560
+ <wp:post_id>2422</wp:post_id>
561
+ <wp:post_date><![CDATA[2021-03-09 06:24:06]]></wp:post_date>
562
+ <wp:post_date_gmt><![CDATA[2021-03-09 11:24:06]]></wp:post_date_gmt>
563
+ <wp:post_modified><![CDATA[2021-03-09 06:24:06]]></wp:post_modified>
564
+ <wp:post_modified_gmt><![CDATA[2021-03-09 11:24:06]]></wp:post_modified_gmt>
565
+ <wp:comment_status><![CDATA[open]]></wp:comment_status>
566
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
567
+ <wp:post_name><![CDATA[demo-sashimi-deluxe-2]]></wp:post_name>
568
+ <wp:status><![CDATA[inherit]]></wp:status>
569
+ <wp:post_parent>0</wp:post_parent>
570
+ <wp:menu_order>0</wp:menu_order>
571
+ <wp:post_type><![CDATA[attachment]]></wp:post_type>
572
+ <wp:post_password><![CDATA[]]></wp:post_password>
573
+ <wp:is_sticky>0</wp:is_sticky>
574
+ <wp:attachment_url><![CDATA[https://ocdi.com/wp-content/uploads/2021/03/demo-sashimi-deluxe-edited-scaled-1.jpg]]></wp:attachment_url>
575
+ <wp:postmeta>
576
+ <wp:meta_key><![CDATA[_wp_attached_file]]></wp:meta_key>
577
+ <wp:meta_value><![CDATA[2021/03/demo-sashimi-deluxe-edited-scaled-1.jpg]]></wp:meta_value>
578
+ </wp:postmeta>
579
+ <wp:postmeta>
580
+ <wp:meta_key><![CDATA[_wp_attachment_metadata]]></wp:meta_key>
581
+ <wp:meta_value><![CDATA[a:5:{s:5:"width";i:2560;s:6:"height";i:1922;s:4:"file";s:47:"2021/03/demo-sashimi-deluxe-edited-scaled-1.jpg";s:5:"sizes";a:6:{s:6:"medium";a:4:{s:4:"file";s:47:"demo-sashimi-deluxe-edited-scaled-1-300x225.jpg";s:5:"width";i:300;s:6:"height";i:225;s:9:"mime-type";s:10:"image/jpeg";}s:5:"large";a:4:{s:4:"file";s:48:"demo-sashimi-deluxe-edited-scaled-1-1024x769.jpg";s:5:"width";i:1024;s:6:"height";i:769;s:9:"mime-type";s:10:"image/jpeg";}s:9:"thumbnail";a:4:{s:4:"file";s:47:"demo-sashimi-deluxe-edited-scaled-1-150x150.jpg";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:10:"image/jpeg";}s:12:"medium_large";a:4:{s:4:"file";s:47:"demo-sashimi-deluxe-edited-scaled-1-768x577.jpg";s:5:"width";i:768;s:6:"height";i:577;s:9:"mime-type";s:10:"image/jpeg";}s:9:"1536x1536";a:4:{s:4:"file";s:49:"demo-sashimi-deluxe-edited-scaled-1-1536x1153.jpg";s:5:"width";i:1536;s:6:"height";i:1153;s:9:"mime-type";s:10:"image/jpeg";}s:9:"2048x2048";a:4:{s:4:"file";s:49:"demo-sashimi-deluxe-edited-scaled-1-2048x1538.jpg";s:5:"width";i:2048;s:6:"height";i:1538;s:9:"mime-type";s:10:"image/jpeg";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}]]></wp:meta_value>
582
+ </wp:postmeta>
583
+ </item>
584
+
585
+ <item>
586
+ <title><![CDATA[demo-eel-bento]]></title>
587
+ <link>https://ocdi.com/demo-eel-bento-2/</link>
588
+ <pubDate>Tue, 09 Mar 2021 11:24:40 +0000</pubDate>
589
+ <guid isPermaLink="false">https://ocdi.com/wp-content/uploads/2021/03/demo-eel-bento-edited.jpg</guid>
590
+ <description></description>
591
+ <content:encoded><![CDATA[]]></content:encoded>
592
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
593
+ <wp:post_id>2424</wp:post_id>
594
+ <wp:post_date><![CDATA[2021-03-09 06:24:40]]></wp:post_date>
595
+ <wp:post_date_gmt><![CDATA[2021-03-09 11:24:40]]></wp:post_date_gmt>
596
+ <wp:post_modified><![CDATA[2021-03-09 06:24:40]]></wp:post_modified>
597
+ <wp:post_modified_gmt><![CDATA[2021-03-09 11:24:40]]></wp:post_modified_gmt>
598
+ <wp:comment_status><![CDATA[open]]></wp:comment_status>
599
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
600
+ <wp:post_name><![CDATA[demo-eel-bento-2]]></wp:post_name>
601
+ <wp:status><![CDATA[inherit]]></wp:status>
602
+ <wp:post_parent>0</wp:post_parent>
603
+ <wp:menu_order>0</wp:menu_order>
604
+ <wp:post_type><![CDATA[attachment]]></wp:post_type>
605
+ <wp:post_password><![CDATA[]]></wp:post_password>
606
+ <wp:is_sticky>0</wp:is_sticky>
607
+ <wp:attachment_url><![CDATA[https://ocdi.com/wp-content/uploads/2021/03/demo-eel-bento-edited-scaled-1.jpg]]></wp:attachment_url>
608
+ <wp:postmeta>
609
+ <wp:meta_key><![CDATA[_wp_attached_file]]></wp:meta_key>
610
+ <wp:meta_value><![CDATA[2021/03/demo-eel-bento-edited-scaled-1.jpg]]></wp:meta_value>
611
+ </wp:postmeta>
612
+ <wp:postmeta>
613
+ <wp:meta_key><![CDATA[_wp_attachment_metadata]]></wp:meta_key>
614
+ <wp:meta_value><![CDATA[a:5:{s:5:"width";i:2560;s:6:"height";i:1923;s:4:"file";s:42:"2021/03/demo-eel-bento-edited-scaled-1.jpg";s:5:"sizes";a:6:{s:6:"medium";a:4:{s:4:"file";s:42:"demo-eel-bento-edited-scaled-1-300x225.jpg";s:5:"width";i:300;s:6:"height";i:225;s:9:"mime-type";s:10:"image/jpeg";}s:5:"large";a:4:{s:4:"file";s:43:"demo-eel-bento-edited-scaled-1-1024x769.jpg";s:5:"width";i:1024;s:6:"height";i:769;s:9:"mime-type";s:10:"image/jpeg";}s:9:"thumbnail";a:4:{s:4:"file";s:42:"demo-eel-bento-edited-scaled-1-150x150.jpg";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:10:"image/jpeg";}s:12:"medium_large";a:4:{s:4:"file";s:42:"demo-eel-bento-edited-scaled-1-768x577.jpg";s:5:"width";i:768;s:6:"height";i:577;s:9:"mime-type";s:10:"image/jpeg";}s:9:"1536x1536";a:4:{s:4:"file";s:44:"demo-eel-bento-edited-scaled-1-1536x1154.jpg";s:5:"width";i:1536;s:6:"height";i:1154;s:9:"mime-type";s:10:"image/jpeg";}s:9:"2048x2048";a:4:{s:4:"file";s:44:"demo-eel-bento-edited-scaled-1-2048x1538.jpg";s:5:"width";i:2048;s:6:"height";i:1538;s:9:"mime-type";s:10:"image/jpeg";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}]]></wp:meta_value>
615
+ </wp:postmeta>
616
+ </item>
617
+
618
+ <item>
619
+ <title><![CDATA[demo-chocolate]]></title>
620
+ <link>https://ocdi.com/demo-chocolate-2/</link>
621
+ <pubDate>Tue, 09 Mar 2021 11:25:03 +0000</pubDate>
622
+ <guid isPermaLink="false">https://ocdi.com/wp-content/uploads/2021/03/demo-chocolate-edited.jpg</guid>
623
+ <description></description>
624
+ <content:encoded><![CDATA[]]></content:encoded>
625
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
626
+ <wp:post_id>2425</wp:post_id>
627
+ <wp:post_date><![CDATA[2021-03-09 06:25:03]]></wp:post_date>
628
+ <wp:post_date_gmt><![CDATA[2021-03-09 11:25:03]]></wp:post_date_gmt>
629
+ <wp:post_modified><![CDATA[2021-03-09 06:25:03]]></wp:post_modified>
630
+ <wp:post_modified_gmt><![CDATA[2021-03-09 11:25:03]]></wp:post_modified_gmt>
631
+ <wp:comment_status><![CDATA[open]]></wp:comment_status>
632
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
633
+ <wp:post_name><![CDATA[demo-chocolate-2]]></wp:post_name>
634
+ <wp:status><![CDATA[inherit]]></wp:status>
635
+ <wp:post_parent>0</wp:post_parent>
636
+ <wp:menu_order>0</wp:menu_order>
637
+ <wp:post_type><![CDATA[attachment]]></wp:post_type>
638
+ <wp:post_password><![CDATA[]]></wp:post_password>
639
+ <wp:is_sticky>0</wp:is_sticky>
640
+ <wp:attachment_url><![CDATA[https://ocdi.com/wp-content/uploads/2021/03/demo-chocolate-edited-scaled-1.jpg]]></wp:attachment_url>
641
+ <wp:postmeta>
642
+ <wp:meta_key><![CDATA[_wp_attached_file]]></wp:meta_key>
643
+ <wp:meta_value><![CDATA[2021/03/demo-chocolate-edited-scaled-1.jpg]]></wp:meta_value>
644
+ </wp:postmeta>
645
+ <wp:postmeta>
646
+ <wp:meta_key><![CDATA[_wp_attachment_metadata]]></wp:meta_key>
647
+ <wp:meta_value><![CDATA[a:5:{s:5:"width";i:2560;s:6:"height";i:1921;s:4:"file";s:42:"2021/03/demo-chocolate-edited-scaled-1.jpg";s:5:"sizes";a:6:{s:6:"medium";a:4:{s:4:"file";s:42:"demo-chocolate-edited-scaled-1-300x225.jpg";s:5:"width";i:300;s:6:"height";i:225;s:9:"mime-type";s:10:"image/jpeg";}s:5:"large";a:4:{s:4:"file";s:43:"demo-chocolate-edited-scaled-1-1024x768.jpg";s:5:"width";i:1024;s:6:"height";i:768;s:9:"mime-type";s:10:"image/jpeg";}s:9:"thumbnail";a:4:{s:4:"file";s:42:"demo-chocolate-edited-scaled-1-150x150.jpg";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:10:"image/jpeg";}s:12:"medium_large";a:4:{s:4:"file";s:42:"demo-chocolate-edited-scaled-1-768x576.jpg";s:5:"width";i:768;s:6:"height";i:576;s:9:"mime-type";s:10:"image/jpeg";}s:9:"1536x1536";a:4:{s:4:"file";s:44:"demo-chocolate-edited-scaled-1-1536x1153.jpg";s:5:"width";i:1536;s:6:"height";i:1153;s:9:"mime-type";s:10:"image/jpeg";}s:9:"2048x2048";a:4:{s:4:"file";s:44:"demo-chocolate-edited-scaled-1-2048x1537.jpg";s:5:"width";i:2048;s:6:"height";i:1537;s:9:"mime-type";s:10:"image/jpeg";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}]]></wp:meta_value>
648
+ </wp:postmeta>
649
+ </item>
650
+ <item>
651
+ <title><![CDATA[demo-cream-puff]]></title>
652
+ <link>https://ocdi.com/demo-cream-puff-2/</link>
653
+ <pubDate>Tue, 09 Mar 2021 11:25:20 +0000</pubDate>
654
+ <guid isPermaLink="false">https://ocdi.com/wp-content/uploads/2021/03/demo-cream-puff-edited.jpg</guid>
655
+ <description></description>
656
+ <content:encoded><![CDATA[]]></content:encoded>
657
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
658
+ <wp:post_id>2426</wp:post_id>
659
+ <wp:post_date><![CDATA[2021-03-09 06:25:20]]></wp:post_date>
660
+ <wp:post_date_gmt><![CDATA[2021-03-09 11:25:20]]></wp:post_date_gmt>
661
+ <wp:post_modified><![CDATA[2021-03-09 06:25:20]]></wp:post_modified>
662
+ <wp:post_modified_gmt><![CDATA[2021-03-09 11:25:20]]></wp:post_modified_gmt>
663
+ <wp:comment_status><![CDATA[open]]></wp:comment_status>
664
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
665
+ <wp:post_name><![CDATA[demo-cream-puff-2]]></wp:post_name>
666
+ <wp:status><![CDATA[inherit]]></wp:status>
667
+ <wp:post_parent>0</wp:post_parent>
668
+ <wp:menu_order>0</wp:menu_order>
669
+ <wp:post_type><![CDATA[attachment]]></wp:post_type>
670
+ <wp:post_password><![CDATA[]]></wp:post_password>
671
+ <wp:is_sticky>0</wp:is_sticky>
672
+ <wp:attachment_url><![CDATA[https://ocdi.com/wp-content/uploads/2021/03/demo-cream-puff-edited-scaled-1.jpg]]></wp:attachment_url>
673
+ <wp:postmeta>
674
+ <wp:meta_key><![CDATA[_wp_attached_file]]></wp:meta_key>
675
+ <wp:meta_value><![CDATA[2021/03/demo-cream-puff-edited-scaled-1.jpg]]></wp:meta_value>
676
+ </wp:postmeta>
677
+ <wp:postmeta>
678
+ <wp:meta_key><![CDATA[_wp_attachment_metadata]]></wp:meta_key>
679
+ <wp:meta_value><![CDATA[a:5:{s:5:"width";i:2560;s:6:"height";i:1915;s:4:"file";s:43:"2021/03/demo-cream-puff-edited-scaled-1.jpg";s:5:"sizes";a:6:{s:6:"medium";a:4:{s:4:"file";s:43:"demo-cream-puff-edited-scaled-1-300x224.jpg";s:5:"width";i:300;s:6:"height";i:224;s:9:"mime-type";s:10:"image/jpeg";}s:5:"large";a:4:{s:4:"file";s:44:"demo-cream-puff-edited-scaled-1-1024x766.jpg";s:5:"width";i:1024;s:6:"height";i:766;s:9:"mime-type";s:10:"image/jpeg";}s:9:"thumbnail";a:4:{s:4:"file";s:43:"demo-cream-puff-edited-scaled-1-150x150.jpg";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:10:"image/jpeg";}s:12:"medium_large";a:4:{s:4:"file";s:43:"demo-cream-puff-edited-scaled-1-768x575.jpg";s:5:"width";i:768;s:6:"height";i:575;s:9:"mime-type";s:10:"image/jpeg";}s:9:"1536x1536";a:4:{s:4:"file";s:45:"demo-cream-puff-edited-scaled-1-1536x1149.jpg";s:5:"width";i:1536;s:6:"height";i:1149;s:9:"mime-type";s:10:"image/jpeg";}s:9:"2048x2048";a:4:{s:4:"file";s:45:"demo-cream-puff-edited-scaled-1-2048x1532.jpg";s:5:"width";i:2048;s:6:"height";i:1532;s:9:"mime-type";s:10:"image/jpeg";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}]]></wp:meta_value>
680
+ </wp:postmeta>
681
+ </item>
682
+
683
+ </channel>
684
+ </rss>
assets/demo-content/portfolio-page.xml ADDED
@@ -0,0 +1,254 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <!-- generator="WordPress/5.7" created="2021-03-25 06:41" -->
3
+ <rss version="2.0"
4
+ xmlns:excerpt="http://wordpress.org/export/1.2/excerpt/"
5
+ xmlns:content="http://purl.org/rss/1.0/modules/content/"
6
+ xmlns:wfw="http://wellformedweb.org/CommentAPI/"
7
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
8
+ xmlns:wp="http://wordpress.org/export/1.2/"
9
+ >
10
+
11
+ <channel>
12
+ <title>ocdi</title>
13
+ <link>https://ocdi.com</link>
14
+ <description>Just another WordPress site</description>
15
+ <pubDate>Thu, 25 Mar 2021 06:41:21 +0000</pubDate>
16
+ <language>en-US</language>
17
+ <wp:wxr_version>1.2</wp:wxr_version>
18
+ <wp:base_site_url>https://ocdi.com</wp:base_site_url>
19
+ <wp:base_blog_url>https://ocdi.com</wp:base_blog_url>
20
+
21
+ <generator>https://wordpress.org/?v=5.7</generator>
22
+
23
+ <item>
24
+ <title><![CDATA[Portfolio]]></title>
25
+ <link>https://ocdi.com/portfolio/</link>
26
+ <pubDate>Tue, 09 Mar 2021 14:19:21 +0000</pubDate>
27
+ <description></description>
28
+ <content:encoded><![CDATA[<!-- wp:paragraph -->
29
+ <p>We've helped thousands of businesses to thrive and grow. Read about our awesome customers to find out exactly how we helped them.</p>
30
+ <!-- /wp:paragraph -->
31
+
32
+ <!-- wp:columns -->
33
+ <div class="wp-block-columns"><!-- wp:column -->
34
+ <div class="wp-block-column"><!-- wp:buttons {"contentJustification":"center"} -->
35
+ <div class="wp-block-buttons is-content-justification-center"><!-- wp:button -->
36
+ <div class="wp-block-button"><a class="wp-block-button__link" rel="#gusto">Gusto Burgers</a></div>
37
+ <!-- /wp:button --></div>
38
+ <!-- /wp:buttons --></div>
39
+ <!-- /wp:column -->
40
+
41
+ <!-- wp:column -->
42
+ <div class="wp-block-column"><!-- wp:buttons {"contentJustification":"center"} -->
43
+ <div class="wp-block-buttons is-content-justification-center"><!-- wp:button -->
44
+ <div class="wp-block-button"><a class="wp-block-button__link" rel="#aurora">Aurora Flowers</a></div>
45
+ <!-- /wp:button --></div>
46
+ <!-- /wp:buttons --></div>
47
+ <!-- /wp:column --></div>
48
+ <!-- /wp:columns -->
49
+
50
+ <!-- wp:separator {"className":"is-style-dots"} -->
51
+ <hr class="wp-block-separator is-style-dots"/>
52
+ <!-- /wp:separator -->
53
+
54
+ <!-- wp:image {"align":"center","id":2109,"sizeSlug":"large","linkDestination":"none"} -->
55
+ <figure id="gusto" class="wp-block-image aligncenter size-large"><img src="https://ocdi.com/wp-content/uploads/2021/02/demo-photo-2-1024x714.png" alt="" class="wp-image-2109"/></figure>
56
+ <!-- /wp:image -->
57
+
58
+ <!-- wp:columns -->
59
+ <div class="wp-block-columns"><!-- wp:column {"width":"25%"} -->
60
+ <div class="wp-block-column" style="flex-basis:25%"><!-- wp:image {"id":2106,"sizeSlug":"large","linkDestination":"none"} -->
61
+ <figure class="wp-block-image size-large"><img src="https://ocdi.com/wp-content/uploads/2021/02/demo-logo-2.png" alt="" class="wp-image-2106"/></figure>
62
+ <!-- /wp:image --></div>
63
+ <!-- /wp:column -->
64
+
65
+ <!-- wp:column {"width":""} -->
66
+ <div class="wp-block-column"><!-- wp:paragraph -->
67
+ <p>Acme helped Gusto Burgers to pivot rapidly to online ordering and take-away during 2020. Our team worked with the brand to add interactive menus to its website covering its entire menu. We also developed a branded app to support speedy ordering, collection and delivery. </p>
68
+ <!-- /wp:paragraph -->
69
+
70
+ <!-- wp:buttons -->
71
+ <div class="wp-block-buttons"><!-- wp:button {"borderRadius":0,"className":"is-style-outline"} -->
72
+ <div class="wp-block-button is-style-outline"><a class="wp-block-button__link no-border-radius" rel="#">Read the case study</a></div>
73
+ <!-- /wp:button --></div>
74
+ <!-- /wp:buttons --></div>
75
+ <!-- /wp:column --></div>
76
+ <!-- /wp:columns -->
77
+
78
+ <!-- wp:separator {"className":"is-style-dots"} -->
79
+ <hr class="wp-block-separator is-style-dots"/>
80
+ <!-- /wp:separator -->
81
+
82
+ <!-- wp:image {"id":2110,"sizeSlug":"large","linkDestination":"none","className":"is-style-default"} -->
83
+ <figure class="wp-block-image size-large is-style-default" id="aurora"><img src="https://ocdi.com/wp-content/uploads/2021/02/demo-photo-3-1024x757.png" alt="" class="wp-image-2110"/></figure>
84
+ <!-- /wp:image -->
85
+
86
+ <!-- wp:columns -->
87
+ <div class="wp-block-columns"><!-- wp:column {"width":"33.33%"} -->
88
+ <div class="wp-block-column" style="flex-basis:33.33%"><!-- wp:image {"id":2107,"sizeSlug":"large","linkDestination":"none"} -->
89
+ <figure class="wp-block-image size-large"><img src="https://ocdi.com/wp-content/uploads/2021/02/logo-demo-3.png" alt="" class="wp-image-2107"/></figure>
90
+ <!-- /wp:image --></div>
91
+ <!-- /wp:column -->
92
+
93
+ <!-- wp:column {"width":"66.66%"} -->
94
+ <div class="wp-block-column" style="flex-basis:66.66%"><!-- wp:paragraph -->
95
+ <p>Our marketing team helped Aurora Flowers to develop a coherent social media strategy, focusing on visual channels like Instagram and Pinterest. We improved post engagement and integrated its online store, resulting in a 10% increase in sales over the Christmas season.</p>
96
+ <!-- /wp:paragraph -->
97
+
98
+ <!-- wp:buttons -->
99
+ <div class="wp-block-buttons"><!-- wp:button {"borderRadius":0,"className":"is-style-outline"} -->
100
+ <div class="wp-block-button is-style-outline"><a class="wp-block-button__link no-border-radius" rel="#">Read the case study</a></div>
101
+ <!-- /wp:button --></div>
102
+ <!-- /wp:buttons --></div>
103
+ <!-- /wp:column --></div>
104
+ <!-- /wp:columns -->]]></content:encoded>
105
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
106
+ <wp:post_date><![CDATA[2021-03-09 09:19:21]]></wp:post_date>
107
+ <wp:post_date_gmt><![CDATA[2021-03-09 14:19:21]]></wp:post_date_gmt>
108
+ <wp:post_modified><![CDATA[2021-03-29 14:48:29]]></wp:post_modified>
109
+ <wp:post_modified_gmt><![CDATA[2021-03-29 14:48:29]]></wp:post_modified_gmt>
110
+ <wp:comment_status><![CDATA[closed]]></wp:comment_status>
111
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
112
+ <wp:post_name><![CDATA[portfolio]]></wp:post_name>
113
+ <wp:status><![CDATA[publish]]></wp:status>
114
+ <wp:post_parent>0</wp:post_parent>
115
+ <wp:menu_order>0</wp:menu_order>
116
+ <wp:post_type><![CDATA[page]]></wp:post_type>
117
+ <wp:post_password><![CDATA[]]></wp:post_password>
118
+ <wp:is_sticky>0</wp:is_sticky>
119
+ </item>
120
+
121
+ <item>
122
+ <title><![CDATA[demo-photo-2]]></title>
123
+ <link>https://ocdi.com/portfolio/demo-photo-2/</link>
124
+ <pubDate>Tue, 23 Feb 2021 13:13:50 +0000</pubDate>
125
+ <guid isPermaLink="false">https://ocdi.com/wp-content/uploads/2021/02/demo-photo-2.png</guid>
126
+ <description></description>
127
+ <content:encoded><![CDATA[]]></content:encoded>
128
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
129
+ <wp:post_id>2109</wp:post_id>
130
+ <wp:post_date><![CDATA[2021-02-23 08:13:50]]></wp:post_date>
131
+ <wp:post_date_gmt><![CDATA[2021-02-23 13:13:50]]></wp:post_date_gmt>
132
+ <wp:post_modified><![CDATA[2021-03-22 15:36:54]]></wp:post_modified>
133
+ <wp:post_modified_gmt><![CDATA[2021-03-22 15:36:54]]></wp:post_modified_gmt>
134
+ <wp:comment_status><![CDATA[open]]></wp:comment_status>
135
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
136
+ <wp:post_name><![CDATA[demo-photo-2]]></wp:post_name>
137
+ <wp:status><![CDATA[inherit]]></wp:status>
138
+ <wp:post_parent>2103</wp:post_parent>
139
+ <wp:menu_order>0</wp:menu_order>
140
+ <wp:post_type><![CDATA[attachment]]></wp:post_type>
141
+ <wp:post_password><![CDATA[]]></wp:post_password>
142
+ <wp:is_sticky>0</wp:is_sticky>
143
+ <wp:attachment_url><![CDATA[https://ocdi.com/wp-content/uploads/2021/02/demo-photo-2.png]]></wp:attachment_url>
144
+ <wp:postmeta>
145
+ <wp:meta_key><![CDATA[_wp_attached_file]]></wp:meta_key>
146
+ <wp:meta_value><![CDATA[2021/02/demo-photo-2.png]]></wp:meta_value>
147
+ </wp:postmeta>
148
+ <wp:postmeta>
149
+ <wp:meta_key><![CDATA[_wp_attachment_metadata]]></wp:meta_key>
150
+ <wp:meta_value><![CDATA[a:5:{s:5:"width";i:1310;s:6:"height";i:914;s:4:"file";s:24:"2021/02/demo-photo-2.png";s:5:"sizes";a:4:{s:6:"medium";a:4:{s:4:"file";s:24:"demo-photo-2-300x209.png";s:5:"width";i:300;s:6:"height";i:209;s:9:"mime-type";s:9:"image/png";}s:5:"large";a:4:{s:4:"file";s:25:"demo-photo-2-1024x714.png";s:5:"width";i:1024;s:6:"height";i:714;s:9:"mime-type";s:9:"image/png";}s:9:"thumbnail";a:4:{s:4:"file";s:24:"demo-photo-2-150x150.png";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:9:"image/png";}s:12:"medium_large";a:4:{s:4:"file";s:24:"demo-photo-2-768x536.png";s:5:"width";i:768;s:6:"height";i:536;s:9:"mime-type";s:9:"image/png";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}]]></wp:meta_value>
151
+ </wp:postmeta>
152
+ </item>
153
+
154
+ <item>
155
+ <title><![CDATA[demo-photo-3]]></title>
156
+ <link>https://ocdi.com/portfolio/demo-photo-3/</link>
157
+ <pubDate>Tue, 23 Feb 2021 13:21:32 +0000</pubDate>
158
+ <guid isPermaLink="false">https://ocdi.com/wp-content/uploads/2021/02/demo-photo-3.png</guid>
159
+ <description></description>
160
+ <content:encoded><![CDATA[]]></content:encoded>
161
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
162
+ <wp:post_id>2110</wp:post_id>
163
+ <wp:post_date><![CDATA[2021-02-23 08:21:32]]></wp:post_date>
164
+ <wp:post_date_gmt><![CDATA[2021-02-23 13:21:32]]></wp:post_date_gmt>
165
+ <wp:post_modified><![CDATA[2021-03-22 15:36:54]]></wp:post_modified>
166
+ <wp:post_modified_gmt><![CDATA[2021-03-22 15:36:54]]></wp:post_modified_gmt>
167
+ <wp:comment_status><![CDATA[open]]></wp:comment_status>
168
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
169
+ <wp:post_name><![CDATA[demo-photo-3]]></wp:post_name>
170
+ <wp:status><![CDATA[inherit]]></wp:status>
171
+ <wp:post_parent>2103</wp:post_parent>
172
+ <wp:menu_order>0</wp:menu_order>
173
+ <wp:post_type><![CDATA[attachment]]></wp:post_type>
174
+ <wp:post_password><![CDATA[]]></wp:post_password>
175
+ <wp:is_sticky>0</wp:is_sticky>
176
+ <wp:attachment_url><![CDATA[https://ocdi.com/wp-content/uploads/2021/02/demo-photo-3.png]]></wp:attachment_url>
177
+ <wp:postmeta>
178
+ <wp:meta_key><![CDATA[_wp_attached_file]]></wp:meta_key>
179
+ <wp:meta_value><![CDATA[2021/02/demo-photo-3.png]]></wp:meta_value>
180
+ </wp:postmeta>
181
+ <wp:postmeta>
182
+ <wp:meta_key><![CDATA[_wp_attachment_metadata]]></wp:meta_key>
183
+ <wp:meta_value><![CDATA[a:5:{s:5:"width";i:1432;s:6:"height";i:1058;s:4:"file";s:24:"2021/02/demo-photo-3.png";s:5:"sizes";a:4:{s:6:"medium";a:4:{s:4:"file";s:24:"demo-photo-3-300x222.png";s:5:"width";i:300;s:6:"height";i:222;s:9:"mime-type";s:9:"image/png";}s:5:"large";a:4:{s:4:"file";s:25:"demo-photo-3-1024x757.png";s:5:"width";i:1024;s:6:"height";i:757;s:9:"mime-type";s:9:"image/png";}s:9:"thumbnail";a:4:{s:4:"file";s:24:"demo-photo-3-150x150.png";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:9:"image/png";}s:12:"medium_large";a:4:{s:4:"file";s:24:"demo-photo-3-768x567.png";s:5:"width";i:768;s:6:"height";i:567;s:9:"mime-type";s:9:"image/png";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}]]></wp:meta_value>
184
+ </wp:postmeta>
185
+ </item>
186
+
187
+ <item>
188
+ <title><![CDATA[demo-logo-2]]></title>
189
+ <link>https://ocdi.com/portfolio/demo-logo-2/</link>
190
+ <pubDate>Tue, 23 Feb 2021 12:11:17 +0000</pubDate>
191
+ <guid isPermaLink="false">https://ocdi.com/wp-content/uploads/2021/02/demo-logo-2.png</guid>
192
+ <description></description>
193
+ <content:encoded><![CDATA[]]></content:encoded>
194
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
195
+ <wp:post_id>2106</wp:post_id>
196
+ <wp:post_date><![CDATA[2021-02-23 07:11:17]]></wp:post_date>
197
+ <wp:post_date_gmt><![CDATA[2021-02-23 12:11:17]]></wp:post_date_gmt>
198
+ <wp:post_modified><![CDATA[2021-03-22 15:36:54]]></wp:post_modified>
199
+ <wp:post_modified_gmt><![CDATA[2021-03-22 15:36:54]]></wp:post_modified_gmt>
200
+ <wp:comment_status><![CDATA[open]]></wp:comment_status>
201
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
202
+ <wp:post_name><![CDATA[demo-logo-2]]></wp:post_name>
203
+ <wp:status><![CDATA[inherit]]></wp:status>
204
+ <wp:post_parent>2103</wp:post_parent>
205
+ <wp:menu_order>0</wp:menu_order>
206
+ <wp:post_type><![CDATA[attachment]]></wp:post_type>
207
+ <wp:post_password><![CDATA[]]></wp:post_password>
208
+ <wp:is_sticky>0</wp:is_sticky>
209
+ <wp:attachment_url><![CDATA[https://ocdi.com/wp-content/uploads/2021/02/demo-logo-2.png]]></wp:attachment_url>
210
+ <wp:postmeta>
211
+ <wp:meta_key><![CDATA[_wp_attached_file]]></wp:meta_key>
212
+ <wp:meta_value><![CDATA[2021/02/demo-logo-2.png]]></wp:meta_value>
213
+ </wp:postmeta>
214
+ <wp:postmeta>
215
+ <wp:meta_key><![CDATA[_wp_attachment_metadata]]></wp:meta_key>
216
+ <wp:meta_value><![CDATA[a:5:{s:5:"width";i:1000;s:6:"height";i:1000;s:4:"file";s:23:"2021/02/demo-logo-2.png";s:5:"sizes";a:3:{s:6:"medium";a:4:{s:4:"file";s:23:"demo-logo-2-300x300.png";s:5:"width";i:300;s:6:"height";i:300;s:9:"mime-type";s:9:"image/png";}s:9:"thumbnail";a:4:{s:4:"file";s:23:"demo-logo-2-150x150.png";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:9:"image/png";}s:12:"medium_large";a:4:{s:4:"file";s:23:"demo-logo-2-768x768.png";s:5:"width";i:768;s:6:"height";i:768;s:9:"mime-type";s:9:"image/png";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}]]></wp:meta_value>
217
+ </wp:postmeta>
218
+ </item>
219
+
220
+ <item>
221
+ <title><![CDATA[logo-demo-3]]></title>
222
+ <link>https://ocdi.com/portfolio/logo-demo-3/</link>
223
+ <pubDate>Tue, 23 Feb 2021 12:17:24 +0000</pubDate>
224
+ <guid isPermaLink="false">https://ocdi.com/wp-content/uploads/2021/02/logo-demo-3.png</guid>
225
+ <description></description>
226
+ <content:encoded><![CDATA[]]></content:encoded>
227
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
228
+ <wp:post_id>2107</wp:post_id>
229
+ <wp:post_date><![CDATA[2021-02-23 07:17:24]]></wp:post_date>
230
+ <wp:post_date_gmt><![CDATA[2021-02-23 12:17:24]]></wp:post_date_gmt>
231
+ <wp:post_modified><![CDATA[2021-03-22 15:36:54]]></wp:post_modified>
232
+ <wp:post_modified_gmt><![CDATA[2021-03-22 15:36:54]]></wp:post_modified_gmt>
233
+ <wp:comment_status><![CDATA[open]]></wp:comment_status>
234
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
235
+ <wp:post_name><![CDATA[logo-demo-3]]></wp:post_name>
236
+ <wp:status><![CDATA[inherit]]></wp:status>
237
+ <wp:post_parent>2103</wp:post_parent>
238
+ <wp:menu_order>0</wp:menu_order>
239
+ <wp:post_type><![CDATA[attachment]]></wp:post_type>
240
+ <wp:post_password><![CDATA[]]></wp:post_password>
241
+ <wp:is_sticky>0</wp:is_sticky>
242
+ <wp:attachment_url><![CDATA[https://ocdi.com/wp-content/uploads/2021/02/logo-demo-3.png]]></wp:attachment_url>
243
+ <wp:postmeta>
244
+ <wp:meta_key><![CDATA[_wp_attached_file]]></wp:meta_key>
245
+ <wp:meta_value><![CDATA[2021/02/logo-demo-3.png]]></wp:meta_value>
246
+ </wp:postmeta>
247
+ <wp:postmeta>
248
+ <wp:meta_key><![CDATA[_wp_attachment_metadata]]></wp:meta_key>
249
+ <wp:meta_value><![CDATA[a:5:{s:5:"width";i:1000;s:6:"height";i:1000;s:4:"file";s:23:"2021/02/logo-demo-3.png";s:5:"sizes";a:3:{s:6:"medium";a:4:{s:4:"file";s:23:"logo-demo-3-300x300.png";s:5:"width";i:300;s:6:"height";i:300;s:9:"mime-type";s:9:"image/png";}s:9:"thumbnail";a:4:{s:4:"file";s:23:"logo-demo-3-150x150.png";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:9:"image/png";}s:12:"medium_large";a:4:{s:4:"file";s:23:"logo-demo-3-768x768.png";s:5:"width";i:768;s:6:"height";i:768;s:9:"mime-type";s:9:"image/png";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}]]></wp:meta_value>
250
+ </wp:postmeta>
251
+ </item>
252
+
253
+ </channel>
254
+ </rss>
assets/demo-content/services-page.xml ADDED
@@ -0,0 +1,138 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <!-- generator="WordPress/5.7" created="2021-03-25 06:41" -->
3
+ <rss version="2.0"
4
+ xmlns:excerpt="http://wordpress.org/export/1.2/excerpt/"
5
+ xmlns:content="http://purl.org/rss/1.0/modules/content/"
6
+ xmlns:wfw="http://wellformedweb.org/CommentAPI/"
7
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
8
+ xmlns:wp="http://wordpress.org/export/1.2/"
9
+ >
10
+
11
+ <channel>
12
+ <title>ocdi</title>
13
+ <link>https://ocdi.com</link>
14
+ <description>Just another WordPress site</description>
15
+ <pubDate>Thu, 25 Mar 2021 06:41:21 +0000</pubDate>
16
+ <language>en-US</language>
17
+ <wp:wxr_version>1.2</wp:wxr_version>
18
+ <wp:base_site_url>https://ocdi.com</wp:base_site_url>
19
+ <wp:base_blog_url>https://ocdi.com</wp:base_blog_url>
20
+
21
+ <generator>https://wordpress.org/?v=5.7</generator>
22
+
23
+ <item>
24
+ <title><![CDATA[Services]]></title>
25
+ <link>https://ocdi.com/services/</link>
26
+ <pubDate>Tue, 09 Mar 2021 14:11:37 +0000</pubDate>
27
+ <description></description>
28
+ <content:encoded><![CDATA[<!-- wp:paragraph -->
29
+ <p>Choose between three monthly plans. </p>
30
+ <!-- /wp:paragraph -->
31
+
32
+ <!-- wp:columns {"backgroundColor":"gray"} -->
33
+ <div class="wp-block-columns has-gray-background-color has-background"><!-- wp:column -->
34
+ <div class="wp-block-column"><!-- wp:heading {"textAlign":"center","level":3} -->
35
+ <h3 class="has-text-align-center" id="h-basic">Basic</h3>
36
+ <!-- /wp:heading -->
37
+
38
+ <!-- wp:paragraph {"align":"center"} -->
39
+ <p class="has-text-align-center">$20/mo</p>
40
+ <!-- /wp:paragraph -->
41
+
42
+ <!-- wp:paragraph -->
43
+ <p>This service is awesome if you're just starting out!</p>
44
+ <!-- /wp:paragraph -->
45
+
46
+ <!-- wp:list -->
47
+ <ul><li>Service</li><li>Service</li><li>Service</li></ul>
48
+ <!-- /wp:list --></div>
49
+ <!-- /wp:column -->
50
+
51
+ <!-- wp:column -->
52
+ <div class="wp-block-column"><!-- wp:heading {"textAlign":"center","level":3} -->
53
+ <h3 class="has-text-align-center" id="h-agency">Agency</h3>
54
+ <!-- /wp:heading -->
55
+
56
+ <!-- wp:paragraph {"align":"center"} -->
57
+ <p class="has-text-align-center">$50/mo</p>
58
+ <!-- /wp:paragraph -->
59
+
60
+ <!-- wp:paragraph -->
61
+ <p>This is the best choice for small businesses who want to see rapid results.</p>
62
+ <!-- /wp:paragraph -->
63
+
64
+ <!-- wp:list -->
65
+ <ul><li>Service</li><li>Service</li><li>Service</li><li>Service</li><li>Service</li></ul>
66
+ <!-- /wp:list --></div>
67
+ <!-- /wp:column -->
68
+
69
+ <!-- wp:column -->
70
+ <div class="wp-block-column"><!-- wp:heading {"textAlign":"center","level":3} -->
71
+ <h3 class="has-text-align-center" id="h-pro">Pro</h3>
72
+ <!-- /wp:heading -->
73
+
74
+ <!-- wp:paragraph {"align":"center"} -->
75
+ <p class="has-text-align-center">$30/mo</p>
76
+ <!-- /wp:paragraph -->
77
+
78
+ <!-- wp:paragraph -->
79
+ <p>Want the whole package? We got it covered.</p>
80
+ <!-- /wp:paragraph -->
81
+
82
+ <!-- wp:list -->
83
+ <ul><li>Service</li><li>Service</li><li>Service</li><li>Service</li></ul>
84
+ <!-- /wp:list --></div>
85
+ <!-- /wp:column --></div>
86
+ <!-- /wp:columns -->
87
+
88
+ <!-- wp:columns -->
89
+ <div class="wp-block-columns"><!-- wp:column -->
90
+ <div class="wp-block-column"><!-- wp:buttons {"contentJustification":"center"} -->
91
+ <div class="wp-block-buttons is-content-justification-center"><!-- wp:button -->
92
+ <div class="wp-block-button"><a class="wp-block-button__link">Learn More</a></div>
93
+ <!-- /wp:button --></div>
94
+ <!-- /wp:buttons --></div>
95
+ <!-- /wp:column -->
96
+
97
+ <!-- wp:column -->
98
+ <div class="wp-block-column"><!-- wp:buttons {"contentJustification":"center"} -->
99
+ <div class="wp-block-buttons is-content-justification-center"><!-- wp:button -->
100
+ <div class="wp-block-button"><a class="wp-block-button__link">Learn More</a></div>
101
+ <!-- /wp:button --></div>
102
+ <!-- /wp:buttons --></div>
103
+ <!-- /wp:column -->
104
+
105
+ <!-- wp:column -->
106
+ <div class="wp-block-column"><!-- wp:buttons {"contentJustification":"center"} -->
107
+ <div class="wp-block-buttons is-content-justification-center"><!-- wp:button -->
108
+ <div class="wp-block-button"><a class="wp-block-button__link">Learn More</a></div>
109
+ <!-- /wp:button --></div>
110
+ <!-- /wp:buttons --></div>
111
+ <!-- /wp:column --></div>
112
+ <!-- /wp:columns -->
113
+
114
+ <!-- wp:heading -->
115
+ <h2 id="h-our-guarantee">Our Guarantee</h2>
116
+ <!-- /wp:heading -->
117
+
118
+ <!-- wp:paragraph -->
119
+ <p>We offer a full money-back guarantee on all plans if you cancel within the first 30-days. Not happy with your plan? Switch it any time!</p>
120
+ <!-- /wp:paragraph -->]]></content:encoded>
121
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
122
+ <wp:post_date><![CDATA[2021-03-09 09:11:37]]></wp:post_date>
123
+ <wp:post_date_gmt><![CDATA[2021-03-09 14:11:37]]></wp:post_date_gmt>
124
+ <wp:post_modified><![CDATA[2021-03-23 08:46:09]]></wp:post_modified>
125
+ <wp:post_modified_gmt><![CDATA[2021-03-23 08:46:09]]></wp:post_modified_gmt>
126
+ <wp:comment_status><![CDATA[closed]]></wp:comment_status>
127
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
128
+ <wp:post_name><![CDATA[services]]></wp:post_name>
129
+ <wp:status><![CDATA[publish]]></wp:status>
130
+ <wp:post_parent>0</wp:post_parent>
131
+ <wp:menu_order>0</wp:menu_order>
132
+ <wp:post_type><![CDATA[page]]></wp:post_type>
133
+ <wp:post_password><![CDATA[]]></wp:post_password>
134
+ <wp:is_sticky>0</wp:is_sticky>
135
+ </item>
136
+
137
+ </channel>
138
+ </rss>
assets/demo-content/shop-page.xml ADDED
@@ -0,0 +1,450 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <!-- generator="WordPress/5.7" created="2021-03-25 06:41" -->
3
+ <rss version="2.0"
4
+ xmlns:excerpt="http://wordpress.org/export/1.2/excerpt/"
5
+ xmlns:content="http://purl.org/rss/1.0/modules/content/"
6
+ xmlns:wfw="http://wellformedweb.org/CommentAPI/"
7
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
8
+ xmlns:wp="http://wordpress.org/export/1.2/"
9
+ >
10
+
11
+ <channel>
12
+ <title>ocdi</title>
13
+ <link>https://ocdi.com</link>
14
+ <description>Just another WordPress site</description>
15
+ <pubDate>Thu, 25 Mar 2021 06:41:21 +0000</pubDate>
16
+ <language>en-US</language>
17
+ <wp:wxr_version>1.2</wp:wxr_version>
18
+ <wp:base_site_url>https://ocdi.com</wp:base_site_url>
19
+ <wp:base_blog_url>https://ocdi.com</wp:base_blog_url>
20
+
21
+ <generator>https://wordpress.org/?v=5.7</generator>
22
+
23
+ <item>
24
+ <title><![CDATA[Shop]]></title>
25
+ <link>https://ocdi.com/shop/</link>
26
+ <pubDate>Fri, 05 Mar 2021 23:02:56 +0000</pubDate>
27
+ <description></description>
28
+ <content:encoded><![CDATA[<!-- wp:cover {"url":"https://ocdi.com/wp-content/uploads/2021/03/domenico-loia-hGV2TfOh0ns-unsplash-1-1-scaled-1.jpg","id":2332,"dimRatio":15,"focalPoint":{"x":"0.40","y":"0.26"},"minHeight":375,"minHeightUnit":"px","contentPosition":"center center","align":"wide","className":"is-position-center-center"} -->
29
+ <div class="wp-block-cover alignwide has-background-dim-20 has-background-dim is-position-center-center" style="min-height:375px"><img class="wp-block-cover__image-background wp-image-2332" alt="" src="https://ocdi.com/wp-content/uploads/2021/03/domenico-loia-hGV2TfOh0ns-unsplash-1-1-scaled-1.jpg" style="object-position:40% 26%" data-object-fit="cover" data-object-position="40% 26%"/><div class="wp-block-cover__inner-container"><!-- wp:paragraph {"align":"center"} -->
30
+ <p class="has-text-align-center">RESOURCES THAT WILL HELP YOU</p>
31
+ <!-- /wp:paragraph -->
32
+
33
+ <!-- wp:paragraph {"align":"center","placeholder":"Write title…","style":{"typography":{"fontSize":74,"lineHeight":"1.1"},"color":{"text":"#fffffa"}}} -->
34
+ <p class="has-text-align-center has-text-color" style="color:#fffffa;font-size:74px;line-height:1.1"><strong>Make Your Life Easier</strong></p>
35
+ <!-- /wp:paragraph -->
36
+
37
+ <!-- wp:paragraph {"align":"center"} -->
38
+ <p class="has-text-align-center">Check out our latest tools, products, and services to help you do the things you need to do.</p>
39
+ <!-- /wp:paragraph --></div></div>
40
+ <!-- /wp:cover -->
41
+
42
+ <!-- wp:spacer -->
43
+ <div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>
44
+ <!-- /wp:spacer -->
45
+
46
+ <!-- wp:separator -->
47
+ <hr class="wp-block-separator"/>
48
+ <!-- /wp:separator -->
49
+
50
+ <!-- wp:categories {"displayAsDropdown":true,"showHierarchy":true} /-->
51
+
52
+ <!-- wp:gallery {"ids":[2352],"linkTo":"none"} -->
53
+ <figure class="wp-block-gallery columns-1 is-cropped"><ul class="blocks-gallery-grid"><li class="blocks-gallery-item"><figure><img src="https://ocdi.com/wp-content/uploads/2021/03/bench-accounting-C3V88BOoRoM-unsplash-1-scaled-1-1024x684.jpg" alt="" data-id="2352" data-full-url="https://ocdi.com/wp-content/uploads/2021/03/bench-accounting-C3V88BOoRoM-unsplash-1-scaled-1.jpg" data-link="https://ocdi.com/shop/bench-accounting-c3v88boorom-unsplash-1/" class="wp-image-2352"/><figcaption class="blocks-gallery-item__caption">FREEBIES</figcaption></figure></li></ul></figure>
54
+ <!-- /wp:gallery -->
55
+
56
+ <!-- wp:gallery {"ids":[2347,2346,2344],"linkTo":"none"} -->
57
+ <figure class="wp-block-gallery columns-3 is-cropped"><ul class="blocks-gallery-grid"><li class="blocks-gallery-item"><figure><img src="https://ocdi.com/wp-content/uploads/2021/03/alexandra-tran-vfLzpWbuweE-unsplash-1-scaled-1-1024x683.jpg" alt="" data-id="2347" data-full-url="https://ocdi.com/wp-content/uploads/2021/03/alexandra-tran-vfLzpWbuweE-unsplash-1-scaled-1.jpg" data-link="https://ocdi.com/shop/alexandra-tran-vflzpwbuwee-unsplash-1/" class="wp-image-2347"/><figcaption class="blocks-gallery-item__caption">PRODUCTS</figcaption></figure></li><li class="blocks-gallery-item"><figure><img src="https://ocdi.com/wp-content/uploads/2021/03/spencer-DXobXpIa9_4-unsplash-2-1-scaled-1-1024x768.jpg" alt="" data-id="2346" data-full-url="https://ocdi.com/wp-content/uploads/2021/03/spencer-DXobXpIa9_4-unsplash-2-1-scaled-1.jpg" data-link="https://ocdi.com/shop/spencer-dxobxpia9_4-unsplash-2-1/" class="wp-image-2346"/><figcaption class="blocks-gallery-item__caption">COURSES</figcaption></figure></li><li class="blocks-gallery-item"><figure><img src="https://ocdi.com/wp-content/uploads/2021/03/alejandro-escamilla-BbQLHCpVUqA-unsplash-2-scaled-1-1024x686.jpg" alt="" data-id="2344" data-full-url="https://ocdi.com/wp-content/uploads/2021/03/alejandro-escamilla-BbQLHCpVUqA-unsplash-2-scaled-1.jpg" data-link="https://ocdi.com/shop/alejandro-escamilla-bbqlhcpvuqa-unsplash-2/" class="wp-image-2344"/><figcaption class="blocks-gallery-item__caption">CONSULTING</figcaption></figure></li></ul></figure>
58
+ <!-- /wp:gallery -->
59
+
60
+ <!-- wp:spacer {"height":27} -->
61
+ <div style="height:27px" aria-hidden="true" class="wp-block-spacer"></div>
62
+ <!-- /wp:spacer -->
63
+
64
+ <!-- wp:separator -->
65
+ <hr class="wp-block-separator"/>
66
+ <!-- /wp:separator -->
67
+
68
+ <!-- wp:cover {"url":"https://ocdi.com/wp-content/uploads/2021/03/bench-accounting-C3V88BOoRoM-unsplash-1-scaled-1.jpg","id":2352,"isRepeated":true,"dimRatio":15,"focalPoint":{"x":"0.05","y":"0.71"},"minHeight":375,"minHeightUnit":"px","contentPosition":"center center","align":"wide","className":"is-position-center-center"} -->
69
+ <div class="wp-block-cover alignwide has-background-dim-20 has-background-dim is-repeated is-position-center-center" style="background-image:url(https://ocdi.com/wp-content/uploads/2021/03/bench-accounting-C3V88BOoRoM-unsplash-1-scaled-1.jpg);min-height:375px"><div class="wp-block-cover__inner-container"><!-- wp:paragraph {"align":"center","placeholder":"Write title…","style":{"typography":{"fontSize":74,"lineHeight":"1.1"},"color":{"text":"#fffffa"}}} -->
70
+ <p class="has-text-align-center has-text-color" style="color:#fffffa;font-size:74px;line-height:1.1"><strong>The Reviews Are In</strong></p>
71
+ <!-- /wp:paragraph --></div></div>
72
+ <!-- /wp:cover -->
73
+
74
+ <!-- wp:spacer {"height":46} -->
75
+ <div style="height:46px" aria-hidden="true" class="wp-block-spacer"></div>
76
+ <!-- /wp:spacer -->
77
+
78
+ <!-- wp:heading {"textAlign":"center","level":3} -->
79
+ <h3 class="has-text-align-center" id="h-real-customers-real-results">Real Customers. Real Results.</h3>
80
+ <!-- /wp:heading -->
81
+
82
+ <!-- wp:columns -->
83
+ <div class="wp-block-columns"><!-- wp:column -->
84
+ <div class="wp-block-column"><!-- wp:image {"align":"center","id":2354,"sizeSlug":"thumbnail","linkDestination":"none","className":"is-style-rounded"} -->
85
+ <div class="wp-block-image is-style-rounded"><figure class="aligncenter size-thumbnail"><img src="https://ocdi.com/wp-content/uploads/2021/03/aryo-lahap-ZVc4Zg4TY8s-unsplash-1-150x150.jpg" alt="" class="wp-image-2354"/></figure></div>
86
+ <!-- /wp:image --></div>
87
+ <!-- /wp:column -->
88
+
89
+ <!-- wp:column -->
90
+ <div class="wp-block-column"><!-- wp:image {"align":"center","id":2355,"sizeSlug":"thumbnail","linkDestination":"none","className":"is-style-rounded"} -->
91
+ <div class="wp-block-image is-style-rounded"><figure class="aligncenter size-thumbnail"><img src="https://ocdi.com/wp-content/uploads/2021/03/the-creative-exchange-UhpAf0ySwuk-unsplash-1-1-scaled-1-150x150.jpg" alt="" class="wp-image-2355"/></figure></div>
92
+ <!-- /wp:image --></div>
93
+ <!-- /wp:column -->
94
+
95
+ <!-- wp:column -->
96
+ <div class="wp-block-column"><!-- wp:image {"align":"center","id":2356,"sizeSlug":"thumbnail","linkDestination":"none","className":"is-style-rounded"} -->
97
+ <div class="wp-block-image is-style-rounded"><figure class="aligncenter size-thumbnail"><img src="https://ocdi.com/wp-content/uploads/2021/03/meritt-thomas-aoQ4DYZLE_E-unsplash-1-1-scaled-1-150x150.jpg" alt="" class="wp-image-2356"/></figure></div>
98
+ <!-- /wp:image --></div>
99
+ <!-- /wp:column --></div>
100
+ <!-- /wp:columns -->
101
+
102
+ <!-- wp:columns -->
103
+ <div class="wp-block-columns"><!-- wp:column -->
104
+ <div class="wp-block-column"><!-- wp:heading {"textAlign":"center","level":3} -->
105
+ <h3 class="has-text-align-center" id="h-seriously-magic">"Seriously magic."</h3>
106
+ <!-- /wp:heading -->
107
+
108
+ <!-- wp:quote -->
109
+ <blockquote class="wp-block-quote"><p><strong>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."</strong></p><cite><em>-Marcus Tran</em></cite></blockquote>
110
+ <!-- /wp:quote --></div>
111
+ <!-- /wp:column -->
112
+
113
+ <!-- wp:column -->
114
+ <div class="wp-block-column"><!-- wp:heading {"textAlign":"center","level":3} -->
115
+ <h3 class="has-text-align-center" id="h-my-favorite-tool">"My favorite tool!</h3>
116
+ <!-- /wp:heading -->
117
+
118
+ <!-- wp:quote -->
119
+ <blockquote class="wp-block-quote"><p><strong>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."</strong></p><cite><em>-Sarah Jackson</em></cite></blockquote>
120
+ <!-- /wp:quote --></div>
121
+ <!-- /wp:column -->
122
+
123
+ <!-- wp:column -->
124
+ <div class="wp-block-column"><!-- wp:heading {"textAlign":"center","level":3} -->
125
+ <h3 class="has-text-align-center" id="h-game-changer">"Game-changer."</h3>
126
+ <!-- /wp:heading -->
127
+
128
+ <!-- wp:quote -->
129
+ <blockquote class="wp-block-quote"><p><strong>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."</strong></p><cite><em>-Susan Hartley</em></cite></blockquote>
130
+ <!-- /wp:quote --></div>
131
+ <!-- /wp:column --></div>
132
+ <!-- /wp:columns -->
133
+
134
+ <!-- wp:heading -->
135
+ <h2 id="h-"></h2>
136
+ <!-- /wp:heading -->]]></content:encoded>
137
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
138
+ <wp:post_date><![CDATA[2021-03-05 18:02:56]]></wp:post_date>
139
+ <wp:post_date_gmt><![CDATA[2021-03-05 23:02:56]]></wp:post_date_gmt>
140
+ <wp:post_modified><![CDATA[2021-03-29 14:55:50]]></wp:post_modified>
141
+ <wp:post_modified_gmt><![CDATA[2021-03-29 14:55:50]]></wp:post_modified_gmt>
142
+ <wp:comment_status><![CDATA[closed]]></wp:comment_status>
143
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
144
+ <wp:post_name><![CDATA[shop]]></wp:post_name>
145
+ <wp:status><![CDATA[publish]]></wp:status>
146
+ <wp:post_parent>0</wp:post_parent>
147
+ <wp:menu_order>0</wp:menu_order>
148
+ <wp:post_type><![CDATA[page]]></wp:post_type>
149
+ <wp:post_password><![CDATA[]]></wp:post_password>
150
+ <wp:is_sticky>0</wp:is_sticky>
151
+ </item>
152
+
153
+ <item>
154
+ <title><![CDATA[domenico-loia-hGV2TfOh0ns-unsplash-1-1]]></title>
155
+ <link>https://ocdi.com/shop/domenico-loia-hgv2tfoh0ns-unsplash-1-1/</link>
156
+ <pubDate>Fri, 05 Mar 2021 18:30:02 +0000</pubDate>
157
+ <guid isPermaLink="false">https://ocdi.com/wp-content/uploads/2021/03/domenico-loia-hGV2TfOh0ns-unsplash-1-1.jpg</guid>
158
+ <description></description>
159
+ <content:encoded><![CDATA[]]></content:encoded>
160
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
161
+ <wp:post_id>2332</wp:post_id>
162
+ <wp:post_date><![CDATA[2021-03-05 13:30:02]]></wp:post_date>
163
+ <wp:post_date_gmt><![CDATA[2021-03-05 18:30:02]]></wp:post_date_gmt>
164
+ <wp:post_modified><![CDATA[2021-03-22 15:36:57]]></wp:post_modified>
165
+ <wp:post_modified_gmt><![CDATA[2021-03-22 15:36:57]]></wp:post_modified_gmt>
166
+ <wp:comment_status><![CDATA[open]]></wp:comment_status>
167
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
168
+ <wp:post_name><![CDATA[domenico-loia-hgv2tfoh0ns-unsplash-1-1]]></wp:post_name>
169
+ <wp:status><![CDATA[inherit]]></wp:status>
170
+ <wp:post_parent>2330</wp:post_parent>
171
+ <wp:menu_order>0</wp:menu_order>
172
+ <wp:post_type><![CDATA[attachment]]></wp:post_type>
173
+ <wp:post_password><![CDATA[]]></wp:post_password>
174
+ <wp:is_sticky>0</wp:is_sticky>
175
+ <wp:attachment_url><![CDATA[https://ocdi.com/wp-content/uploads/2021/03/domenico-loia-hGV2TfOh0ns-unsplash-1-1-scaled-1.jpg]]></wp:attachment_url>
176
+ <wp:postmeta>
177
+ <wp:meta_key><![CDATA[_wp_attached_file]]></wp:meta_key>
178
+ <wp:meta_value><![CDATA[2021/03/domenico-loia-hGV2TfOh0ns-unsplash-1-1-scaled-1.jpg]]></wp:meta_value>
179
+ </wp:postmeta>
180
+ <wp:postmeta>
181
+ <wp:meta_key><![CDATA[_wp_attachment_metadata]]></wp:meta_key>
182
+ <wp:meta_value><![CDATA[a:5:{s:5:"width";i:2560;s:6:"height";i:1707;s:4:"file";s:59:"2021/03/domenico-loia-hGV2TfOh0ns-unsplash-1-1-scaled-1.jpg";s:5:"sizes";a:6:{s:6:"medium";a:4:{s:4:"file";s:59:"domenico-loia-hGV2TfOh0ns-unsplash-1-1-scaled-1-300x200.jpg";s:5:"width";i:300;s:6:"height";i:200;s:9:"mime-type";s:10:"image/jpeg";}s:5:"large";a:4:{s:4:"file";s:60:"domenico-loia-hGV2TfOh0ns-unsplash-1-1-scaled-1-1024x683.jpg";s:5:"width";i:1024;s:6:"height";i:683;s:9:"mime-type";s:10:"image/jpeg";}s:9:"thumbnail";a:4:{s:4:"file";s:59:"domenico-loia-hGV2TfOh0ns-unsplash-1-1-scaled-1-150x150.jpg";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:10:"image/jpeg";}s:12:"medium_large";a:4:{s:4:"file";s:59:"domenico-loia-hGV2TfOh0ns-unsplash-1-1-scaled-1-768x512.jpg";s:5:"width";i:768;s:6:"height";i:512;s:9:"mime-type";s:10:"image/jpeg";}s:9:"1536x1536";a:4:{s:4:"file";s:61:"domenico-loia-hGV2TfOh0ns-unsplash-1-1-scaled-1-1536x1024.jpg";s:5:"width";i:1536;s:6:"height";i:1024;s:9:"mime-type";s:10:"image/jpeg";}s:9:"2048x2048";a:4:{s:4:"file";s:61:"domenico-loia-hGV2TfOh0ns-unsplash-1-1-scaled-1-2048x1366.jpg";s:5:"width";i:2048;s:6:"height";i:1366;s:9:"mime-type";s:10:"image/jpeg";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}]]></wp:meta_value>
183
+ </wp:postmeta>
184
+ </item>
185
+
186
+ <item>
187
+ <title><![CDATA[bench-accounting-C3V88BOoRoM-unsplash-1]]></title>
188
+ <link>https://ocdi.com/shop/bench-accounting-c3v88boorom-unsplash-1/</link>
189
+ <pubDate>Fri, 05 Mar 2021 19:00:32 +0000</pubDate>
190
+ <guid isPermaLink="false">https://ocdi.com/wp-content/uploads/2021/03/bench-accounting-C3V88BOoRoM-unsplash-1.jpg</guid>
191
+ <description></description>
192
+ <content:encoded><![CDATA[]]></content:encoded>
193
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
194
+ <wp:post_id>2352</wp:post_id>
195
+ <wp:post_date><![CDATA[2021-03-05 14:00:32]]></wp:post_date>
196
+ <wp:post_date_gmt><![CDATA[2021-03-05 19:00:32]]></wp:post_date_gmt>
197
+ <wp:post_modified><![CDATA[2021-03-22 15:36:58]]></wp:post_modified>
198
+ <wp:post_modified_gmt><![CDATA[2021-03-22 15:36:58]]></wp:post_modified_gmt>
199
+ <wp:comment_status><![CDATA[open]]></wp:comment_status>
200
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
201
+ <wp:post_name><![CDATA[bench-accounting-c3v88boorom-unsplash-1]]></wp:post_name>
202
+ <wp:status><![CDATA[inherit]]></wp:status>
203
+ <wp:post_parent>2330</wp:post_parent>
204
+ <wp:menu_order>0</wp:menu_order>
205
+ <wp:post_type><![CDATA[attachment]]></wp:post_type>
206
+ <wp:post_password><![CDATA[]]></wp:post_password>
207
+ <wp:is_sticky>0</wp:is_sticky>
208
+ <wp:attachment_url><![CDATA[https://ocdi.com/wp-content/uploads/2021/03/bench-accounting-C3V88BOoRoM-unsplash-1-scaled-1.jpg]]></wp:attachment_url>
209
+ <wp:postmeta>
210
+ <wp:meta_key><![CDATA[_wp_attached_file]]></wp:meta_key>
211
+ <wp:meta_value><![CDATA[2021/03/bench-accounting-C3V88BOoRoM-unsplash-1-scaled-1.jpg]]></wp:meta_value>
212
+ </wp:postmeta>
213
+ <wp:postmeta>
214
+ <wp:meta_key><![CDATA[_wp_attachment_metadata]]></wp:meta_key>
215
+ <wp:meta_value><![CDATA[a:5:{s:5:"width";i:2560;s:6:"height";i:1710;s:4:"file";s:60:"2021/03/bench-accounting-C3V88BOoRoM-unsplash-1-scaled-1.jpg";s:5:"sizes";a:6:{s:6:"medium";a:4:{s:4:"file";s:60:"bench-accounting-C3V88BOoRoM-unsplash-1-scaled-1-300x200.jpg";s:5:"width";i:300;s:6:"height";i:200;s:9:"mime-type";s:10:"image/jpeg";}s:5:"large";a:4:{s:4:"file";s:61:"bench-accounting-C3V88BOoRoM-unsplash-1-scaled-1-1024x684.jpg";s:5:"width";i:1024;s:6:"height";i:684;s:9:"mime-type";s:10:"image/jpeg";}s:9:"thumbnail";a:4:{s:4:"file";s:60:"bench-accounting-C3V88BOoRoM-unsplash-1-scaled-1-150x150.jpg";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:10:"image/jpeg";}s:12:"medium_large";a:4:{s:4:"file";s:60:"bench-accounting-C3V88BOoRoM-unsplash-1-scaled-1-768x513.jpg";s:5:"width";i:768;s:6:"height";i:513;s:9:"mime-type";s:10:"image/jpeg";}s:9:"1536x1536";a:4:{s:4:"file";s:62:"bench-accounting-C3V88BOoRoM-unsplash-1-scaled-1-1536x1026.jpg";s:5:"width";i:1536;s:6:"height";i:1026;s:9:"mime-type";s:10:"image/jpeg";}s:9:"2048x2048";a:4:{s:4:"file";s:62:"bench-accounting-C3V88BOoRoM-unsplash-1-scaled-1-2048x1368.jpg";s:5:"width";i:2048;s:6:"height";i:1368;s:9:"mime-type";s:10:"image/jpeg";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}]]></wp:meta_value>
216
+ </wp:postmeta>
217
+ </item>
218
+
219
+ <item>
220
+ <title><![CDATA[alexandra-tran-vfLzpWbuweE-unsplash-1]]></title>
221
+ <link>https://ocdi.com/shop/alexandra-tran-vflzpwbuwee-unsplash-1/</link>
222
+ <pubDate>Fri, 05 Mar 2021 18:50:58 +0000</pubDate>
223
+ <guid isPermaLink="false">https://ocdi.com/wp-content/uploads/2021/03/alexandra-tran-vfLzpWbuweE-unsplash-1.jpg</guid>
224
+ <description></description>
225
+ <content:encoded><![CDATA[]]></content:encoded>
226
+ <excerpt:encoded><![CDATA[PRODUCTS]]></excerpt:encoded>
227
+ <wp:post_id>2347</wp:post_id>
228
+ <wp:post_date><![CDATA[2021-03-05 13:50:58]]></wp:post_date>
229
+ <wp:post_date_gmt><![CDATA[2021-03-05 18:50:58]]></wp:post_date_gmt>
230
+ <wp:post_modified><![CDATA[2021-03-29 14:53:47]]></wp:post_modified>
231
+ <wp:post_modified_gmt><![CDATA[2021-03-29 14:53:47]]></wp:post_modified_gmt>
232
+ <wp:comment_status><![CDATA[open]]></wp:comment_status>
233
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
234
+ <wp:post_name><![CDATA[alexandra-tran-vflzpwbuwee-unsplash-1]]></wp:post_name>
235
+ <wp:status><![CDATA[inherit]]></wp:status>
236
+ <wp:post_parent>2330</wp:post_parent>
237
+ <wp:menu_order>0</wp:menu_order>
238
+ <wp:post_type><![CDATA[attachment]]></wp:post_type>
239
+ <wp:post_password><![CDATA[]]></wp:post_password>
240
+ <wp:is_sticky>0</wp:is_sticky>
241
+ <wp:attachment_url><![CDATA[https://ocdi.com/wp-content/uploads/2021/03/alexandra-tran-vfLzpWbuweE-unsplash-1-scaled-1.jpg]]></wp:attachment_url>
242
+ <wp:postmeta>
243
+ <wp:meta_key><![CDATA[_wp_attached_file]]></wp:meta_key>
244
+ <wp:meta_value><![CDATA[2021/03/alexandra-tran-vfLzpWbuweE-unsplash-1-scaled-1.jpg]]></wp:meta_value>
245
+ </wp:postmeta>
246
+ <wp:postmeta>
247
+ <wp:meta_key><![CDATA[_wp_attachment_metadata]]></wp:meta_key>
248
+ <wp:meta_value><![CDATA[a:5:{s:5:"width";i:2560;s:6:"height";i:1707;s:4:"file";s:58:"2021/03/alexandra-tran-vfLzpWbuweE-unsplash-1-scaled-1.jpg";s:5:"sizes";a:6:{s:6:"medium";a:4:{s:4:"file";s:58:"alexandra-tran-vfLzpWbuweE-unsplash-1-scaled-1-300x200.jpg";s:5:"width";i:300;s:6:"height";i:200;s:9:"mime-type";s:10:"image/jpeg";}s:5:"large";a:4:{s:4:"file";s:59:"alexandra-tran-vfLzpWbuweE-unsplash-1-scaled-1-1024x683.jpg";s:5:"width";i:1024;s:6:"height";i:683;s:9:"mime-type";s:10:"image/jpeg";}s:9:"thumbnail";a:4:{s:4:"file";s:58:"alexandra-tran-vfLzpWbuweE-unsplash-1-scaled-1-150x150.jpg";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:10:"image/jpeg";}s:12:"medium_large";a:4:{s:4:"file";s:58:"alexandra-tran-vfLzpWbuweE-unsplash-1-scaled-1-768x512.jpg";s:5:"width";i:768;s:6:"height";i:512;s:9:"mime-type";s:10:"image/jpeg";}s:9:"1536x1536";a:4:{s:4:"file";s:60:"alexandra-tran-vfLzpWbuweE-unsplash-1-scaled-1-1536x1024.jpg";s:5:"width";i:1536;s:6:"height";i:1024;s:9:"mime-type";s:10:"image/jpeg";}s:9:"2048x2048";a:4:{s:4:"file";s:60:"alexandra-tran-vfLzpWbuweE-unsplash-1-scaled-1-2048x1366.jpg";s:5:"width";i:2048;s:6:"height";i:1366;s:9:"mime-type";s:10:"image/jpeg";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}]]></wp:meta_value>
249
+ </wp:postmeta>
250
+ </item>
251
+
252
+ <item>
253
+ <title><![CDATA[spencer-DXobXpIa9_4-unsplash-2-1]]></title>
254
+ <link>https://ocdi.com/shop/spencer-dxobxpia9_4-unsplash-2-1/</link>
255
+ <pubDate>Fri, 05 Mar 2021 18:49:26 +0000</pubDate>
256
+ <guid isPermaLink="false">https://ocdi.com/wp-content/uploads/2021/03/spencer-DXobXpIa9_4-unsplash-2-1.jpg</guid>
257
+ <description></description>
258
+ <content:encoded><![CDATA[]]></content:encoded>
259
+ <excerpt:encoded><![CDATA[COURSES]]></excerpt:encoded>
260
+ <wp:post_id>2346</wp:post_id>
261
+ <wp:post_date><![CDATA[2021-03-05 13:49:26]]></wp:post_date>
262
+ <wp:post_date_gmt><![CDATA[2021-03-05 18:49:26]]></wp:post_date_gmt>
263
+ <wp:post_modified><![CDATA[2021-03-29 14:53:52]]></wp:post_modified>
264
+ <wp:post_modified_gmt><![CDATA[2021-03-29 14:53:52]]></wp:post_modified_gmt>
265
+ <wp:comment_status><![CDATA[open]]></wp:comment_status>
266
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
267
+ <wp:post_name><![CDATA[spencer-dxobxpia9_4-unsplash-2-1]]></wp:post_name>
268
+ <wp:status><![CDATA[inherit]]></wp:status>
269
+ <wp:post_parent>2330</wp:post_parent>
270
+ <wp:menu_order>0</wp:menu_order>
271
+ <wp:post_type><![CDATA[attachment]]></wp:post_type>
272
+ <wp:post_password><![CDATA[]]></wp:post_password>
273
+ <wp:is_sticky>0</wp:is_sticky>
274
+ <wp:attachment_url><![CDATA[https://ocdi.com/wp-content/uploads/2021/03/spencer-DXobXpIa9_4-unsplash-2-1-scaled-1.jpg]]></wp:attachment_url>
275
+ <wp:postmeta>
276
+ <wp:meta_key><![CDATA[_wp_attached_file]]></wp:meta_key>
277
+ <wp:meta_value><![CDATA[2021/03/spencer-DXobXpIa9_4-unsplash-2-1-scaled-1.jpg]]></wp:meta_value>
278
+ </wp:postmeta>
279
+ <wp:postmeta>
280
+ <wp:meta_key><![CDATA[_wp_attachment_metadata]]></wp:meta_key>
281
+ <wp:meta_value><![CDATA[a:5:{s:5:"width";i:2560;s:6:"height";i:1920;s:4:"file";s:53:"2021/03/spencer-DXobXpIa9_4-unsplash-2-1-scaled-1.jpg";s:5:"sizes";a:6:{s:6:"medium";a:4:{s:4:"file";s:53:"spencer-DXobXpIa9_4-unsplash-2-1-scaled-1-300x225.jpg";s:5:"width";i:300;s:6:"height";i:225;s:9:"mime-type";s:10:"image/jpeg";}s:5:"large";a:4:{s:4:"file";s:54:"spencer-DXobXpIa9_4-unsplash-2-1-scaled-1-1024x768.jpg";s:5:"width";i:1024;s:6:"height";i:768;s:9:"mime-type";s:10:"image/jpeg";}s:9:"thumbnail";a:4:{s:4:"file";s:53:"spencer-DXobXpIa9_4-unsplash-2-1-scaled-1-150x150.jpg";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:10:"image/jpeg";}s:12:"medium_large";a:4:{s:4:"file";s:53:"spencer-DXobXpIa9_4-unsplash-2-1-scaled-1-768x576.jpg";s:5:"width";i:768;s:6:"height";i:576;s:9:"mime-type";s:10:"image/jpeg";}s:9:"1536x1536";a:4:{s:4:"file";s:55:"spencer-DXobXpIa9_4-unsplash-2-1-scaled-1-1536x1152.jpg";s:5:"width";i:1536;s:6:"height";i:1152;s:9:"mime-type";s:10:"image/jpeg";}s:9:"2048x2048";a:4:{s:4:"file";s:55:"spencer-DXobXpIa9_4-unsplash-2-1-scaled-1-2048x1536.jpg";s:5:"width";i:2048;s:6:"height";i:1536;s:9:"mime-type";s:10:"image/jpeg";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}]]></wp:meta_value>
282
+ </wp:postmeta>
283
+ </item>
284
+
285
+ <item>
286
+ <title><![CDATA[alejandro-escamilla-BbQLHCpVUqA-unsplash-2]]></title>
287
+ <link>https://ocdi.com/shop/alejandro-escamilla-bbqlhcpvuqa-unsplash-2/</link>
288
+ <pubDate>Fri, 05 Mar 2021 18:48:12 +0000</pubDate>
289
+ <guid isPermaLink="false">https://ocdi.com/wp-content/uploads/2021/03/alejandro-escamilla-BbQLHCpVUqA-unsplash-2.jpg</guid>
290
+ <description></description>
291
+ <content:encoded><![CDATA[]]></content:encoded>
292
+ <excerpt:encoded><![CDATA[CONSULTING]]></excerpt:encoded>
293
+ <wp:post_id>2344</wp:post_id>
294
+ <wp:post_date><![CDATA[2021-03-05 13:48:12]]></wp:post_date>
295
+ <wp:post_date_gmt><![CDATA[2021-03-05 18:48:12]]></wp:post_date_gmt>
296
+ <wp:post_modified><![CDATA[2021-03-29 14:53:57]]></wp:post_modified>
297
+ <wp:post_modified_gmt><![CDATA[2021-03-29 14:53:57]]></wp:post_modified_gmt>
298
+ <wp:comment_status><![CDATA[open]]></wp:comment_status>
299
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
300
+ <wp:post_name><![CDATA[alejandro-escamilla-bbqlhcpvuqa-unsplash-2]]></wp:post_name>
301
+ <wp:status><![CDATA[inherit]]></wp:status>
302
+ <wp:post_parent>2330</wp:post_parent>
303
+ <wp:menu_order>0</wp:menu_order>
304
+ <wp:post_type><![CDATA[attachment]]></wp:post_type>
305
+ <wp:post_password><![CDATA[]]></wp:post_password>
306
+ <wp:is_sticky>0</wp:is_sticky>
307
+ <wp:attachment_url><![CDATA[https://ocdi.com/wp-content/uploads/2021/03/alejandro-escamilla-BbQLHCpVUqA-unsplash-2-scaled-1.jpg]]></wp:attachment_url>
308
+ <wp:postmeta>
309
+ <wp:meta_key><![CDATA[_wp_attached_file]]></wp:meta_key>
310
+ <wp:meta_value><![CDATA[2021/03/alejandro-escamilla-BbQLHCpVUqA-unsplash-2-scaled-1.jpg]]></wp:meta_value>
311
+ </wp:postmeta>
312
+ <wp:postmeta>
313
+ <wp:meta_key><![CDATA[_wp_attachment_metadata]]></wp:meta_key>
314
+ <wp:meta_value><![CDATA[a:5:{s:5:"width";i:2560;s:6:"height";i:1715;s:4:"file";s:63:"2021/03/alejandro-escamilla-BbQLHCpVUqA-unsplash-2-scaled-1.jpg";s:5:"sizes";a:6:{s:6:"medium";a:4:{s:4:"file";s:63:"alejandro-escamilla-BbQLHCpVUqA-unsplash-2-scaled-1-300x201.jpg";s:5:"width";i:300;s:6:"height";i:201;s:9:"mime-type";s:10:"image/jpeg";}s:5:"large";a:4:{s:4:"file";s:64:"alejandro-escamilla-BbQLHCpVUqA-unsplash-2-scaled-1-1024x686.jpg";s:5:"width";i:1024;s:6:"height";i:686;s:9:"mime-type";s:10:"image/jpeg";}s:9:"thumbnail";a:4:{s:4:"file";s:63:"alejandro-escamilla-BbQLHCpVUqA-unsplash-2-scaled-1-150x150.jpg";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:10:"image/jpeg";}s:12:"medium_large";a:4:{s:4:"file";s:63:"alejandro-escamilla-BbQLHCpVUqA-unsplash-2-scaled-1-768x515.jpg";s:5:"width";i:768;s:6:"height";i:515;s:9:"mime-type";s:10:"image/jpeg";}s:9:"1536x1536";a:4:{s:4:"file";s:65:"alejandro-escamilla-BbQLHCpVUqA-unsplash-2-scaled-1-1536x1029.jpg";s:5:"width";i:1536;s:6:"height";i:1029;s:9:"mime-type";s:10:"image/jpeg";}s:9:"2048x2048";a:4:{s:4:"file";s:65:"alejandro-escamilla-BbQLHCpVUqA-unsplash-2-scaled-1-2048x1372.jpg";s:5:"width";i:2048;s:6:"height";i:1372;s:9:"mime-type";s:10:"image/jpeg";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}]]></wp:meta_value>
315
+ </wp:postmeta>
316
+ </item>
317
+
318
+ <item>
319
+ <title><![CDATA[bench-accounting-C3V88BOoRoM-unsplash-1]]></title>
320
+ <link>https://ocdi.com/shop/bench-accounting-c3v88boorom-unsplash-1/</link>
321
+ <pubDate>Fri, 05 Mar 2021 19:00:32 +0000</pubDate>
322
+ <guid isPermaLink="false">https://ocdi.com/wp-content/uploads/2021/03/bench-accounting-C3V88BOoRoM-unsplash-1.jpg</guid>
323
+ <description></description>
324
+ <content:encoded><![CDATA[]]></content:encoded>
325
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
326
+ <wp:post_id>2352</wp:post_id>
327
+ <wp:post_date><![CDATA[2021-03-05 14:00:32]]></wp:post_date>
328
+ <wp:post_date_gmt><![CDATA[2021-03-05 19:00:32]]></wp:post_date_gmt>
329
+ <wp:post_modified><![CDATA[2021-03-22 15:36:58]]></wp:post_modified>
330
+ <wp:post_modified_gmt><![CDATA[2021-03-22 15:36:58]]></wp:post_modified_gmt>
331
+ <wp:comment_status><![CDATA[open]]></wp:comment_status>
332
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
333
+ <wp:post_name><![CDATA[bench-accounting-c3v88boorom-unsplash-1]]></wp:post_name>
334
+ <wp:status><![CDATA[inherit]]></wp:status>
335
+ <wp:post_parent>2330</wp:post_parent>
336
+ <wp:menu_order>0</wp:menu_order>
337
+ <wp:post_type><![CDATA[attachment]]></wp:post_type>
338
+ <wp:post_password><![CDATA[]]></wp:post_password>
339
+ <wp:is_sticky>0</wp:is_sticky>
340
+ <wp:attachment_url><![CDATA[https://ocdi.com/wp-content/uploads/2021/03/bench-accounting-C3V88BOoRoM-unsplash-1-scaled-1.jpg]]></wp:attachment_url>
341
+ <wp:postmeta>
342
+ <wp:meta_key><![CDATA[_wp_attached_file]]></wp:meta_key>
343
+ <wp:meta_value><![CDATA[2021/03/bench-accounting-C3V88BOoRoM-unsplash-1-scaled-1.jpg]]></wp:meta_value>
344
+ </wp:postmeta>
345
+ <wp:postmeta>
346
+ <wp:meta_key><![CDATA[_wp_attachment_metadata]]></wp:meta_key>
347
+ <wp:meta_value><![CDATA[a:5:{s:5:"width";i:2560;s:6:"height";i:1710;s:4:"file";s:60:"2021/03/bench-accounting-C3V88BOoRoM-unsplash-1-scaled-1.jpg";s:5:"sizes";a:6:{s:6:"medium";a:4:{s:4:"file";s:60:"bench-accounting-C3V88BOoRoM-unsplash-1-scaled-1-300x200.jpg";s:5:"width";i:300;s:6:"height";i:200;s:9:"mime-type";s:10:"image/jpeg";}s:5:"large";a:4:{s:4:"file";s:61:"bench-accounting-C3V88BOoRoM-unsplash-1-scaled-1-1024x684.jpg";s:5:"width";i:1024;s:6:"height";i:684;s:9:"mime-type";s:10:"image/jpeg";}s:9:"thumbnail";a:4:{s:4:"file";s:60:"bench-accounting-C3V88BOoRoM-unsplash-1-scaled-1-150x150.jpg";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:10:"image/jpeg";}s:12:"medium_large";a:4:{s:4:"file";s:60:"bench-accounting-C3V88BOoRoM-unsplash-1-scaled-1-768x513.jpg";s:5:"width";i:768;s:6:"height";i:513;s:9:"mime-type";s:10:"image/jpeg";}s:9:"1536x1536";a:4:{s:4:"file";s:62:"bench-accounting-C3V88BOoRoM-unsplash-1-scaled-1-1536x1026.jpg";s:5:"width";i:1536;s:6:"height";i:1026;s:9:"mime-type";s:10:"image/jpeg";}s:9:"2048x2048";a:4:{s:4:"file";s:62:"bench-accounting-C3V88BOoRoM-unsplash-1-scaled-1-2048x1368.jpg";s:5:"width";i:2048;s:6:"height";i:1368;s:9:"mime-type";s:10:"image/jpeg";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}]]></wp:meta_value>
348
+ </wp:postmeta>
349
+ </item>
350
+
351
+ <item>
352
+ <title><![CDATA[aryo-lahap-ZVc4Zg4TY8s-unsplash-1]]></title>
353
+ <link>https://ocdi.com/shop/aryo-lahap-zvc4zg4ty8s-unsplash-1/</link>
354
+ <pubDate>Fri, 05 Mar 2021 19:15:55 +0000</pubDate>
355
+ <guid isPermaLink="false">https://ocdi.com/wp-content/uploads/2021/03/aryo-lahap-ZVc4Zg4TY8s-unsplash-1.jpg</guid>
356
+ <description></description>
357
+ <content:encoded><![CDATA[]]></content:encoded>
358
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
359
+ <wp:post_id>2354</wp:post_id>
360
+ <wp:post_date><![CDATA[2021-03-05 14:15:55]]></wp:post_date>
361
+ <wp:post_date_gmt><![CDATA[2021-03-05 19:15:55]]></wp:post_date_gmt>
362
+ <wp:post_modified><![CDATA[2021-03-22 15:36:58]]></wp:post_modified>
363
+ <wp:post_modified_gmt><![CDATA[2021-03-22 15:36:58]]></wp:post_modified_gmt>
364
+ <wp:comment_status><![CDATA[open]]></wp:comment_status>
365
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
366
+ <wp:post_name><![CDATA[aryo-lahap-zvc4zg4ty8s-unsplash-1]]></wp:post_name>
367
+ <wp:status><![CDATA[inherit]]></wp:status>
368
+ <wp:post_parent>2330</wp:post_parent>
369
+ <wp:menu_order>0</wp:menu_order>
370
+ <wp:post_type><![CDATA[attachment]]></wp:post_type>
371
+ <wp:post_password><![CDATA[]]></wp:post_password>
372
+ <wp:is_sticky>0</wp:is_sticky>
373
+ <wp:attachment_url><![CDATA[https://ocdi.com/wp-content/uploads/2021/03/aryo-lahap-ZVc4Zg4TY8s-unsplash-1.jpg]]></wp:attachment_url>
374
+ <wp:postmeta>
375
+ <wp:meta_key><![CDATA[_wp_attached_file]]></wp:meta_key>
376
+ <wp:meta_value><![CDATA[2021/03/aryo-lahap-ZVc4Zg4TY8s-unsplash-1.jpg]]></wp:meta_value>
377
+ </wp:postmeta>
378
+ <wp:postmeta>
379
+ <wp:meta_key><![CDATA[_wp_attachment_metadata]]></wp:meta_key>
380
+ <wp:meta_value><![CDATA[a:5:{s:5:"width";i:1798;s:6:"height";i:1798;s:4:"file";s:45:"2021/03/aryo-lahap-ZVc4Zg4TY8s-unsplash-1.jpg";s:5:"sizes";a:5:{s:6:"medium";a:4:{s:4:"file";s:45:"aryo-lahap-ZVc4Zg4TY8s-unsplash-1-300x300.jpg";s:5:"width";i:300;s:6:"height";i:300;s:9:"mime-type";s:10:"image/jpeg";}s:5:"large";a:4:{s:4:"file";s:47:"aryo-lahap-ZVc4Zg4TY8s-unsplash-1-1024x1024.jpg";s:5:"width";i:1024;s:6:"height";i:1024;s:9:"mime-type";s:10:"image/jpeg";}s:9:"thumbnail";a:4:{s:4:"file";s:45:"aryo-lahap-ZVc4Zg4TY8s-unsplash-1-150x150.jpg";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:10:"image/jpeg";}s:12:"medium_large";a:4:{s:4:"file";s:45:"aryo-lahap-ZVc4Zg4TY8s-unsplash-1-768x768.jpg";s:5:"width";i:768;s:6:"height";i:768;s:9:"mime-type";s:10:"image/jpeg";}s:9:"1536x1536";a:4:{s:4:"file";s:47:"aryo-lahap-ZVc4Zg4TY8s-unsplash-1-1536x1536.jpg";s:5:"width";i:1536;s:6:"height";i:1536;s:9:"mime-type";s:10:"image/jpeg";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"1";s:8:"keywords";a:0:{}}}]]></wp:meta_value>
381
+ </wp:postmeta>
382
+ </item>
383
+
384
+ <item>
385
+ <title><![CDATA[the-creative-exchange-UhpAf0ySwuk-unsplash-1-1]]></title>
386
+ <link>https://ocdi.com/shop/the-creative-exchange-uhpaf0yswuk-unsplash-1-1/</link>
387
+ <pubDate>Fri, 05 Mar 2021 19:17:42 +0000</pubDate>
388
+ <guid isPermaLink="false">https://ocdi.com/wp-content/uploads/2021/03/the-creative-exchange-UhpAf0ySwuk-unsplash-1-1.jpg</guid>
389
+ <description></description>
390
+ <content:encoded><![CDATA[]]></content:encoded>
391
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
392
+ <wp:post_id>2355</wp:post_id>
393
+ <wp:post_date><![CDATA[2021-03-05 14:17:42]]></wp:post_date>
394
+ <wp:post_date_gmt><![CDATA[2021-03-05 19:17:42]]></wp:post_date_gmt>
395
+ <wp:post_modified><![CDATA[2021-03-22 15:36:58]]></wp:post_modified>
396
+ <wp:post_modified_gmt><![CDATA[2021-03-22 15:36:58]]></wp:post_modified_gmt>
397
+ <wp:comment_status><![CDATA[open]]></wp:comment_status>
398
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
399
+ <wp:post_name><![CDATA[the-creative-exchange-uhpaf0yswuk-unsplash-1-1]]></wp:post_name>
400
+ <wp:status><![CDATA[inherit]]></wp:status>
401
+ <wp:post_parent>2330</wp:post_parent>
402
+ <wp:menu_order>0</wp:menu_order>
403
+ <wp:post_type><![CDATA[attachment]]></wp:post_type>
404
+ <wp:post_password><![CDATA[]]></wp:post_password>
405
+ <wp:is_sticky>0</wp:is_sticky>
406
+ <wp:attachment_url><![CDATA[https://ocdi.com/wp-content/uploads/2021/03/the-creative-exchange-UhpAf0ySwuk-unsplash-1-1-scaled-1.jpg]]></wp:attachment_url>
407
+ <wp:postmeta>
408
+ <wp:meta_key><![CDATA[_wp_attached_file]]></wp:meta_key>
409
+ <wp:meta_value><![CDATA[2021/03/the-creative-exchange-UhpAf0ySwuk-unsplash-1-1-scaled-1.jpg]]></wp:meta_value>
410
+ </wp:postmeta>
411
+ <wp:postmeta>
412
+ <wp:meta_key><![CDATA[_wp_attachment_metadata]]></wp:meta_key>
413
+ <wp:meta_value><![CDATA[a:5:{s:5:"width";i:2560;s:6:"height";i:2560;s:4:"file";s:67:"2021/03/the-creative-exchange-UhpAf0ySwuk-unsplash-1-1-scaled-1.jpg";s:5:"sizes";a:6:{s:6:"medium";a:4:{s:4:"file";s:67:"the-creative-exchange-UhpAf0ySwuk-unsplash-1-1-scaled-1-300x300.jpg";s:5:"width";i:300;s:6:"height";i:300;s:9:"mime-type";s:10:"image/jpeg";}s:5:"large";a:4:{s:4:"file";s:69:"the-creative-exchange-UhpAf0ySwuk-unsplash-1-1-scaled-1-1024x1024.jpg";s:5:"width";i:1024;s:6:"height";i:1024;s:9:"mime-type";s:10:"image/jpeg";}s:9:"thumbnail";a:4:{s:4:"file";s:67:"the-creative-exchange-UhpAf0ySwuk-unsplash-1-1-scaled-1-150x150.jpg";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:10:"image/jpeg";}s:12:"medium_large";a:4:{s:4:"file";s:67:"the-creative-exchange-UhpAf0ySwuk-unsplash-1-1-scaled-1-768x768.jpg";s:5:"width";i:768;s:6:"height";i:768;s:9:"mime-type";s:10:"image/jpeg";}s:9:"1536x1536";a:4:{s:4:"file";s:69:"the-creative-exchange-UhpAf0ySwuk-unsplash-1-1-scaled-1-1536x1536.jpg";s:5:"width";i:1536;s:6:"height";i:1536;s:9:"mime-type";s:10:"image/jpeg";}s:9:"2048x2048";a:4:{s:4:"file";s:69:"the-creative-exchange-UhpAf0ySwuk-unsplash-1-1-scaled-1-2048x2048.jpg";s:5:"width";i:2048;s:6:"height";i:2048;s:9:"mime-type";s:10:"image/jpeg";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}]]></wp:meta_value>
414
+ </wp:postmeta>
415
+ </item>
416
+ <item>
417
+ <title><![CDATA[meritt-thomas-aoQ4DYZLE_E-unsplash-1-1]]></title>
418
+ <link>https://ocdi.com/shop/meritt-thomas-aoq4dyzle_e-unsplash-1-1/</link>
419
+ <pubDate>Fri, 05 Mar 2021 19:17:54 +0000</pubDate>
420
+ <guid isPermaLink="false">https://ocdi.com/wp-content/uploads/2021/03/meritt-thomas-aoQ4DYZLE_E-unsplash-1-1.jpg</guid>
421
+ <description></description>
422
+ <content:encoded><![CDATA[]]></content:encoded>
423
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
424
+ <wp:post_id>2356</wp:post_id>
425
+ <wp:post_date><![CDATA[2021-03-05 14:17:54]]></wp:post_date>
426
+ <wp:post_date_gmt><![CDATA[2021-03-05 19:17:54]]></wp:post_date_gmt>
427
+ <wp:post_modified><![CDATA[2021-03-22 15:36:58]]></wp:post_modified>
428
+ <wp:post_modified_gmt><![CDATA[2021-03-22 15:36:58]]></wp:post_modified_gmt>
429
+ <wp:comment_status><![CDATA[open]]></wp:comment_status>
430
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
431
+ <wp:post_name><![CDATA[meritt-thomas-aoq4dyzle_e-unsplash-1-1]]></wp:post_name>
432
+ <wp:status><![CDATA[inherit]]></wp:status>
433
+ <wp:post_parent>2330</wp:post_parent>
434
+ <wp:menu_order>0</wp:menu_order>
435
+ <wp:post_type><![CDATA[attachment]]></wp:post_type>
436
+ <wp:post_password><![CDATA[]]></wp:post_password>
437
+ <wp:is_sticky>0</wp:is_sticky>
438
+ <wp:attachment_url><![CDATA[https://ocdi.com/wp-content/uploads/2021/03/meritt-thomas-aoQ4DYZLE_E-unsplash-1-1-scaled-1.jpg]]></wp:attachment_url>
439
+ <wp:postmeta>
440
+ <wp:meta_key><![CDATA[_wp_attached_file]]></wp:meta_key>
441
+ <wp:meta_value><![CDATA[2021/03/meritt-thomas-aoQ4DYZLE_E-unsplash-1-1-scaled-1.jpg]]></wp:meta_value>
442
+ </wp:postmeta>
443
+ <wp:postmeta>
444
+ <wp:meta_key><![CDATA[_wp_attachment_metadata]]></wp:meta_key>
445
+ <wp:meta_value><![CDATA[a:5:{s:5:"width";i:2560;s:6:"height";i:2560;s:4:"file";s:59:"2021/03/meritt-thomas-aoQ4DYZLE_E-unsplash-1-1-scaled-1.jpg";s:5:"sizes";a:6:{s:6:"medium";a:4:{s:4:"file";s:59:"meritt-thomas-aoQ4DYZLE_E-unsplash-1-1-scaled-1-300x300.jpg";s:5:"width";i:300;s:6:"height";i:300;s:9:"mime-type";s:10:"image/jpeg";}s:5:"large";a:4:{s:4:"file";s:61:"meritt-thomas-aoQ4DYZLE_E-unsplash-1-1-scaled-1-1024x1024.jpg";s:5:"width";i:1024;s:6:"height";i:1024;s:9:"mime-type";s:10:"image/jpeg";}s:9:"thumbnail";a:4:{s:4:"file";s:59:"meritt-thomas-aoQ4DYZLE_E-unsplash-1-1-scaled-1-150x150.jpg";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:10:"image/jpeg";}s:12:"medium_large";a:4:{s:4:"file";s:59:"meritt-thomas-aoQ4DYZLE_E-unsplash-1-1-scaled-1-768x768.jpg";s:5:"width";i:768;s:6:"height";i:768;s:9:"mime-type";s:10:"image/jpeg";}s:9:"1536x1536";a:4:{s:4:"file";s:61:"meritt-thomas-aoQ4DYZLE_E-unsplash-1-1-scaled-1-1536x1536.jpg";s:5:"width";i:1536;s:6:"height";i:1536;s:9:"mime-type";s:10:"image/jpeg";}s:9:"2048x2048";a:4:{s:4:"file";s:61:"meritt-thomas-aoQ4DYZLE_E-unsplash-1-1-scaled-1-2048x2048.jpg";s:5:"width";i:2048;s:6:"height";i:2048;s:9:"mime-type";s:10:"image/jpeg";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}]]></wp:meta_value>
446
+ </wp:postmeta>
447
+ </item>
448
+
449
+ </channel>
450
+ </rss>
assets/demo-content/testimonials-page.xml ADDED
@@ -0,0 +1,229 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <!-- generator="WordPress/5.7" created="2021-03-25 06:41" -->
3
+ <rss version="2.0"
4
+ xmlns:excerpt="http://wordpress.org/export/1.2/excerpt/"
5
+ xmlns:content="http://purl.org/rss/1.0/modules/content/"
6
+ xmlns:wfw="http://wellformedweb.org/CommentAPI/"
7
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
8
+ xmlns:wp="http://wordpress.org/export/1.2/"
9
+ >
10
+
11
+ <channel>
12
+ <title>ocdi</title>
13
+ <link>https://ocdi.com</link>
14
+ <description>Just another WordPress site</description>
15
+ <pubDate>Thu, 25 Mar 2021 06:41:21 +0000</pubDate>
16
+ <language>en-US</language>
17
+ <wp:wxr_version>1.2</wp:wxr_version>
18
+ <wp:base_site_url>https://ocdi.com</wp:base_site_url>
19
+ <wp:base_blog_url>https://ocdi.com</wp:base_blog_url>
20
+
21
+ <generator>https://wordpress.org/?v=5.7</generator>
22
+
23
+ <item>
24
+ <title><![CDATA[Testimonials]]></title>
25
+ <link>https://ocdi.com/testimonials/</link>
26
+ <pubDate>Fri, 26 Feb 2021 11:05:31 +0000</pubDate>
27
+ <description></description>
28
+ <content:encoded><![CDATA[<!-- wp:columns -->
29
+ <div class="wp-block-columns"><!-- wp:column -->
30
+ <div class="wp-block-column"><!-- wp:quote {"className":"is-style-large"} -->
31
+ <blockquote class="wp-block-quote is-style-large"><p>Acme Marketing provided the tools and strategies we needed to build PPC campaigns with great ROI.</p><cite>John Doe, ABC Corp</cite></blockquote>
32
+ <!-- /wp:quote --></div>
33
+ <!-- /wp:column -->
34
+
35
+ <!-- wp:column {"width":"33%"} -->
36
+ <div class="wp-block-column" style="flex-basis:33%"><!-- wp:image {"id":2120,"width":200,"height":200,"sizeSlug":"large","linkDestination":"none","className":"is-style-rounded"} -->
37
+ <figure class="wp-block-image size-large is-resized is-style-rounded"><img src="https://ocdi.com/wp-content/uploads/2021/02/demo-man-3.png" alt="" class="wp-image-2120" width="200" height="200"/></figure>
38
+ <!-- /wp:image --></div>
39
+ <!-- /wp:column --></div>
40
+ <!-- /wp:columns -->
41
+
42
+ <!-- wp:columns -->
43
+ <div class="wp-block-columns"><!-- wp:column {"width":"33%"} -->
44
+ <div class="wp-block-column" style="flex-basis:33%"><!-- wp:image {"id":2126,"sizeSlug":"large","linkDestination":"none","className":"is-style-rounded"} -->
45
+ <figure class="wp-block-image size-large is-style-rounded"><img src="https://ocdi.com/wp-content/uploads/2021/02/demo-woman-3.png" alt="" class="wp-image-2126"/></figure>
46
+ <!-- /wp:image --></div>
47
+ <!-- /wp:column -->
48
+
49
+ <!-- wp:column -->
50
+ <div class="wp-block-column"><!-- wp:quote -->
51
+ <blockquote class="wp-block-quote"><p>I wouldn't hesitate to recommend Acme for marketing support. Their team of experts have assisted us with everything from keyword research to getting our social media strategy on the right track.</p><cite>Jane Doe, XYZ Interiors</cite></blockquote>
52
+ <!-- /wp:quote --></div>
53
+ <!-- /wp:column --></div>
54
+ <!-- /wp:columns -->
55
+
56
+ <!-- wp:columns -->
57
+ <div class="wp-block-columns"><!-- wp:column -->
58
+ <div class="wp-block-column"><!-- wp:quote {"className":"is-style-large"} -->
59
+ <blockquote class="wp-block-quote is-style-large"><p>Our team is free to work on the tasks they do best.</p><cite>Vasu Sameer, AK Consulting</cite></blockquote>
60
+ <!-- /wp:quote --></div>
61
+ <!-- /wp:column -->
62
+
63
+ <!-- wp:column {"width":"33%"} -->
64
+ <div class="wp-block-column" style="flex-basis:33%"><!-- wp:image {"id":2127,"sizeSlug":"large","linkDestination":"none","className":"is-style-rounded"} -->
65
+ <figure class="wp-block-image size-large is-style-rounded"><img src="https://ocdi.com/wp-content/uploads/2021/02/demo-man-4.png" alt="" class="wp-image-2127"/></figure>
66
+ <!-- /wp:image --></div>
67
+ <!-- /wp:column --></div>
68
+ <!-- /wp:columns -->
69
+
70
+ <!-- wp:columns -->
71
+ <div class="wp-block-columns"><!-- wp:column {"width":"33%"} -->
72
+ <div class="wp-block-column" style="flex-basis:33%"><!-- wp:image {"id":2128,"sizeSlug":"large","linkDestination":"none","className":"is-style-rounded"} -->
73
+ <figure class="wp-block-image size-large is-style-rounded"><img src="https://ocdi.com/wp-content/uploads/2021/02/demo-woman-2.png" alt="" class="wp-image-2128"/></figure>
74
+ <!-- /wp:image --></div>
75
+ <!-- /wp:column -->
76
+
77
+ <!-- wp:column -->
78
+ <div class="wp-block-column"><!-- wp:quote -->
79
+ <blockquote class="wp-block-quote"><p>From day one, the team at Acme become partners and friends. They immediately got to know the business are driven to help small businesses succeed.</p><cite>Amanda Smith, Awesome Software</cite></blockquote>
80
+ <!-- /wp:quote --></div>
81
+ <!-- /wp:column --></div>
82
+ <!-- /wp:columns -->]]></content:encoded>
83
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
84
+ <wp:post_date><![CDATA[2021-02-26 06:05:31]]></wp:post_date>
85
+ <wp:post_date_gmt><![CDATA[2021-02-26 11:05:31]]></wp:post_date_gmt>
86
+ <wp:post_modified><![CDATA[2021-03-23 08:56:22]]></wp:post_modified>
87
+ <wp:post_modified_gmt><![CDATA[2021-03-23 08:56:22]]></wp:post_modified_gmt>
88
+ <wp:comment_status><![CDATA[closed]]></wp:comment_status>
89
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
90
+ <wp:post_name><![CDATA[testimonials]]></wp:post_name>
91
+ <wp:status><![CDATA[publish]]></wp:status>
92
+ <wp:post_parent>0</wp:post_parent>
93
+ <wp:menu_order>0</wp:menu_order>
94
+ <wp:post_type><![CDATA[page]]></wp:post_type>
95
+ <wp:post_password><![CDATA[]]></wp:post_password>
96
+ <wp:is_sticky>0</wp:is_sticky>
97
+ </item>
98
+
99
+ <item>
100
+ <title><![CDATA[demo-man-3]]></title>
101
+ <link>https://ocdi.com/testimonials/demo-man-3/</link>
102
+ <pubDate>Tue, 23 Feb 2021 14:36:42 +0000</pubDate>
103
+ <guid isPermaLink="false">https://ocdi.com/wp-content/uploads/2021/02/demo-man-3.png</guid>
104
+ <description></description>
105
+ <content:encoded><![CDATA[]]></content:encoded>
106
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
107
+ <wp:post_id>2120</wp:post_id>
108
+ <wp:post_date><![CDATA[2021-02-23 09:36:42]]></wp:post_date>
109
+ <wp:post_date_gmt><![CDATA[2021-02-23 14:36:42]]></wp:post_date_gmt>
110
+ <wp:post_modified><![CDATA[2021-03-22 15:36:55]]></wp:post_modified>
111
+ <wp:post_modified_gmt><![CDATA[2021-03-22 15:36:55]]></wp:post_modified_gmt>
112
+ <wp:comment_status><![CDATA[open]]></wp:comment_status>
113
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
114
+ <wp:post_name><![CDATA[demo-man-3]]></wp:post_name>
115
+ <wp:status><![CDATA[inherit]]></wp:status>
116
+ <wp:post_parent>2119</wp:post_parent>
117
+ <wp:menu_order>0</wp:menu_order>
118
+ <wp:post_type><![CDATA[attachment]]></wp:post_type>
119
+ <wp:post_password><![CDATA[]]></wp:post_password>
120
+ <wp:is_sticky>0</wp:is_sticky>
121
+ <wp:attachment_url><![CDATA[https://ocdi.com/wp-content/uploads/2021/02/demo-man-3.png]]></wp:attachment_url>
122
+ <wp:postmeta>
123
+ <wp:meta_key><![CDATA[_wp_attached_file]]></wp:meta_key>
124
+ <wp:meta_value><![CDATA[2021/02/demo-man-3.png]]></wp:meta_value>
125
+ </wp:postmeta>
126
+ <wp:postmeta>
127
+ <wp:meta_key><![CDATA[_wp_attachment_metadata]]></wp:meta_key>
128
+ <wp:meta_value><![CDATA[a:5:{s:5:"width";i:800;s:6:"height";i:800;s:4:"file";s:22:"2021/02/demo-man-3.png";s:5:"sizes";a:3:{s:6:"medium";a:4:{s:4:"file";s:22:"demo-man-3-300x300.png";s:5:"width";i:300;s:6:"height";i:300;s:9:"mime-type";s:9:"image/png";}s:9:"thumbnail";a:4:{s:4:"file";s:22:"demo-man-3-150x150.png";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:9:"image/png";}s:12:"medium_large";a:4:{s:4:"file";s:22:"demo-man-3-768x768.png";s:5:"width";i:768;s:6:"height";i:768;s:9:"mime-type";s:9:"image/png";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}]]></wp:meta_value>
129
+ </wp:postmeta>
130
+ </item>
131
+ <item>
132
+ <title><![CDATA[demo-woman-3]]></title>
133
+ <link>https://ocdi.com/testimonials/demo-woman-3/</link>
134
+ <pubDate>Tue, 23 Feb 2021 15:12:59 +0000</pubDate>
135
+ <guid isPermaLink="false">https://ocdi.com/wp-content/uploads/2021/02/demo-woman-3.png</guid>
136
+ <description></description>
137
+ <content:encoded><![CDATA[]]></content:encoded>
138
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
139
+ <wp:post_id>2126</wp:post_id>
140
+ <wp:post_date><![CDATA[2021-02-23 10:12:59]]></wp:post_date>
141
+ <wp:post_date_gmt><![CDATA[2021-02-23 15:12:59]]></wp:post_date_gmt>
142
+ <wp:post_modified><![CDATA[2021-03-22 15:36:55]]></wp:post_modified>
143
+ <wp:post_modified_gmt><![CDATA[2021-03-22 15:36:55]]></wp:post_modified_gmt>
144
+ <wp:comment_status><![CDATA[open]]></wp:comment_status>
145
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
146
+ <wp:post_name><![CDATA[demo-woman-3]]></wp:post_name>
147
+ <wp:status><![CDATA[inherit]]></wp:status>
148
+ <wp:post_parent>2119</wp:post_parent>
149
+ <wp:menu_order>0</wp:menu_order>
150
+ <wp:post_type><![CDATA[attachment]]></wp:post_type>
151
+ <wp:post_password><![CDATA[]]></wp:post_password>
152
+ <wp:is_sticky>0</wp:is_sticky>
153
+ <wp:attachment_url><![CDATA[https://ocdi.com/wp-content/uploads/2021/02/demo-woman-3.png]]></wp:attachment_url>
154
+ <wp:postmeta>
155
+ <wp:meta_key><![CDATA[_wp_attached_file]]></wp:meta_key>
156
+ <wp:meta_value><![CDATA[2021/02/demo-woman-3.png]]></wp:meta_value>
157
+ </wp:postmeta>
158
+ <wp:postmeta>
159
+ <wp:meta_key><![CDATA[_wp_attachment_metadata]]></wp:meta_key>
160
+ <wp:meta_value><![CDATA[a:5:{s:5:"width";i:800;s:6:"height";i:800;s:4:"file";s:24:"2021/02/demo-woman-3.png";s:5:"sizes";a:3:{s:6:"medium";a:4:{s:4:"file";s:24:"demo-woman-3-300x300.png";s:5:"width";i:300;s:6:"height";i:300;s:9:"mime-type";s:9:"image/png";}s:9:"thumbnail";a:4:{s:4:"file";s:24:"demo-woman-3-150x150.png";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:9:"image/png";}s:12:"medium_large";a:4:{s:4:"file";s:24:"demo-woman-3-768x768.png";s:5:"width";i:768;s:6:"height";i:768;s:9:"mime-type";s:9:"image/png";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}]]></wp:meta_value>
161
+ </wp:postmeta>
162
+ </item>
163
+ <item>
164
+ <title><![CDATA[demo-man-4]]></title>
165
+ <link>https://ocdi.com/testimonials/demo-man-4/</link>
166
+ <pubDate>Tue, 23 Feb 2021 15:15:38 +0000</pubDate>
167
+ <guid isPermaLink="false">https://ocdi.com/wp-content/uploads/2021/02/demo-man-4.png</guid>
168
+ <description></description>
169
+ <content:encoded><![CDATA[]]></content:encoded>
170
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
171
+ <wp:post_id>2127</wp:post_id>
172
+ <wp:post_date><![CDATA[2021-02-23 10:15:38]]></wp:post_date>
173
+ <wp:post_date_gmt><![CDATA[2021-02-23 15:15:38]]></wp:post_date_gmt>
174
+ <wp:post_modified><![CDATA[2021-03-22 15:36:55]]></wp:post_modified>
175
+ <wp:post_modified_gmt><![CDATA[2021-03-22 15:36:55]]></wp:post_modified_gmt>
176
+ <wp:comment_status><![CDATA[open]]></wp:comment_status>
177
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
178
+ <wp:post_name><![CDATA[demo-man-4]]></wp:post_name>
179
+ <wp:status><![CDATA[inherit]]></wp:status>
180
+ <wp:post_parent>2119</wp:post_parent>
181
+ <wp:menu_order>0</wp:menu_order>
182
+ <wp:post_type><![CDATA[attachment]]></wp:post_type>
183
+ <wp:post_password><![CDATA[]]></wp:post_password>
184
+ <wp:is_sticky>0</wp:is_sticky>
185
+ <wp:attachment_url><![CDATA[https://ocdi.com/wp-content/uploads/2021/02/demo-man-4.png]]></wp:attachment_url>
186
+ <wp:postmeta>
187
+ <wp:meta_key><![CDATA[_wp_attached_file]]></wp:meta_key>
188
+ <wp:meta_value><![CDATA[2021/02/demo-man-4.png]]></wp:meta_value>
189
+ </wp:postmeta>
190
+ <wp:postmeta>
191
+ <wp:meta_key><![CDATA[_wp_attachment_metadata]]></wp:meta_key>
192
+ <wp:meta_value><![CDATA[a:5:{s:5:"width";i:800;s:6:"height";i:800;s:4:"file";s:22:"2021/02/demo-man-4.png";s:5:"sizes";a:3:{s:6:"medium";a:4:{s:4:"file";s:22:"demo-man-4-300x300.png";s:5:"width";i:300;s:6:"height";i:300;s:9:"mime-type";s:9:"image/png";}s:9:"thumbnail";a:4:{s:4:"file";s:22:"demo-man-4-150x150.png";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:9:"image/png";}s:12:"medium_large";a:4:{s:4:"file";s:22:"demo-man-4-768x768.png";s:5:"width";i:768;s:6:"height";i:768;s:9:"mime-type";s:9:"image/png";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}]]></wp:meta_value>
193
+ </wp:postmeta>
194
+ </item>
195
+ <item>
196
+ <title><![CDATA[demo-woman-2]]></title>
197
+ <link>https://ocdi.com/testimonials/demo-woman-2/</link>
198
+ <pubDate>Tue, 23 Feb 2021 15:20:28 +0000</pubDate>
199
+ <guid isPermaLink="false">https://ocdi.com/wp-content/uploads/2021/02/demo-woman-2.png</guid>
200
+ <description></description>
201
+ <content:encoded><![CDATA[]]></content:encoded>
202
+ <excerpt:encoded><![CDATA[]]></excerpt:encoded>
203
+ <wp:post_id>2128</wp:post_id>
204
+ <wp:post_date><![CDATA[2021-02-23 10:20:28]]></wp:post_date>
205
+ <wp:post_date_gmt><![CDATA[2021-02-23 15:20:28]]></wp:post_date_gmt>
206
+ <wp:post_modified><![CDATA[2021-03-22 15:36:55]]></wp:post_modified>
207
+ <wp:post_modified_gmt><![CDATA[2021-03-22 15:36:55]]></wp:post_modified_gmt>
208
+ <wp:comment_status><![CDATA[open]]></wp:comment_status>
209
+ <wp:ping_status><![CDATA[closed]]></wp:ping_status>
210
+ <wp:post_name><![CDATA[demo-woman-2]]></wp:post_name>
211
+ <wp:status><![CDATA[inherit]]></wp:status>
212
+ <wp:post_parent>2119</wp:post_parent>
213
+ <wp:menu_order>0</wp:menu_order>
214
+ <wp:post_type><![CDATA[attachment]]></wp:post_type>
215
+ <wp:post_password><![CDATA[]]></wp:post_password>
216
+ <wp:is_sticky>0</wp:is_sticky>
217
+ <wp:attachment_url><![CDATA[https://ocdi.com/wp-content/uploads/2021/02/demo-woman-2.png]]></wp:attachment_url>
218
+ <wp:postmeta>
219
+ <wp:meta_key><![CDATA[_wp_attached_file]]></wp:meta_key>
220
+ <wp:meta_value><![CDATA[2021/02/demo-woman-2.png]]></wp:meta_value>
221
+ </wp:postmeta>
222
+ <wp:postmeta>
223
+ <wp:meta_key><![CDATA[_wp_attachment_metadata]]></wp:meta_key>
224
+ <wp:meta_value><![CDATA[a:5:{s:5:"width";i:800;s:6:"height";i:800;s:4:"file";s:24:"2021/02/demo-woman-2.png";s:5:"sizes";a:3:{s:6:"medium";a:4:{s:4:"file";s:24:"demo-woman-2-300x300.png";s:5:"width";i:300;s:6:"height";i:300;s:9:"mime-type";s:9:"image/png";}s:9:"thumbnail";a:4:{s:4:"file";s:24:"demo-woman-2-150x150.png";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:9:"image/png";}s:12:"medium_large";a:4:{s:4:"file";s:24:"demo-woman-2-768x768.png";s:5:"width";i:768;s:6:"height";i:768;s:9:"mime-type";s:9:"image/png";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}]]></wp:meta_value>
225
+ </wp:postmeta>
226
+ </item>
227
+
228
+ </channel>
229
+ </rss>
assets/images/error.svg ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ <svg width="124" height="124" viewBox="0 0 124 124" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M62 0C27.75 0 0 27.75 0 62C0 96.25 27.75 124 62 124C96.25 124 124 96.25 124 62C124 27.75 96.25 0 62 0ZM116 62C116 91.75 91.75 116 62 116C32.25 116 8 92 8 62C8 32.5 32 8 62 8C91.5 8 116 32.25 116 62Z" fill="#DB3232"/>
3
+ <path d="M73.7413 61.9128L92.5639 43.2645L92.5705 43.258C94.4765 41.3519 94.4765 38.0231 92.5705 36.117L87.883 31.4295C85.9769 29.5235 82.6481 29.5235 80.742 31.4295L80.742 31.4295L80.7355 31.4361L62.0872 50.2587L43.258 31.4295C41.3519 29.5235 38.0231 29.5235 36.117 31.4295L31.4295 36.117C29.5235 38.0231 29.5235 41.3519 31.4295 43.258L31.4295 43.258L31.4361 43.2645L50.2587 61.9128L31.4295 80.742C29.5235 82.6481 29.5235 85.9769 31.4295 87.883L36.117 92.5705C38.0231 94.4765 41.3519 94.4765 43.258 92.5705L62.0872 73.7413L80.7355 92.5639L80.742 92.5705C82.6481 94.4765 85.9769 94.4765 87.883 92.5705L92.5705 87.883C94.4765 85.9769 94.4765 82.6481 92.5705 80.742L73.7413 61.9128Z" fill="#DB3232" stroke="white" stroke-width="4"/>
4
+ </svg>
assets/images/icons/brush.svg ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <svg width="55" height="52" viewBox="0 0 55 52" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M54.125 5.375C54.2083 5.125 54.25 4.91667 54.25 4.75C54.3333 4.08333 54.3333 3.5 54.25 3C54.0833 2.25 53.7083 1.625 53.125 1.125C52.4583 0.375 51.625 0.0416667 50.625 0.125C50.0417 0.125 49.5833 0.166667 49.25 0.25C48.3333 0.75 46.375 1.95833 43.375 3.875C39.7083 6.20833 36.375 8.5 33.375 10.75C29.4583 13.6667 26.5833 16.125 24.75 18.125C23.75 19.2083 22.7917 20.75 21.875 22.75C20.9583 24.9167 20.375 26.9167 20.125 28.75C19.875 30.9167 20.2083 32.5 21.125 33.5C22.125 34.5 23.7083 34.9167 25.875 34.75C27.7917 34.5833 29.7917 34.0417 31.875 33.125C34.0417 32.2083 35.5833 31.2917 36.5 30.375C38.5 28.375 40.9583 25.375 43.875 21.375C46.125 18.2917 48.375 14.9167 50.625 11.25C52.5417 8.25 53.7083 6.29167 54.125 5.375ZM0 50.5C1.83333 49.3333 3.25 47.9167 4.25 46.25C4.83333 45.3333 5.45833 43.9167 6.125 42C6.625 40.5 7.08333 39.375 7.5 38.625C8.25 37.4583 9.20833 36.4583 10.375 35.625C11.875 34.5417 13.5417 34.0833 15.375 34.25C17.2083 34.3333 18.7917 35.0833 20.125 36.5C20.875 37.25 21.375 38.3333 21.625 39.75C21.875 41.1667 21.8333 42.625 21.5 44.125C21.25 45.5417 20.625 46.7083 19.625 47.625C17.2917 49.875 14.25 51.2083 10.5 51.625C7.16667 51.9583 3.66667 51.5833 0 50.5Z" fill="#999999"/>
3
+ </svg>
assets/images/icons/check-solid-white.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="check" class="svg-inline--fa fa-check fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#ffffff" d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"></path></svg>
assets/images/icons/content.svg ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <svg width="53" height="53" viewBox="0 0 53 53" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M6.75 11H0.375V52.625H32.375V46.25H6.75V11ZM51.25 5.875L47.125 1.75C46.4583 1.08333 45.625 0.708333 44.625 0.625C43.625 0.541667 42.75 0.791667 42 1.375L38.75 4.625H10V43H38.75V23.75L51.625 11C52.2083 10.25 52.4583 9.375 52.375 8.375C52.2917 7.375 51.9167 6.54167 51.25 5.875ZM33 25.125L25 28L27.875 20L42 5.875L47.125 11L33 25.125Z" fill="#999999"/>
3
+ </svg>
assets/images/icons/copy.svg ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <svg width="42" height="52" viewBox="0 0 42 52" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M9.75 42V0.375H41.75V42H9.75ZM6.5 45.25H32.125V51.625H0.125V10H6.5V45.25Z" fill="#999999"/>
3
+ </svg>
assets/images/icons/info-circle.svg ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M8 1.25C11.6875 1.25 14.75 4.28125 14.75 8C14.75 11.75 11.7188 14.75 8 14.75C4.25 14.75 1.25 11.75 1.25 8C1.25 4.28125 4.25 1.25 8 1.25ZM8 0.25C3.71875 0.25 0.25 3.75 0.25 8C0.25 12.2812 3.71875 15.75 8 15.75C12.25 15.75 15.75 12.2812 15.75 8C15.75 3.75 12.25 0.25 8 0.25ZM6.875 11C6.65625 11 6.5 11.1875 6.5 11.375V11.625C6.5 11.8438 6.65625 12 6.875 12H9.125C9.3125 12 9.5 11.8438 9.5 11.625V11.375C9.5 11.1875 9.3125 11 9.125 11H8.75V6.625C8.75 6.4375 8.5625 6.25 8.375 6.25H6.875C6.65625 6.25 6.5 6.4375 6.5 6.625V6.875C6.5 7.09375 6.65625 7.25 6.875 7.25H7.25V11H6.875ZM8 3.5C7.4375 3.5 7 3.96875 7 4.5C7 5.0625 7.4375 5.5 8 5.5C8.53125 5.5 9 5.0625 9 4.5C9 3.96875 8.53125 3.5 8 3.5Z" fill="#999999"/>
3
+ </svg>
assets/images/icons/layout.svg ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <svg width="53" height="52" viewBox="0 0 53 52" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M0.875 0.375H16.875V35.625H0.875V0.375ZM20.125 0.375H36.125V16.375H20.125V0.375ZM39.25 0.375H52.125V51.625H39.25V0.375ZM20.125 19.625H36.125V35.625H20.125V19.625ZM0.875 38.75H36.125V51.625H0.875V38.75Z" fill="#999999"/>
3
+ </svg>
assets/images/icons/lock.svg ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <svg width="14" height="17" viewBox="0 0 14 17" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M11.9375 7.375H11.7812V5.90625C11.7812 3.36058 9.67067 1.25 7.125 1.25C4.54985 1.25 2.46875 3.36272 2.46875 5.90625V7.375H2.3125C1.29132 7.375 0.5 8.20723 0.5 9.1875V14.4375C0.5 15.4519 1.29808 16.25 2.3125 16.25H11.9375C12.9178 16.25 13.75 15.4587 13.75 14.4375V9.1875C13.75 8.20042 12.9246 7.375 11.9375 7.375ZM5.65625 7.375V5.90625C5.65625 5.11146 6.31189 4.4375 7.125 4.4375C7.91526 4.4375 8.59375 5.11599 8.59375 5.90625V7.375H5.65625Z" fill="#23282D" stroke="white"/>
3
+ </svg>
assets/images/icons/long-arrow-alt-left-blue.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg aria-hidden="true" focusable="false" data-prefix="far" data-icon="long-arrow-alt-left" class="svg-inline--fa fa-long-arrow-alt-left fa-w-14" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="#0071A1" d="M107.515 150.971L8.485 250c-4.686 4.686-4.686 12.284 0 16.971L107.515 366c7.56 7.56 20.485 2.206 20.485-8.485v-71.03h308c6.627 0 12-5.373 12-12v-32c0-6.627-5.373-12-12-12H128v-71.03c0-10.69-12.926-16.044-20.485-8.484z"></path></svg>
assets/images/icons/plugins.svg ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <svg width="65" height="64" viewBox="0 0 65 64" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M44 16.375L34.125 26.25L39.875 32L49.75 22.125C50.25 21.625 50.4167 20.9167 50.25 20C50.0833 19 49.5833 18.125 48.75 17.375C48 16.5417 47.1667 16.0417 46.25 15.875C45.4167 15.7083 44.6667 15.875 44 16.375ZM45 1C44.0833 0.416667 38.5833 4.125 28.5 12.125C23.4167 16.125 18.4583 20.2083 13.625 24.375L10.625 22.625C8.375 21.375 6.45833 20.4167 4.875 19.75C2.625 18.75 1.29167 18.4583 0.875 18.875C0.208333 19.375 2.125 22.2083 6.625 27.375C8.875 29.9583 11.2083 32.4583 13.625 34.875L22.25 26.25C28.75 19.75 33.9583 14.375 37.875 10.125C43.2917 4.29167 45.6667 1.25 45 1ZM62.625 30.75C61.7917 29.9167 60.875 29.4167 59.875 29.25C58.9583 29.0833 58.25 29.25 57.75 29.75L47.875 39.625L53.625 45.5L63.5 35.25C64 34.9167 64.1667 34.2917 64 33.375C63.8333 32.375 63.375 31.5 62.625 30.75ZM25.125 27.5C24.125 28.5833 23.25 30.4583 22.5 33.125C21.9167 35.4583 21.625 37.625 21.625 39.625V51.875L17.75 55.625C16.8333 56.625 16.375 57.7917 16.375 59.125C16.375 60.375 16.8333 61.5 17.75 62.5C18.75 63.4167 19.875 63.875 21.125 63.875C22.375 63.875 23.5 63.375 24.5 62.375L28.375 58.5H40.5C42.5833 58.5 44.75 58.2083 47 57.625C49.5 56.9583 51.2917 56.0833 52.375 55L56.125 52.5L27.75 24L25.125 27.5Z" fill="#999999"/>
3
+ </svg>
assets/images/icons/question-circle.svg ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M10 12.9688C9.375 12.9688 8.90625 13.4766 8.90625 14.0625C8.90625 14.6875 9.375 15.1562 10 15.1562C10.5859 15.1562 11.0938 14.6875 11.0938 14.0625C11.0938 13.4766 10.5859 12.9688 10 12.9688ZM10.2734 12.0312C10.5469 12.0312 10.7422 11.8359 10.7422 11.5625C10.7422 9.88281 13.7891 10 13.7891 7.38281C13.7891 5.39062 11.9922 4.21875 9.96094 4.21875C8.20312 4.21875 7.22656 4.92188 6.40625 5.97656C6.25 6.21094 6.28906 6.48438 6.52344 6.64062L7.03125 7.03125C7.22656 7.14844 7.5 7.10938 7.65625 6.91406C8.24219 6.17188 8.82812 5.78125 9.96094 5.78125C11.5234 5.78125 12.2266 6.60156 12.2266 7.38281C12.2266 9.0625 9.17969 8.82812 9.17969 11.5625C9.17969 11.8359 9.41406 12.0312 9.64844 12.0312H10.2734ZM10 1.25C14.6094 1.25 18.4375 5.03906 18.4375 9.6875C18.4375 14.375 14.6484 18.125 10 18.125C5.3125 18.125 1.5625 14.375 1.5625 9.6875C1.5625 5.03906 5.3125 1.25 10 1.25ZM10 0C4.64844 0 0.3125 4.375 0.3125 9.6875C0.3125 15.0391 4.64844 19.375 10 19.375C15.3125 19.375 19.6875 15.0391 19.6875 9.6875C19.6875 4.375 15.3125 0 10 0Z" fill="#666666"/>
3
+ </svg>
assets/images/icons/redux.svg ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ <svg width="82" height="70" viewBox="0 0 82 70" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M44.5075 59H34.2891L31.6521 54.5103L37.8241 47.6337L44.5075 59ZM29.1743 54.2489L24.9119 59H13L24.3891 46.1106L29.1743 54.2489Z" fill="#999999"/>
3
+ <path d="M30.584 52.6803L13.9551 24.4123H24.162L31.9139 37.5858L55.4194 11H68.0133L30.584 52.6803Z" fill="#999999"/>
4
+ </svg>
assets/images/icons/star.svg ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <svg width="11" height="10" viewBox="0 0 11 10" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M5.23262 0.344145L4.017 2.9408L1.26782 3.3508C0.781568 3.4289 0.594549 4.05366 0.949886 4.42461L2.91359 6.43556L2.44604 9.2665C2.37123 9.77412 2.89488 10.1646 3.32503 9.93031L5.77498 8.58317L8.20622 9.93031C8.63637 10.1646 9.16002 9.77412 9.08521 9.2665L8.61766 6.43556L10.5814 4.42461C10.9367 4.05366 10.7497 3.4289 10.2634 3.3508L7.53295 2.9408L6.29863 0.344145C6.09291 -0.104901 5.45704 -0.124425 5.23262 0.344145Z" fill="white"/>
3
+ </svg>
assets/images/icons/widgets.svg ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <svg width="56" height="49" viewBox="0 0 56 49" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M55.25 45.25V3.625C55.25 2.70833 54.9167 1.95833 54.25 1.375C53.6667 0.708333 52.9583 0.375 52.125 0.375H4.125C3.20833 0.375 2.41667 0.708333 1.75 1.375C1.16667 1.95833 0.875 2.70833 0.875 3.625V45.25C0.875 46.0833 1.16667 46.8333 1.75 47.5C2.41667 48.0833 3.20833 48.375 4.125 48.375H52.125C52.9583 48.375 53.6667 48.0833 54.25 47.5C54.9167 46.8333 55.25 46.0833 55.25 45.25ZM7.25 6.75H48.875V19.625H7.25V6.75ZM10.5 10V16.375H20.125V10H10.5ZM23.25 10V16.375H32.875V10H23.25ZM36.125 10V16.375H45.75V10H36.125ZM8.875 26C9.375 26 9.75 26.1667 10 26.5C10.3333 26.75 10.5 27.125 10.5 27.625C10.5 28.0417 10.3333 28.4167 10 28.75C9.75 29.0833 9.375 29.25 8.875 29.25C8.45833 29.25 8.08333 29.0833 7.75 28.75C7.41667 28.4167 7.25 28.0417 7.25 27.625C7.25 27.125 7.41667 26.75 7.75 26.5C8.08333 26.1667 8.45833 26 8.875 26ZM13.75 26H26.5V29.25H13.75V26ZM32.875 26H48.875V42H32.875V26ZM8.875 32.375C9.375 32.375 9.75 32.5417 10 32.875C10.3333 33.2083 10.5 33.5833 10.5 34C10.5 34.4167 10.3333 34.7917 10 35.125C9.75 35.4583 9.375 35.625 8.875 35.625C8.45833 35.625 8.08333 35.4583 7.75 35.125C7.41667 34.7917 7.25 34.4167 7.25 34C7.25 33.5833 7.41667 33.2083 7.75 32.875C8.08333 32.5417 8.45833 32.375 8.875 32.375ZM13.75 32.375H26.5V35.625H13.75V32.375ZM36.125 32.375V38.75H45.75V32.375H36.125ZM8.875 38.75C9.375 38.75 9.75 38.9167 10 39.25C10.3333 39.5833 10.5 40 10.5 40.5C10.5 40.9167 10.3333 41.2917 10 41.625C9.75 41.875 9.375 42 8.875 42C8.45833 42 8.08333 41.875 7.75 41.625C7.41667 41.2917 7.25 40.9167 7.25 40.5C7.25 40 7.41667 39.5833 7.75 39.25C8.08333 38.9167 8.45833 38.75 8.875 38.75ZM13.75 38.75H26.5V42H13.75V38.75Z" fill="#999999"/>
3
+ </svg>
assets/images/importing.svg ADDED
@@ -0,0 +1,74 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="415" height="228" viewBox="0 0 415 228">
2
+ <defs>
3
+ <radialGradient id="radial-gradient" cx="0.5" cy="0.5" r="0.5" gradientUnits="objectBoundingBox">
4
+ <stop offset="0" stop-color="#ddd"/>
5
+ <stop offset="1" stop-color="#fff"/>
6
+ </radialGradient>
7
+ </defs>
8
+ <g id="process" transform="translate(-492 -434)">
9
+ <g id="circles">
10
+ <g id="Ellipse_9" data-name="Ellipse 9" transform="translate(574 527)" fill="#fff" stroke="#777" stroke-width="3" opacity="0.15">
11
+ <circle cx="8" cy="8" r="8" stroke="none"/>
12
+ <circle cx="8" cy="8" r="6.5" fill="none"/>
13
+ <animate attributeName="opacity" values="0;0.25;0" dur="1s" repeatCount="indefinite"/>
14
+ </g>
15
+ <g id="Ellipse_13" data-name="Ellipse 13" transform="translate(895 567)" fill="#fff" stroke="#777" stroke-width="2" opacity="0.3">
16
+ <circle cx="6" cy="6" r="6" stroke="none"/>
17
+ <circle cx="6" cy="6" r="5" fill="none"/>
18
+ <animate attributeName="opacity" values="0;0.6;0" dur="1.3s" repeatCount="indefinite"/>
19
+ </g>
20
+ <g id="Ellipse_14" data-name="Ellipse 14" transform="translate(592 440)" fill="#fff" stroke="#777" stroke-width="2" opacity="0.15">
21
+ <circle cx="6" cy="6" r="6" stroke="none"/>
22
+ <circle cx="6" cy="6" r="5" fill="none"/>
23
+ <animate attributeName="opacity" values="0;0.25;0" dur="1.6s" repeatCount="indefinite"/>
24
+ </g>
25
+ <g id="Ellipse_10" data-name="Ellipse 10" transform="translate(845 460)" fill="#fff" stroke="#777" stroke-width="3" opacity="0.3">
26
+ <circle cx="8" cy="8" r="8" stroke="none"/>
27
+ <circle cx="8" cy="8" r="6.5" fill="none"/>
28
+ <animate attributeName="opacity" values="0;0.6;0" dur="1.9s" repeatCount="indefinite"/>
29
+ </g>
30
+ <g id="Ellipse_11" data-name="Ellipse 11" transform="translate(824 618)" fill="#fff" stroke="#777" stroke-width="1" opacity="0.15">
31
+ <circle cx="4" cy="4" r="4" stroke="none"/>
32
+ <circle cx="4" cy="4" r="3.5" fill="none"/>
33
+ <animate attributeName="opacity" values="0;0.25;0" dur="2.2s" repeatCount="indefinite"/>
34
+ </g>
35
+ <g id="Ellipse_16" data-name="Ellipse 16" transform="translate(492 517)" fill="#fff" stroke="#777" stroke-width="1" opacity="0.3">
36
+ <circle cx="4" cy="4" r="4" stroke="none"/>
37
+ <circle cx="4" cy="4" r="3.5" fill="none"/>
38
+ <animate attributeName="opacity" values="0;0.6;0" dur="2.5s" repeatCount="indefinite"/>
39
+ </g>
40
+ <g id="Ellipse_15" data-name="Ellipse 15" transform="translate(719 434)" fill="#fff" stroke="#777" stroke-width="1" opacity="0.15">
41
+ <circle cx="4" cy="4" r="4" stroke="none"/>
42
+ <circle cx="4" cy="4" r="3.5" fill="none"/>
43
+ <animate attributeName="opacity" values="0;0.25;0" dur="2.8s" repeatCount="indefinite"/>
44
+ </g>
45
+ <g id="Ellipse_12" data-name="Ellipse 12" transform="translate(521 452)" fill="#fff" stroke="#777" stroke-width="1" opacity="0.3">
46
+ <circle cx="4" cy="4" r="4" stroke="none"/>
47
+ <circle cx="4" cy="4" r="3.5" fill="none"/>
48
+ <animate attributeName="opacity" values="0;0.6;0" dur="3.1s" repeatCount="indefinite"/>
49
+ </g>
50
+ </g>
51
+ <g id="stars">
52
+ <path id="Path_510" data-name="Path 510" d="M7.5-8.641,2.937-9.306.9-13.444a1,1,0,0,0-1.794,0L-2.938-9.306-7.5-8.641a1,1,0,0,0-.553,1.706l3.3,3.219L-5.534.831a1,1,0,0,0,1.45,1.053L0-.263,4.084,1.884A1,1,0,0,0,5.534.831L4.753-3.716l3.3-3.219A1,1,0,0,0,7.5-8.641Zm-4.359,4.4L3.884.084,0-1.956-3.884.084l.741-4.325L-6.288-7.3l4.344-.631L0-11.872,1.944-7.934,6.287-7.3Z" transform="matrix(0.966, 0.259, -0.259, 0.966, 826.447, 540.796)" fill="#777" opacity="0.3"><animate attributeName="opacity" values="0;0.6;0" dur="1.5s" repeatCount="indefinite"/></path>
53
+ <path id="Path_509" data-name="Path 509" d="M7.5-8.641,2.937-9.306.9-13.444a1,1,0,0,0-1.794,0L-2.938-9.306-7.5-8.641a1,1,0,0,0-.553,1.706l3.3,3.219L-5.534.831a1,1,0,0,0,1.45,1.053L0-.263,4.084,1.884A1,1,0,0,0,5.534.831L4.753-3.716l3.3-3.219A1,1,0,0,0,7.5-8.641Zm-4.359,4.4L3.884.084,0-1.956-3.884.084l.741-4.325L-6.288-7.3l4.344-.631L0-11.872,1.944-7.934,6.287-7.3Z" transform="matrix(0.966, -0.259, 0.259, 0.966, 672.553, 471.795)" fill="#777" opacity="0.5"><animate attributeName="opacity" values="0;0.4;0" dur="1.7s" repeatCount="indefinite"/></path>
54
+ <path id="Path_508" data-name="Path 508" d="M7.5-8.641,2.937-9.306.9-13.444a1,1,0,0,0-1.794,0L-2.938-9.306-7.5-8.641a1,1,0,0,0-.553,1.706l3.3,3.219L-5.534.831a1,1,0,0,0,1.45,1.053L0-.263,4.084,1.884A1,1,0,0,0,5.534.831L4.753-3.716l3.3-3.219A1,1,0,0,0,7.5-8.641Zm-4.359,4.4L3.884.084,0-1.956-3.884.084l.741-4.325L-6.288-7.3l4.344-.631L0-11.872,1.944-7.934,6.287-7.3Z" transform="matrix(0.966, -0.259, 0.259, 0.966, 557.553, 495.795)" fill="#777" opacity="0.1"><animate attributeName="opacity" values="0;0.25;0" dur="1.9s" repeatCount="indefinite"/></path>
55
+ <path id="Path_507" data-name="Path 507" d="M4.689-5.4,1.836-5.816.561-8.4a.626.626,0,0,0-1.121,0L-1.836-5.816-4.689-5.4a.625.625,0,0,0-.346,1.066l2.064,2.012L-3.459.52a.625.625,0,0,0,.906.658L0-.164,2.553,1.178A.625.625,0,0,0,3.459.52L2.971-2.322,5.035-4.334A.625.625,0,0,0,4.689-5.4ZM1.965-2.65l.463,2.7L0-1.223-2.428.053l.463-2.7L-3.93-4.564l2.715-.395L0-7.42,1.215-4.959l2.715.395Z" transform="matrix(0.966, -0.259, 0.259, 0.966, 519.553, 584.795)" fill="#777" opacity="0.5"><animate attributeName="opacity" values="0;0.4;0" dur="2.1s" repeatCount="indefinite"/></path>
56
+ <path id="Path_506" data-name="Path 506" d="M4.689-5.4,1.836-5.816.561-8.4a.626.626,0,0,0-1.121,0L-1.836-5.816-4.689-5.4a.625.625,0,0,0-.346,1.066l2.064,2.012L-3.459.52a.625.625,0,0,0,.906.658L0-.164,2.553,1.178A.625.625,0,0,0,3.459.52L2.971-2.322,5.035-4.334A.625.625,0,0,0,4.689-5.4ZM1.965-2.65l.463,2.7L0-1.223-2.428.053l.463-2.7L-3.93-4.564l2.715-.395L0-7.42,1.215-4.959l2.715.395Z" transform="matrix(0.966, 0.259, -0.259, 0.966, 778.482, 455.795)" fill="#777" opacity="0.3"><animate attributeName="opacity" values="0;0.6;0" dur="2.3s" repeatCount="indefinite"/></path>
57
+ </g>
58
+ <g id="shadow">
59
+ <ellipse id="shadow-2" data-name="shadow" cx="80" cy="6" rx="100" ry="6" transform="translate(620 650)" fill="url(#radial-gradient)"/>
60
+ </g>
61
+ </g>
62
+ <g id="cog-bottom">
63
+ <path id="cog-bottom" d="M269.481 194.85L268.778 193.753C267.625 193.837 266.5 193.837 265.347 193.753L264.644 194.878C263.013 197.466 259.834 198.647 256.909 197.719C253.028 196.509 250.441 195.244 247.263 192.628C244.731 190.547 244.113 186.919 245.744 184.078L246.447 182.869C245.8 181.912 245.238 180.928 244.731 179.887H242.172C238.909 179.887 236.153 177.581 235.534 174.375C234.803 170.522 234.775 167.569 235.563 163.547C236.153 160.369 238.966 158.062 242.2 158.062H244.731C245.238 157.022 245.8 156.037 246.447 155.081L245.716 153.816C244.084 151.003 244.703 147.431 247.178 145.294C250.159 142.734 252.719 141.272 256.6 139.95C259.638 138.909 262.984 140.147 264.616 142.931L265.347 144.169C266.5 144.084 267.625 144.084 268.778 144.169L269.509 142.931C271.141 140.147 274.488 138.909 277.553 139.978C281.294 141.244 283.825 142.678 286.975 145.35C289.45 147.459 290.041 151.031 288.409 153.844L287.678 155.081C288.325 156.037 288.888 157.022 289.394 158.062H290.828C294.091 158.062 296.847 160.369 297.466 163.575C298.197 167.428 298.225 170.381 297.438 174.403C296.847 177.581 294.034 179.887 290.8 179.887H289.394C288.888 180.928 288.325 181.912 287.678 182.869L288.381 184.078C290.041 186.947 289.366 190.575 286.834 192.656C283.825 195.131 281.238 196.425 277.272 197.691C274.319 198.591 271.113 197.437 269.481 194.85ZM272.913 185.119L275.894 190.266C277.778 189.478 279.522 188.466 281.153 187.228L278.172 182.081L279.972 179.972C281.322 178.369 282.391 176.569 283.066 174.6L283.994 171.984H289.928C290.181 169.987 290.181 167.934 289.928 165.937H283.994L283.066 163.322C282.363 161.353 281.322 159.553 279.972 157.95L278.172 155.841L281.153 150.694C279.55 149.456 277.778 148.444 275.894 147.656L272.913 152.803L270.184 152.297C268.131 151.903 266.022 151.903 263.969 152.297L261.241 152.803L258.259 147.656C256.375 148.444 254.631 149.456 253 150.694L255.981 155.841L254.181 157.95C252.831 159.553 251.763 161.353 251.088 163.322L250.159 165.937H244.225C243.972 167.934 243.972 169.987 244.225 171.984H250.159L251.088 174.6C251.791 176.569 252.831 178.369 254.181 179.972L255.981 182.081L253 187.228C254.603 188.466 256.375 189.478 258.259 190.266L261.241 185.119L263.969 185.625C266.022 186.019 268.131 186.019 270.184 185.625L272.913 185.119ZM275.5 168.75C275.5 163.772 271.478 159.75 266.5 159.75C261.522 159.75 257.5 163.772 257.5 168.75C257.5 173.728 261.522 177.75 266.5 177.75C271.478 177.75 275.5 173.728 275.5 168.75Z" fill="#A0A5AA"/>
64
+ <animateTransform attributeType="xml" attributeName="transform" type="rotate" from="360 266.5 169" to="0 266.5 169" dur="2s" additive="sum" repeatCount="indefinite" />
65
+ </g>
66
+ <g id="cog-top">
67
+ <path d="M269.481 109.237L268.778 108.141C267.625 108.225 266.5 108.225 265.347 108.141L264.644 109.266C263.013 111.853 259.834 113.034 256.909 112.106C253.028 110.897 250.441 109.631 247.263 107.016C244.731 104.934 244.113 101.306 245.744 98.4656L246.447 97.2562C245.8 96.3 245.238 95.3156 244.731 94.275H242.172C238.909 94.275 236.153 91.9687 235.534 88.7625C234.803 84.9094 234.775 81.9562 235.563 77.9344C236.153 74.7562 238.966 72.45 242.2 72.45H244.731C245.238 71.4094 245.8 70.425 246.447 69.4687L245.716 68.2031C244.084 65.3906 244.703 61.8187 247.178 59.6812C250.159 57.1219 252.719 55.6594 256.6 54.3375C259.638 53.2969 262.984 54.5344 264.616 57.3187L265.347 58.5562C266.5 58.4719 267.625 58.4719 268.778 58.5562L269.509 57.3187C271.141 54.5344 274.488 53.2969 277.553 54.3656C281.294 55.6312 283.825 57.0656 286.975 59.7375C289.45 61.8469 290.041 65.4187 288.409 68.2312L287.678 69.4687C288.325 70.425 288.888 71.4094 289.394 72.45H290.828C294.091 72.45 296.847 74.7562 297.466 77.9625C298.197 81.8156 298.225 84.7687 297.438 88.7906C296.847 91.9687 294.034 94.275 290.8 94.275H289.394C288.888 95.3156 288.325 96.3 287.678 97.2562L288.381 98.4656C290.041 101.334 289.366 104.962 286.834 107.044C283.825 109.519 281.238 110.812 277.272 112.078C274.319 113.006 271.113 111.853 269.481 109.237ZM272.913 99.5344L275.894 104.681C277.778 103.894 279.522 102.881 281.153 101.644L278.172 96.4969L279.972 94.3875C281.322 92.7844 282.391 90.9844 283.066 89.0156L283.994 86.4H289.928C290.181 84.4031 290.181 82.35 289.928 80.3531H283.994L283.066 77.7375C282.363 75.7687 281.322 73.9687 279.972 72.3656L278.172 70.2562L281.125 65.0812C279.522 63.8437 277.75 62.8312 275.866 62.0437L272.884 67.1906L270.156 66.6844C268.103 66.2906 265.994 66.2906 263.941 66.6844L261.213 67.1906L258.231 62.0437C256.375 62.8031 254.603 63.8437 253 65.0812L255.981 70.2281L254.181 72.3375C252.831 73.9406 251.763 75.7406 251.088 77.7094L250.159 80.325H244.225C243.972 82.3219 243.972 84.375 244.225 86.3719H250.159L251.088 88.9875C251.791 90.9562 252.831 92.7562 254.181 94.3594L255.981 96.4687L253 101.644C254.603 102.881 256.375 103.894 258.259 104.681L261.241 99.5344L263.969 100.041C266.022 100.434 268.131 100.434 270.184 100.041L272.913 99.5344ZM275.5 83.1656C275.5 78.1875 271.478 74.1656 266.5 74.1656C261.522 74.1656 257.5 78.1875 257.5 83.1656C257.5 88.1437 261.522 92.1656 266.5 92.1656C271.478 92.1656 275.5 88.1156 275.5 83.1656Z" fill="#00A0D2"/>
68
+ <animateTransform attributeType="xml" attributeName="transform" type="rotate" from="360 266.5 83.5" to="0 266.5 83.5" dur="2s" additive="sum" repeatCount="indefinite" />
69
+ </g>
70
+ <g id="cog-left">
71
+ <path d="M159.458 179.912V171.167C155.778 169.645 152.297 167.68 149.072 165.328L141.226 169.728C138.43 171.277 134.92 170.752 132.752 168.455C125.847 161.177 121.766 154.756 118.314 144.074C117.344 141.113 118.628 137.903 121.395 136.326L129.185 131.925C128.7 128.051 128.7 124.149 129.185 120.275L121.395 115.902C118.628 114.353 117.344 111.115 118.314 108.154C121.766 97.5271 125.79 91.1068 132.752 83.7733C134.92 81.4764 138.458 80.9506 141.226 82.5003L149.044 86.9004C152.268 84.5482 155.749 82.611 159.43 81.0613V72.3164C159.43 69.1893 161.655 66.5049 164.794 65.8408C174.695 63.6822 182.484 63.4332 193.812 65.8408C196.95 66.5049 199.204 69.217 199.204 72.3164V81.0613C202.885 82.5833 206.366 84.5482 209.59 86.8727L217.408 82.5003C220.205 80.9506 223.743 81.4764 225.911 83.7733C233.586 91.9647 237.752 99.2429 240.777 108.264C241.747 111.17 240.548 114.325 237.866 115.93L230.733 120.303C231.218 124.177 231.218 128.079 230.733 131.953L238.751 136.796C241.205 138.29 242.46 141.113 241.832 143.853C239.864 152.515 232.417 161.73 225.883 168.538C223.714 170.807 220.205 171.305 217.437 169.755L209.59 165.355C206.366 167.707 202.885 169.645 199.204 171.194V179.939C199.204 183.039 196.979 185.751 193.84 186.415C183.14 188.712 175.322 188.684 164.765 186.415C161.684 185.723 159.458 183.011 159.458 179.912ZM168.589 178.196C175.665 179.579 182.998 179.579 190.074 178.196V164.995L193.127 163.944C197.92 162.311 202.343 159.821 206.223 156.61L208.677 154.563L220.49 161.177C225.283 155.891 230.191 149.747 232.502 143.133L220.69 136.519L221.289 133.448C222.202 128.577 222.202 123.623 221.289 118.753L220.69 115.681L232.502 109.067C230.191 102.453 225.283 96.2818 220.49 91.0238L208.677 97.6378L206.223 95.59C202.343 92.3521 197.949 89.8892 193.127 88.2564L190.074 87.2048V74.0322C182.998 72.6485 175.665 72.6485 168.589 74.0322V87.2325L165.536 88.2841C160.742 89.9169 156.32 92.4075 152.439 95.6176L149.985 97.6655L138.173 91.0515C133.395 96.3189 129.74 102.451 127.416 109.095L139.228 115.709L138.629 118.78C137.716 123.651 137.716 128.605 138.629 133.475L139.228 136.547L127.416 143.161C129.727 149.775 133.379 155.946 138.173 161.204L149.985 154.59L152.439 156.638C156.32 159.876 160.714 162.339 165.536 163.972L168.589 165.023V178.196ZM179.545 149.055C166.506 149.055 155.892 138.761 155.892 126.114C155.892 113.467 166.506 103.173 179.545 103.173C192.585 103.173 203.199 113.467 203.199 126.114C203.199 138.761 192.585 149.055 179.545 149.055ZM179.545 112.028C171.556 112.028 165.022 118.338 165.022 126.114C165.022 133.89 171.528 140.2 179.545 140.2C187.535 140.2 194.069 133.89 194.069 126.114C194.069 118.338 187.563 112.028 179.545 112.028Z" fill="#0073AA"/>
72
+ <animateTransform attributeType="xml" attributeName="transform" type="rotate" from="0 180 126" to="360 180 126" dur="3s" additive="sum" repeatCount="indefinite" />
73
+ </g>
74
+ </svg>
assets/images/loader.svg ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <circle cx="16" cy="16" r="16" fill="#F1F1F1"/>
3
+ <path d="M15.9999 0.00012207C7.15995 0.00012207 0 7.16007 0 16C0 24.8399 7.15995 31.9999 15.9999 31.9999C24.8398 31.9999 31.9998 24.8399 31.9998 16C31.9998 7.16007 24.8398 0.00012207 15.9999 0.00012207ZM15.9999 28.7999C8.91993 28.7999 3.19998 23.08 3.19998 16C3.19998 8.92006 8.91993 3.2001 15.9999 3.2001C23.0798 3.2001 28.7998 8.92006 28.7998 16C28.7998 23.08 23.0798 28.7999 15.9999 28.7999Z" fill="#DDDDDD"/>
4
+ <path d="M30.3203 18.96C30.2803 18.96 30.2003 18.96 30.1603 18.96C29.2803 18.88 28.6403 18.08 28.7203 17.2C28.7603 16.8 28.7603 16.4 28.7603 16C28.8003 8.96006 23.0403 3.2001 16.0004 3.2001C15.1204 3.2001 14.4004 2.4801 14.4004 1.60011C14.4004 0.720117 15.1204 0.00012207 16.0004 0.00012207C24.8403 0.00012207 32.0003 7.16007 32.0003 16C32.0003 16.52 31.9603 17 31.9203 17.52C31.8403 18.36 31.1603 18.96 30.3203 18.96Z" fill="#007CBA"/>
5
+ </svg>
assets/images/success.svg ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ <svg width="160" height="124" viewBox="0 0 160 124" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M78 0C43.75 0 16 27.75 16 62C16 96.25 43.75 124 78 124C112.25 124 140 96.25 140 62C140 27.75 112.25 0 78 0ZM132 62C132 91.75 107.75 116 78 116C48.25 116 24 92 24 62C24 32.5 48 8 78 8C107.5 8 132 32.25 132 62Z" fill="#64B450"/>
3
+ <path d="M78.0073 67.9142L55.4215 45.0931L55.3399 45.0107L55.2494 44.9383C54.2296 44.1224 52.9623 43.75 51.7812 43.75C50.6146 43.75 49.3023 44.1193 48.3358 45.0858L41.0858 52.3358C40.1193 53.3023 39.75 54.6146 39.75 55.7812C39.75 56.9623 40.1224 58.2296 40.9383 59.2494L41.0098 59.3388L41.0911 59.4195L74.5858 92.6642C74.5868 92.6652 74.5878 92.6663 74.5888 92.6673C75.5522 93.6292 76.7967 94.1875 78.125 94.1875C79.4547 94.1875 80.7005 93.628 81.6642 92.6642L156.664 17.6642C157.631 16.6977 158 15.3854 158 14.2188C158 13.0377 157.628 11.7704 156.812 10.7506L156.732 10.6504L156.639 10.5612L149.469 3.63831C147.572 1.41002 144.237 1.68448 142.336 3.58579L78.0073 67.9142Z" fill="#64B450" stroke="white" stroke-width="4"/>
4
+ </svg>
assets/images/warning.svg ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ <svg width="124" height="124" viewBox="0 0 124 124" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M62 0C27.75 0 0 27.75 0 62C0 96.25 27.75 124 62 124C96.25 124 124 96.25 124 62C124 27.75 96.25 0 62 0ZM116 62C116 91.75 91.75 116 62 116C32.25 116 8 92 8 62C8 32.5 32 8 62 8C91.5 8 116 32.25 116 62Z" fill="#FFB900"/>
3
+ <path d="M71.75 82.625C71.75 77.4688 67.5312 73.25 62.375 73.25C57.1016 73.25 53 77.4688 53 82.625C53 87.8984 57.1016 92 62.375 92C67.5312 92 71.75 87.8984 71.75 82.625ZM54.0547 35.0469L55.5781 66.9219C55.6953 68.3281 56.9844 69.5 58.3906 69.5H66.2422C67.6484 69.5 68.9375 68.3281 69.0547 66.9219L70.5781 35.0469C70.6953 33.4062 69.4062 32 67.7656 32H56.8672C55.2266 32 53.9375 33.4062 54.0547 35.0469Z" fill="#FFB900"/>
4
+ </svg>
assets/js/main.js CHANGED
@@ -1,6 +1,20 @@
1
  jQuery( function ( $ ) {
2
  'use strict';
3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  /**
5
  * ---------------------------------------
6
  * ------------- Events ------------------
@@ -8,53 +22,282 @@ jQuery( function ( $ ) {
8
  */
9
 
10
  /**
11
- * No or Single predefined demo import button click.
12
  */
13
- $( '.js-ocdi-import-data' ).on( 'click', function () {
 
14
 
15
- // Reset response div content.
16
- $( '.js-ocdi-ajax-response' ).empty();
 
 
 
17
 
18
  // Prepare data for the AJAX call
19
  var data = new FormData();
20
- data.append( 'action', 'ocdi_import_demo_data' );
21
  data.append( 'security', ocdi.ajax_nonce );
22
- data.append( 'selected', $( '#ocdi__demo-import-files' ).val() );
23
- if ( $('#ocdi__content-file-upload').length ) {
24
- data.append( 'content_file', $('#ocdi__content-file-upload')[0].files[0] );
 
 
 
 
 
 
 
 
 
25
  }
26
- if ( $('#ocdi__widget-file-upload').length ) {
27
- data.append( 'widget_file', $('#ocdi__widget-file-upload')[0].files[0] );
 
 
 
 
 
 
 
 
 
28
  }
29
- if ( $('#ocdi__customizer-file-upload').length ) {
30
- data.append( 'customizer_file', $('#ocdi__customizer-file-upload')[0].files[0] );
 
 
 
 
 
 
 
 
 
31
  }
32
- if ( $('#ocdi__redux-file-upload').length ) {
33
- data.append( 'redux_file', $('#ocdi__redux-file-upload')[0].files[0] );
 
 
 
 
 
 
 
 
 
34
  data.append( 'redux_option_name', $('#ocdi__redux-option-name').val() );
35
  }
36
 
37
- // AJAX call to import everything (content, widgets, before/after setup)
38
- ajaxCall( data );
39
 
40
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41
 
 
 
 
 
42
 
43
  /**
44
- * Grid Layout import button click.
45
  */
46
- $( '.js-ocdi-gl-import-data' ).on( 'click', function () {
47
- var selectedImportID = $( this ).val();
48
- var $itemContainer = $( this ).closest( '.js-ocdi-gl-item' );
49
 
50
- // If the import confirmation is enabled, then do that, else import straight away.
51
- if ( ocdi.import_popup ) {
52
- displayConfirmationPopup( selectedImportID, $itemContainer );
 
 
 
 
 
 
 
 
 
 
53
  }
54
- else {
55
- gridLayoutImport( selectedImportID, $itemContainer );
 
 
 
56
  }
57
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
 
59
 
60
  /**
@@ -163,110 +406,6 @@ jQuery( function ( $ ) {
163
  * ---------------------------------------
164
  */
165
 
166
- /**
167
- * Prepare grid layout import data and execute the AJAX call.
168
- *
169
- * @param int selectedImportID The selected import ID.
170
- * @param obj $itemContainer The jQuery selected item container object.
171
- */
172
- function gridLayoutImport( selectedImportID, $itemContainer ) {
173
- // Reset response div content.
174
- $( '.js-ocdi-ajax-response' ).empty();
175
-
176
- // Hide all other import items.
177
- $itemContainer.siblings( '.js-ocdi-gl-item' ).fadeOut( 500 );
178
-
179
- $itemContainer.animate({
180
- opacity: 0
181
- }, 500, 'swing', function () {
182
- $itemContainer.animate({
183
- opacity: 1
184
- }, 500 )
185
- });
186
-
187
- // Hide the header with category navigation and search box.
188
- $itemContainer.closest( '.js-ocdi-gl' ).find( '.js-ocdi-gl-header' ).fadeOut( 500 );
189
-
190
- // Append a title for the selected demo import.
191
- $itemContainer.parent().prepend( '<h3>' + ocdi.texts.selected_import_title + '</h3>' );
192
-
193
- // Remove the import button of the selected item.
194
- $itemContainer.find( '.js-ocdi-gl-import-data' ).remove();
195
-
196
- // Prepare data for the AJAX call
197
- var data = new FormData();
198
- data.append( 'action', 'ocdi_import_demo_data' );
199
- data.append( 'security', ocdi.ajax_nonce );
200
- data.append( 'selected', selectedImportID );
201
-
202
- // AJAX call to import everything (content, widgets, before/after setup)
203
- ajaxCall( data );
204
- }
205
-
206
- /**
207
- * Display the confirmation popup.
208
- *
209
- * @param int selectedImportID The selected import ID.
210
- * @param obj $itemContainer The jQuery selected item container object.
211
- */
212
- function displayConfirmationPopup( selectedImportID, $itemContainer ) {
213
- var $dialogContiner = $( '#js-ocdi-modal-content' );
214
- var currentFilePreviewImage = ocdi.import_files[ selectedImportID ]['import_preview_image_url'] || ocdi.theme_screenshot;
215
- var previewImageContent = '';
216
- var importNotice = ocdi.import_files[ selectedImportID ]['import_notice'] || '';
217
- var importNoticeContent = '';
218
- var dialogOptions = $.extend(
219
- {
220
- 'dialogClass': 'wp-dialog',
221
- 'resizable': false,
222
- 'height': 'auto',
223
- 'modal': true
224
- },
225
- ocdi.dialog_options,
226
- {
227
- 'buttons':
228
- [
229
- {
230
- text: ocdi.texts.dialog_no,
231
- click: function() {
232
- $(this).dialog('close');
233
- }
234
- },
235
- {
236
- text: ocdi.texts.dialog_yes,
237
- class: 'button button-primary',
238
- click: function() {
239
- $(this).dialog('close');
240
- gridLayoutImport( selectedImportID, $itemContainer );
241
- }
242
- }
243
- ]
244
- });
245
-
246
- if ( '' === currentFilePreviewImage ) {
247
- previewImageContent = '<p>' + ocdi.texts.missing_preview_image + '</p>';
248
- }
249
- else {
250
- previewImageContent = '<div class="ocdi__modal-image-container"><img src="' + currentFilePreviewImage + '" alt="' + ocdi.import_files[ selectedImportID ]['import_file_name'] + '"></div>'
251
- }
252
-
253
- // Prepare notice output.
254
- if( '' !== importNotice ) {
255
- importNoticeContent = '<div class="ocdi__modal-notice ocdi__demo-import-notice">' + importNotice + '</div>';
256
- }
257
-
258
- // Populate the dialog content.
259
- $dialogContiner.prop( 'title', ocdi.texts.dialog_title );
260
- $dialogContiner.html(
261
- '<p class="ocdi__modal-item-title">' + ocdi.import_files[ selectedImportID ]['import_file_name'] + '</p>' +
262
- previewImageContent +
263
- importNoticeContent
264
- );
265
-
266
- // Display the confirmation popup.
267
- $dialogContiner.dialog( dialogOptions );
268
- }
269
-
270
  /**
271
  * The main AJAX call, which executes the import process.
272
  *
@@ -280,7 +419,8 @@ jQuery( function ( $ ) {
280
  contentType: false,
281
  processData: false,
282
  beforeSend: function() {
283
- $( '.js-ocdi-ajax-loader' ).show();
 
284
  }
285
  })
286
  .done( function( response ) {
@@ -308,20 +448,246 @@ jQuery( function ( $ ) {
308
  ajaxCall( newData );
309
  }
310
  else if ( 'undefined' !== typeof response.message ) {
311
- $( '.js-ocdi-ajax-response' ).append( '<p>' + response.message + '</p>' );
312
- $( '.js-ocdi-ajax-loader' ).hide();
 
 
 
 
 
 
 
 
 
 
313
 
314
  // Trigger custom event, when OCDI import is complete.
315
  $( document ).trigger( 'ocdiImportComplete' );
316
  }
317
  else {
318
- $( '.js-ocdi-ajax-response' ).append( '<div class="notice notice-error is-dismissible"><p>' + response + '</p></div>' );
319
- $( '.js-ocdi-ajax-loader' ).hide();
 
 
 
320
  }
321
  })
322
  .fail( function( error ) {
323
- $( '.js-ocdi-ajax-response' ).append( '<div class="notice notice-error is-dismissible"><p>Error: ' + error.statusText + ' (' + error.status + ')' + '</p></div>' );
324
- $( '.js-ocdi-ajax-loader' ).hide();
 
 
 
325
  });
326
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
327
  } );
1
  jQuery( function ( $ ) {
2
  'use strict';
3
 
4
+ /**
5
+ * ---------------------------------------
6
+ * ------------- DOM Ready ---------------
7
+ * ---------------------------------------
8
+ */
9
+
10
+ // Move the admin notices inside the appropriate div.
11
+ $( '.js-ocdi-notice-wrapper' ).appendTo( '.js-ocdi-admin-notices-container' );
12
+
13
+ // Auto start the manual import if on the import page and the 'js-ocdi-auto-start-manual-import' element is present.
14
+ if ( $( '.js-ocdi-auto-start-manual-import' ).length ) {
15
+ startImport( false );
16
+ }
17
+
18
  /**
19
  * ---------------------------------------
20
  * ------------- Events ------------------
22
  */
23
 
24
  /**
25
+ * No predefined demo import button click (manual import).
26
  */
27
+ $( '.js-ocdi-start-manual-import' ).on( 'click', function ( event ) {
28
+ event.preventDefault();
29
 
30
+ var $button = $( this );
31
+
32
+ if ( $button.hasClass( 'ocdi-button-disabled' ) ) {
33
+ return false;
34
+ }
35
 
36
  // Prepare data for the AJAX call
37
  var data = new FormData();
38
+ data.append( 'action', 'ocdi_upload_manual_import_files' );
39
  data.append( 'security', ocdi.ajax_nonce );
40
+
41
+ if ( $('#ocdi__content-file-upload').length && $('#ocdi__content-file-upload').get(0).files.length ) {
42
+ var contentFile = $('#ocdi__content-file-upload')[0].files[0];
43
+ var contentFileExt = contentFile.name.split('.').pop();
44
+
45
+ if ( -1 === [ 'xml' ].indexOf( contentFileExt.toLowerCase() ) ) {
46
+ alert( ocdi.texts.content_filetype_warn );
47
+
48
+ return false;
49
+ }
50
+
51
+ data.append( 'content_file', contentFile );
52
  }
53
+ if ( $('#ocdi__widget-file-upload').length && $('#ocdi__widget-file-upload').get(0).files.length ) {
54
+ var widgetsFile = $('#ocdi__widget-file-upload')[0].files[0];
55
+ var widgetsFileExt = widgetsFile.name.split('.').pop();
56
+
57
+ if ( -1 === [ 'json', 'wie' ].indexOf( widgetsFileExt.toLowerCase() ) ) {
58
+ alert( ocdi.texts.widgets_filetype_warn );
59
+
60
+ return false;
61
+ }
62
+
63
+ data.append( 'widget_file', widgetsFile );
64
  }
65
+ if ( $('#ocdi__customizer-file-upload').length && $('#ocdi__customizer-file-upload').get(0).files.length ) {
66
+ var customizerFile = $('#ocdi__customizer-file-upload')[0].files[0];
67
+ var customizerFileExt = customizerFile.name.split('.').pop();
68
+
69
+ if ( -1 === [ 'dat' ].indexOf( customizerFileExt.toLowerCase() ) ) {
70
+ alert( ocdi.texts.customizer_filetype_warn );
71
+
72
+ return false;
73
+ }
74
+
75
+ data.append( 'customizer_file', customizerFile );
76
  }
77
+ if ( $('#ocdi__redux-file-upload').length && $('#ocdi__redux-file-upload').get(0).files.length ) {
78
+ var reduxFile = $('#ocdi__redux-file-upload')[0].files[0];
79
+ var reduxFileExt = reduxFile.name.split('.').pop();
80
+
81
+ if ( -1 === [ 'json' ].indexOf( reduxFileExt.toLowerCase() ) ) {
82
+ alert( ocdi.texts.redux_filetype_warn );
83
+
84
+ return false;
85
+ }
86
+
87
+ data.append( 'redux_file', reduxFile );
88
  data.append( 'redux_option_name', $('#ocdi__redux-option-name').val() );
89
  }
90
 
91
+ $button.addClass( 'ocdi-button-disabled' );
 
92
 
93
+ // AJAX call to upload all selected import files (content, widgets, customizer and redux).
94
+ $.ajax({
95
+ method: 'POST',
96
+ url: ocdi.ajax_url,
97
+ data: data,
98
+ contentType: false,
99
+ processData: false,
100
+ })
101
+ .done( function( response ) {
102
+ if ( response.success ) {
103
+ window.location.href = ocdi.import_url;
104
+ } else {
105
+ alert( response.data );
106
+ $button.removeClass( 'ocdi-button-disabled' );
107
+ }
108
+ })
109
+ .fail( function( error ) {
110
+ alert( error.statusText + ' (' + error.status + ')' );
111
+ $button.removeClass( 'ocdi-button-disabled' );
112
+ })
113
+ } );
114
+
115
+ /**
116
+ * Remove the files from the manual import upload controls (when clicked on the "cancel" button).
117
+ */
118
+ $( '.js-ocdi-cancel-manual-import').on( 'click', function() {
119
+ $( '.ocdi__file-upload-container-items input[type=file]' ).each( function() {
120
+ $( this ).val( '' ).trigger( 'change' );
121
+ } );
122
+ } );
123
+
124
+ /**
125
+ * Show and hide the file upload label and input on file input change event.
126
+ */
127
+ $( document ).on( 'change', '.ocdi__file-upload-container-items input[type=file]', function() {
128
+ var $input = $( this ),
129
+ $label = $input.siblings( 'label' ),
130
+ fileIsSet = false;
131
+
132
+ if( this.files && this.files.length > 0 ) {
133
+ $input.removeClass( 'ocdi-hide-input' ).blur();
134
+ $label.hide();
135
+ } else {
136
+ $input.addClass( 'ocdi-hide-input' );
137
+ $label.show();
138
+ }
139
+
140
+ // Enable or disable the main manual import/cancel buttons.
141
+ $( '.ocdi__file-upload-container-items input[type=file]' ).each( function() {
142
+ if ( this.files && this.files.length > 0 ) {
143
+ fileIsSet = true;
144
+ }
145
+ } );
146
 
147
+ $( '.js-ocdi-start-manual-import' ).prop( 'disabled', ! fileIsSet );
148
+ $( '.js-ocdi-cancel-manual-import' ).prop( 'disabled', ! fileIsSet );
149
+
150
+ } );
151
 
152
  /**
153
+ * Prevent a required plugin checkbox from changeing state.
154
  */
155
+ $( '.ocdi-install-plugins-content-content .plugin-item.plugin-item--required input[type=checkbox]' ).on( 'click', function( event ) {
156
+ event.preventDefault();
 
157
 
158
+ return false;
159
+ } );
160
+
161
+ /**
162
+ * Install plugins event.
163
+ */
164
+ $( '.js-ocdi-install-plugins' ).on( 'click', function( event ) {
165
+ event.preventDefault();
166
+
167
+ var $button = $( this );
168
+
169
+ if ( $button.hasClass( 'ocdi-button-disabled' ) ) {
170
+ return false;
171
  }
172
+
173
+ var pluginsToInstall = $( '.ocdi-install-plugins-content-content .plugin-item input[type=checkbox]' ).serializeArray();
174
+
175
+ if ( pluginsToInstall.length === 0 ) {
176
+ return false;
177
  }
178
+
179
+ $button.addClass( 'ocdi-button-disabled' );
180
+
181
+ installPluginsAjaxCall( pluginsToInstall, 0, $button, false, false );
182
+ } );
183
+
184
+ /**
185
+ * Install plugins before importing event.
186
+ */
187
+ $( '.js-ocdi-install-plugins-before-import' ).on( 'click', function( event ) {
188
+ event.preventDefault();
189
+
190
+ var $button = $( this );
191
+
192
+ if ( $button.hasClass( 'ocdi-button-disabled' ) ) {
193
+ return false;
194
+ }
195
+
196
+ var pluginsToInstall = $( '.ocdi-install-plugins-content-content .plugin-item:not(.plugin-item--disabled) input[type=checkbox]' ).serializeArray();
197
+
198
+ if ( pluginsToInstall.length === 0 ) {
199
+ startImport( getUrlParameter( 'import' ) );
200
+
201
+ return false;
202
+ }
203
+
204
+ $button.addClass( 'ocdi-button-disabled' );
205
+
206
+ installPluginsAjaxCall( pluginsToInstall, 0, $button, true, false );
207
+ } );
208
+
209
+
210
+ /**
211
+ * Import the created content.
212
+ */
213
+ $( '.js-ocdi-create-content' ).on( 'click', function( event ) {
214
+ event.preventDefault();
215
+
216
+ var $button = $( this );
217
+
218
+ if ( $button.hasClass( 'ocdi-button-disabled' ) ) {
219
+ return false;
220
+ }
221
+
222
+ var itemsToImport = $( '.ocdi-create-content-content .content-item input[type=checkbox]' ).serializeArray();
223
+
224
+ if ( itemsToImport.length === 0 ) {
225
+ return false;
226
+ }
227
+
228
+ $button.addClass( 'ocdi-button-disabled' );
229
+
230
+ createDemoContentAjaxCall( itemsToImport, 0, $button );
231
+ } );
232
+
233
+
234
+ /**
235
+ * Install the SeedProd plugin.
236
+ */
237
+ $( '.js-ocdi-install-coming-soon-plugin' ).on( 'click', function( event ) {
238
+ event.preventDefault();
239
+
240
+ var $button = $( this ),
241
+ slug = 'coming-soon';
242
+
243
+ if ( $button.hasClass( 'button-disabled' ) ) {
244
+ return false;
245
+ }
246
+
247
+ $button.addClass( 'button-disabled' );
248
+
249
+ $.ajax({
250
+ method: 'POST',
251
+ url: ocdi.ajax_url,
252
+ data: {
253
+ action: 'ocdi_install_plugin',
254
+ security: ocdi.ajax_nonce,
255
+ slug: slug,
256
+ },
257
+ beforeSend: function() {
258
+ $button.text( ocdi.texts.installing );
259
+ }
260
+ })
261
+ .done( function( response ) {
262
+ if ( response.success ) {
263
+ $button.text( ocdi.texts.installed );
264
+ } else {
265
+ alert( response.data );
266
+ $button.text( ocdi.texts.install_plugin );
267
+ $button.removeClass( 'button-disabled' );
268
+ }
269
+ })
270
+ .fail( function( error ) {
271
+ alert( error.statusText + ' (' + error.status + ')' );
272
+ $button.removeClass( 'button-disabled' );
273
+ })
274
+ } );
275
+
276
+ /**
277
+ * Update "plugins to be installed" notice on Create Demo Content page.
278
+ */
279
+ $( document ).on( 'change', '.ocdi--create-content .content-item input[type=checkbox]', function( event ) {
280
+ var $checkboxes = $( '.ocdi--create-content .content-item input[type=checkbox]' ),
281
+ $missingPluginNotice = $( '.js-ocdi-create-content-install-plugins-notice' ),
282
+ missingPlugins = [];
283
+
284
+ $checkboxes.each( function() {
285
+ var $checkbox = $( this );
286
+ if ( $checkbox.is( ':checked' ) ) {
287
+ missingPlugins = missingPlugins.concat( getMissingPluginNamesFromImportContentPageItem( $checkbox.data( 'plugins' ) ) );
288
+ }
289
+ } );
290
+
291
+ missingPlugins = missingPlugins.filter( onlyUnique ).join( ', ' );
292
+
293
+ if ( missingPlugins.length > 0 ) {
294
+ $missingPluginNotice.find( '.js-ocdi-create-content-install-plugins-list' ).text( missingPlugins );
295
+ $missingPluginNotice.show();
296
+ } else {
297
+ $missingPluginNotice.find( '.js-ocdi-create-content-install-plugins-list' ).text( '' );
298
+ $missingPluginNotice.hide();
299
+ }
300
+ } );
301
 
302
 
303
  /**
406
  * ---------------------------------------
407
  */
408
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
409
  /**
410
  * The main AJAX call, which executes the import process.
411
  *
419
  contentType: false,
420
  processData: false,
421
  beforeSend: function() {
422
+ $( '.js-ocdi-install-plugins-content' ).hide();
423
+ $( '.js-ocdi-importing' ).show();
424
  }
425
  })
426
  .done( function( response ) {
448
  ajaxCall( newData );
449
  }
450
  else if ( 'undefined' !== typeof response.message ) {
451
+ $( '.js-ocdi-ajax-response' ).append( response.message );
452
+
453
+ if ( 'undefined' !== typeof response.title ) {
454
+ $( '.js-ocdi-ajax-response-title' ).html( response.title );
455
+ }
456
+
457
+ if ( 'undefined' !== typeof response.subtitle ) {
458
+ $( '.js-ocdi-ajax-response-subtitle' ).html( response.subtitle );
459
+ }
460
+
461
+ $( '.js-ocdi-importing' ).hide();
462
+ $( '.js-ocdi-imported' ).show();
463
 
464
  // Trigger custom event, when OCDI import is complete.
465
  $( document ).trigger( 'ocdiImportComplete' );
466
  }
467
  else {
468
+ $( '.js-ocdi-ajax-response' ).append( '<img class="ocdi-imported-content-imported ocdi-imported-content-imported--error" src="' + ocdi.plugin_url + 'assets/images/error.svg" alt="' + ocdi.texts.import_failed + '"><p>' + response + '</p>' );
469
+ $( '.js-ocdi-ajax-response-title' ).html( ocdi.texts.import_failed );
470
+ $( '.js-ocdi-ajax-response-subtitle' ).html( '<p>' + ocdi.texts.import_failed_subtitle + '</p>' );
471
+ $( '.js-ocdi-importing' ).hide();
472
+ $( '.js-ocdi-imported' ).show();
473
  }
474
  })
475
  .fail( function( error ) {
476
+ $( '.js-ocdi-ajax-response' ).append( '<img class="ocdi-imported-content-imported ocdi-imported-content-imported--error" src="' + ocdi.plugin_url + 'assets/images/error.svg" alt="' + ocdi.texts.import_failed + '"><p>Error: ' + error.statusText + ' (' + error.status + ')' + '</p>' );
477
+ $( '.js-ocdi-ajax-response-title' ).html( ocdi.texts.import_failed );
478
+ $( '.js-ocdi-ajax-response-subtitle' ).html( '<p>' + ocdi.texts.import_failed_subtitle + '</p>' );
479
+ $( '.js-ocdi-importing' ).hide();
480
+ $( '.js-ocdi-imported' ).show();
481
  });
482
  }
483
+
484
+ /**
485
+ * Get the missing required plugin names for the Create Demo Content "plugins to install" notice.
486
+ *
487
+ * @param requiredPluginSlugs
488
+ *
489
+ * @returns {[]}
490
+ */
491
+ function getMissingPluginNamesFromImportContentPageItem( requiredPluginSlugs ) {
492
+ var requiredPluginSlugs = requiredPluginSlugs.split( ',' ),
493
+ pluginList = [];
494
+
495
+ ocdi.missing_plugins.forEach( function( plugin ) {
496
+ if ( requiredPluginSlugs.indexOf( plugin.slug ) !== -1 ) {
497
+ pluginList.push( plugin.name )
498
+ }
499
+ } );
500
+
501
+ return pluginList;
502
+ }
503
+
504
+ /**
505
+ * Unique array helper function.
506
+ *
507
+ * @param value
508
+ * @param index
509
+ * @param self
510
+ *
511
+ * @returns {boolean}
512
+ */
513
+ function onlyUnique( value, index, self ) {
514
+ return self.indexOf( value ) === index;
515
+ }
516
+
517
+ /**
518
+ * The AJAX call for installing selected plugins.
519
+ *
520
+ * @param {Object[]} plugins The array of plugin objects with name and value pairs.
521
+ * @param {int} counter The index of the plugin to import from the list above.
522
+ * @param {Object} $button jQuery object of the submit button.
523
+ * @param {bool} runImport If the import should be run after plugin installation.
524
+ * @param {bool} pluginInstallFailed If there were any failed plugin installs.
525
+ */
526
+ function installPluginsAjaxCall( plugins, counter, $button , runImport, pluginInstallFailed ) {
527
+ var plugin = plugins[ counter ],
528
+ slug = plugin.name;
529
+
530
+ $.ajax({
531
+ method: 'POST',
532
+ url: ocdi.ajax_url,
533
+ data: {
534
+ action: 'ocdi_install_plugin',
535
+ security: ocdi.ajax_nonce,
536
+ slug: slug,
537
+ },
538
+ beforeSend: function() {
539
+ var $currentPluginItem = $( '.plugin-item-' + slug );
540
+ $currentPluginItem.find( '.js-ocdi-plugin-item-info' ).empty();
541
+ $currentPluginItem.find( '.js-ocdi-plugin-item-error' ).empty();
542
+ $currentPluginItem.addClass( 'plugin-item--loading' );
543
+ }
544
+ })
545
+ .done( function( response ) {
546
+ var $currentPluginItem = $( '.plugin-item-' + slug );
547
+
548
+ $currentPluginItem.removeClass( 'plugin-item--loading' );
549
+
550
+ if ( response.success ) {
551
+ $currentPluginItem.addClass( 'plugin-item--active' );
552
+ $currentPluginItem.find( 'input[type=checkbox]' ).prop( 'disabled', true );
553
+ } else {
554
+
555
+ if ( -1 === response.data.indexOf( '<p>' ) ) {
556
+ response.data = '<p>' + response.data + '</p>';
557
+ }
558
+
559
+ $currentPluginItem.find( '.js-ocdi-plugin-item-error' ).append( response.data );
560
+ $currentPluginItem.find( 'input[type=checkbox]' ).prop( 'checked', false );
561
+ pluginInstallFailed = true;
562
+ }
563
+ })
564
+ .fail( function( error ) {
565
+ var $currentPluginItem = $( '.plugin-item-' + slug );
566
+ $currentPluginItem.removeClass( 'plugin-item--loading' );
567
+ $currentPluginItem.find( '.js-ocdi-plugin-item-error' ).append( '<p>' + error.statusText + ' (' + error.status + ')</p>' );
568
+ pluginInstallFailed = true;
569
+ })
570
+ .always( function() {
571
+ counter++;
572
+
573
+ if ( counter === plugins.length ) {
574
+ if ( runImport ) {
575
+ if ( ! pluginInstallFailed ) {
576
+ startImport( getUrlParameter( 'import' ) );
577
+ } else {
578
+ alert( ocdi.texts.plugin_install_failed );
579
+ }
580
+ }
581
+
582
+ $button.removeClass( 'ocdi-button-disabled' );
583
+ } else {
584
+ installPluginsAjaxCall( plugins, counter, $button, runImport, pluginInstallFailed );
585
+ }
586
+ } );
587
+ }
588
+
589
+ /**
590
+ * The AJAX call for importing content on the create demo content page.
591
+ *
592
+ * @param {Object[]} items The array of content item objects with name and value pairs.
593
+ * @param {int} counter The index of the plugin to import from the list above.
594
+ * @param {Object} $button jQuery object of the submit button.
595
+ */
596
+ function createDemoContentAjaxCall( items, counter, $button ) {
597
+ var item = items[ counter ],
598
+ slug = item.name;
599
+
600
+ $.ajax({
601
+ method: 'POST',
602
+ url: ocdi.ajax_url,
603
+ data: {
604
+ action: 'ocdi_import_created_content',
605
+ security: ocdi.ajax_nonce,
606
+ slug: slug,
607
+ },
608
+ beforeSend: function() {
609
+ var $currentItem = $( '.content-item-' + slug );
610
+ $currentItem.find( '.js-ocdi-content-item-info' ).empty();
611
+ $currentItem.find( '.js-ocdi-content-item-error' ).empty();
612
+ $currentItem.addClass( 'content-item--loading' );
613
+ }
614
+ })
615
+ .done( function( response ) {
616
+ if ( response.data && response.data.refresh ) {
617
+ createDemoContentAjaxCall( items, counter, $button );
618
+ return;
619
+ }
620
+
621
+ var $currentItem = $( '.content-item-' + slug );
622
+
623
+ $currentItem.removeClass( 'content-item--loading' );
624
+
625
+ if ( response.success ) {
626
+ $currentItem.find( '.js-ocdi-content-item-info' ).append( '<p>' + ocdi.texts.successful_import + '</p>' );
627
+ } else {
628
+ $currentItem.find( '.js-ocdi-content-item-error' ).append( '<p>' + response.data + '</p>' );
629
+ }
630
+ })
631
+ .fail( function( error ) {
632
+ var $currentItem = $( '.content-item-' + slug );
633
+ $currentItem.removeClass( 'content-item--loading' );
634
+ $currentItem.find( '.js-ocdi-content-item-error' ).append( '<p>' + error.statusText + ' (' + error.status + ')</p>' );
635
+ })
636
+ .always( function( response ) {
637
+ if ( response.data && response.data.refresh ) {
638
+ return;
639
+ }
640
+
641
+ counter++;
642
+
643
+ if ( counter === items.length ) {
644
+ $button.removeClass( 'ocdi-button-disabled' );
645
+ } else {
646
+ createDemoContentAjaxCall( items, counter, $button );
647
+ }
648
+ } );
649
+ }
650
+
651
+
652
+ /**
653
+ * Get the parameter value from the URL.
654
+ *
655
+ * @param param
656
+ * @returns {boolean|string}
657
+ */
658
+ function getUrlParameter( param ) {
659
+ var sPageURL = window.location.search.substring( 1 ),
660
+ sURLVariables = sPageURL.split( '&' ),
661
+ sParameterName,
662
+ i;
663
+
664
+ for ( i = 0; i < sURLVariables.length; i++ ) {
665
+ sParameterName = sURLVariables[ i ].split( '=' );
666
+
667
+ if ( sParameterName[0] === param ) {
668
+ return typeof sParameterName[1] === undefined ? true : decodeURIComponent( sParameterName[1] );
669
+ }
670
+ }
671
+
672
+ return false;
673
+ }
674
+
675
+ /**
676
+ * Run the main import with a selected predefined demo or with manual files (selected = false).
677
+ *
678
+ * Files for the manual import have already been uploaded in the '.js-ocdi-start-manual-import' event above.
679
+ */
680
+ function startImport( selected ) {
681
+ // Prepare data for the AJAX call
682
+ var data = new FormData();
683
+ data.append( 'action', 'ocdi_import_demo_data' );
684
+ data.append( 'security', ocdi.ajax_nonce );
685
+
686
+ if ( selected ) {
687
+ data.append( 'selected', selected );
688
+ }
689
+
690
+ // AJAX call to import everything (content, widgets, before/after setup)
691
+ ajaxCall( data );
692
+ }
693
  } );
assets/js/main.min.js ADDED
@@ -0,0 +1 @@
 
1
+ jQuery(function(d){"use strict";function i(i){var t,n=jQuery.Deferred();return(t=jQuery.Deferred(),o.addClass(e),setTimeout(function(){o.removeClass(e).hide(),t.resolve()},200),t.promise()).done(function(){var t,e;e=n,t="all"!==(t=i)&&t?'[data-categories*="'+t+'"]':"div",o.filter(t).show().addClass("ocdi-is-fadein"),setTimeout(function(){o.removeClass("ocdi-is-fadein"),e.resolve()},200)}),n}var o,e;function a(t,e,i){return i.indexOf(t)===e}function s(t,e,i,n,o){var a=t[e].name;d.ajax({method:"POST",url:ocdi.ajax_url,data:{action:"ocdi_install_plugin",security:ocdi.ajax_nonce,slug:a},beforeSend:function(){var t=d(".plugin-item-"+a);t.find(".js-ocdi-plugin-item-info").empty(),t.find(".js-ocdi-plugin-item-error").empty(),t.addClass("plugin-item--loading")}}).done(function(t){var e=d(".plugin-item-"+a);e.removeClass("plugin-item--loading"),t.success?(e.addClass("plugin-item--active"),e.find("input[type=checkbox]").prop("disabled",!0)):(-1===t.data.indexOf("<p>")&&(t.data="<p>"+t.data+"</p>"),e.find(".js-ocdi-plugin-item-error").append(t.data),e.find("input[type=checkbox]").prop("checked",!1),o=!0)}).fail(function(t){var e=d(".plugin-item-"+a);e.removeClass("plugin-item--loading"),e.find(".js-ocdi-plugin-item-error").append("<p>"+t.statusText+" ("+t.status+")</p>"),o=!0}).always(function(){++e===t.length?(n&&(o?alert(ocdi.texts.plugin_install_failed):l(c("import"))),i.removeClass("ocdi-button-disabled")):s(t,e,i,n,o)})}function c(t){for(var e,i=window.location.search.substring(1).split("&"),n=0;n<i.length;n++)if((e=i[n].split("="))[0]===t)return e[1],decodeURIComponent(e[1]);return!1}function l(t){var e=new FormData;e.append("action","ocdi_import_demo_data"),e.append("security",ocdi.ajax_nonce),t&&e.append("selected",t),function i(n){d.ajax({method:"POST",url:ocdi.ajax_url,data:n,contentType:!1,processData:!1,beforeSend:function(){d(".js-ocdi-install-plugins-content").hide(),d(".js-ocdi-importing").show()}}).done(function(t){var e;void 0!==t.status&&"newAJAX"===t.status?i(n):void 0!==t.status&&"customizerAJAX"===t.status?((e=new FormData).append("action","ocdi_import_customizer_data"),e.append("security",ocdi.ajax_nonce),!0===ocdi.wp_customize_on&&e.append("wp_customize","on"),i(e)):void 0!==t.status&&"afterAllImportAJAX"===t.status?((e=new FormData).append("action","ocdi_after_import_data"),e.append("security",ocdi.ajax_nonce),i(e)):void 0!==t.message?(d(".js-ocdi-ajax-response").append(t.message),void 0!==t.title&&d(".js-ocdi-ajax-response-title").html(t.title),void 0!==t.subtitle&&d(".js-ocdi-ajax-response-subtitle").html(t.subtitle),d(".js-ocdi-importing").hide(),d(".js-ocdi-imported").show(),d(document).trigger("ocdiImportComplete")):(d(".js-ocdi-ajax-response").append('<img class="ocdi-imported-content-imported ocdi-imported-content-imported--error" src="'+ocdi.plugin_url+'assets/images/error.svg" alt="'+ocdi.texts.import_failed+'"><p>'+t+"</p>"),d(".js-ocdi-ajax-response-title").html(ocdi.texts.import_failed),d(".js-ocdi-ajax-response-subtitle").html("<p>"+ocdi.texts.import_failed_subtitle+"</p>"),d(".js-ocdi-importing").hide(),d(".js-ocdi-imported").show())}).fail(function(t){d(".js-ocdi-ajax-response").append('<img class="ocdi-imported-content-imported ocdi-imported-content-imported--error" src="'+ocdi.plugin_url+'assets/images/error.svg" alt="'+ocdi.texts.import_failed+'"><p>Error: '+t.statusText+" ("+t.status+")</p>"),d(".js-ocdi-ajax-response-title").html(ocdi.texts.import_failed),d(".js-ocdi-ajax-response-subtitle").html("<p>"+ocdi.texts.import_failed_subtitle+"</p>"),d(".js-ocdi-importing").hide(),d(".js-ocdi-imported").show()})}(e)}d(".js-ocdi-notice-wrapper").appendTo(".js-ocdi-admin-notices-container"),d(".js-ocdi-auto-start-manual-import").length&&l(!1),d(".js-ocdi-start-manual-import").on("click",function(t){t.preventDefault();var e=d(this);if(e.hasClass("ocdi-button-disabled"))return!1;t=new FormData;if(t.append("action","ocdi_upload_manual_import_files"),t.append("security",ocdi.ajax_nonce),d("#ocdi__content-file-upload").length&&d("#ocdi__content-file-upload").get(0).files.length){var i=d("#ocdi__content-file-upload")[0].files[0],n=i.name.split(".").pop();if(-1===["xml"].indexOf(n.toLowerCase()))return alert(ocdi.texts.content_filetype_warn),!1;t.append("content_file",i)}if(d("#ocdi__widget-file-upload").length&&d("#ocdi__widget-file-upload").get(0).files.length){n=d("#ocdi__widget-file-upload")[0].files[0],i=n.name.split(".").pop();if(-1===["json","wie"].indexOf(i.toLowerCase()))return alert(ocdi.texts.widgets_filetype_warn),!1;t.append("widget_file",n)}if(d("#ocdi__customizer-file-upload").length&&d("#ocdi__customizer-file-upload").get(0).files.length){var o=d("#ocdi__customizer-file-upload")[0].files[0],a=o.name.split(".").pop();if(-1===["dat"].indexOf(a.toLowerCase()))return alert(ocdi.texts.customizer_filetype_warn),!1;t.append("customizer_file",o)}if(d("#ocdi__redux-file-upload").length&&d("#ocdi__redux-file-upload").get(0).files.length){a=d("#ocdi__redux-file-upload")[0].files[0],o=a.name.split(".").pop();if(-1===["json"].indexOf(o.toLowerCase()))return alert(ocdi.texts.redux_filetype_warn),!1;t.append("redux_file",a),t.append("redux_option_name",d("#ocdi__redux-option-name").val())}e.addClass("ocdi-button-disabled"),d.ajax({method:"POST",url:ocdi.ajax_url,data:t,contentType:!1,processData:!1}).done(function(t){t.success?window.location.href=ocdi.import_url:(alert(t.data),e.removeClass("ocdi-button-disabled"))}).fail(function(t){alert(t.statusText+" ("+t.status+")"),e.removeClass("ocdi-button-disabled")})}),d(".js-ocdi-cancel-manual-import").on("click",function(){d(".ocdi__file-upload-container-items input[type=file]").each(function(){d(this).val("").trigger("change")})}),d(document).on("change",".ocdi__file-upload-container-items input[type=file]",function(){var t=d(this),e=t.siblings("label"),i=!1;this.files&&0<this.files.length?(t.removeClass("ocdi-hide-input").blur(),e.hide()):(t.addClass("ocdi-hide-input"),e.show()),d(".ocdi__file-upload-container-items input[type=file]").each(function(){this.files&&0<this.files.length&&(i=!0)}),d(".js-ocdi-start-manual-import").prop("disabled",!i),d(".js-ocdi-cancel-manual-import").prop("disabled",!i)}),d(".ocdi-install-plugins-content-content .plugin-item.plugin-item--required input[type=checkbox]").on("click",function(t){return t.preventDefault(),!1}),d(".js-ocdi-install-plugins").on("click",function(t){t.preventDefault();var e=d(this);if(e.hasClass("ocdi-button-disabled"))return!1;t=d(".ocdi-install-plugins-content-content .plugin-item input[type=checkbox]").serializeArray();if(0===t.length)return!1;e.addClass("ocdi-button-disabled"),s(t,0,e,!1,!1)}),d(".js-ocdi-install-plugins-before-import").on("click",function(t){t.preventDefault();var e=d(this);if(e.hasClass("ocdi-button-disabled"))return!1;t=d(".ocdi-install-plugins-content-content .plugin-item:not(.plugin-item--disabled) input[type=checkbox]").serializeArray();if(0===t.length)return l(c("import")),!1;e.addClass("ocdi-button-disabled"),s(t,0,e,!0,!1)}),d(".js-ocdi-create-content").on("click",function(t){t.preventDefault();var e=d(this);if(e.hasClass("ocdi-button-disabled"))return!1;t=d(".ocdi-create-content-content .content-item input[type=checkbox]").serializeArray();if(0===t.length)return!1;e.addClass("ocdi-button-disabled"),function i(n,o,a){var t=n[o],s=t.name;d.ajax({method:"POST",url:ocdi.ajax_url,data:{action:"ocdi_import_created_content",security:ocdi.ajax_nonce,slug:s},beforeSend:function(){var t=d(".content-item-"+s);t.find(".js-ocdi-content-item-info").empty(),t.find(".js-ocdi-content-item-error").empty(),t.addClass("content-item--loading")}}).done(function(t){var e;t.data&&t.data.refresh?i(n,o,a):((e=d(".content-item-"+s)).removeClass("content-item--loading"),t.success?e.find(".js-ocdi-content-item-info").append("<p>"+ocdi.texts.successful_import+"</p>"):e.find(".js-ocdi-content-item-error").append("<p>"+t.data+"</p>"))}).fail(function(t){var e=d(".content-item-"+s);e.removeClass("content-item--loading"),e.find(".js-ocdi-content-item-error").append("<p>"+t.statusText+" ("+t.status+")</p>")}).always(function(t){t.data&&t.data.refresh||(++o===n.length?a.removeClass("ocdi-button-disabled"):i(n,o,a))})}(t,0,e)}),d(".js-ocdi-install-coming-soon-plugin").on("click",function(t){t.preventDefault();var e=d(this);if(e.hasClass("button-disabled"))return!1;e.addClass("button-disabled"),d.ajax({method:"POST",url:ocdi.ajax_url,data:{action:"ocdi_install_plugin",security:ocdi.ajax_nonce,slug:"coming-soon"},beforeSend:function(){e.text(ocdi.texts.installing)}}).done(function(t){t.success?e.text(ocdi.texts.installed):(alert(t.data),e.text(ocdi.texts.install_plugin),e.removeClass("button-disabled"))}).fail(function(t){alert(t.statusText+" ("+t.status+")"),e.removeClass("button-disabled")})}),d(document).on("change",".ocdi--create-content .content-item input[type=checkbox]",function(t){var e=d(".ocdi--create-content .content-item input[type=checkbox]"),i=d(".js-ocdi-create-content-install-plugins-notice"),n=[];e.each(function(){var e,i,t=d(this);t.is(":checked")&&(n=n.concat((e=(e=t.data("plugins")).split(","),i=[],ocdi.missing_plugins.forEach(function(t){-1!==e.indexOf(t.slug)&&i.push(t.name)}),i)))}),0<(n=n.filter(a).join(", ")).length?(i.find(".js-ocdi-create-content-install-plugins-list").text(n),i.show()):(i.find(".js-ocdi-create-content-install-plugins-list").text(""),i.hide())}),o=d(".js-ocdi-gl-item-container").find(".js-ocdi-gl-item"),e="ocdi-is-fadeout",d(".js-ocdi-nav-link").on("click",function(t){t.preventDefault(),d(this).parent().siblings().removeClass("active"),d(this).parent().addClass("active");var t=this.hash.slice(1),e=d(".js-ocdi-gl-item-container");e.css("min-width",e.outerHeight()),i(t).done(function(){e.removeAttr("style")})}),d(".js-ocdi-gl-search").on("keyup",function(t){0<d(this).val().length?(d(".js-ocdi-gl-item-container").find(".js-ocdi-gl-item").hide(),d(".js-ocdi-gl-item-container").find('.js-ocdi-gl-item[data-name*="'+d(this).val().toLowerCase()+'"]').show()):d(".js-ocdi-gl-item-container").find(".js-ocdi-gl-item").show()})});
inc/CreateDemoContent/DemoContentCreator.php ADDED
@@ -0,0 +1,436 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Create Demo Content - responsible for importing pre-created demo content.
4
+ *
5
+ * @package ocdi
6
+ */
7
+
8
+ namespace OCDI\CreateDemoContent;
9
+
10
+ use OCDI\Helpers;
11
+ use OCDI\Importer;
12
+ use OCDI\Logger;
13
+ use OCDI\OneClickDemoImport;
14
+ use OCDI\PluginInstaller;
15
+
16
+ class DemoContentCreator {
17
+
18
+ /**
19
+ * Holds all pre-created content.
20
+ *
21
+ * @var array
22
+ */
23
+ private $content;
24
+
25
+ /**
26
+ * Initialize everything needed for the demo content creator class to function properly.
27
+ */
28
+ public function init() {
29
+ $this->set_content();
30
+
31
+ add_action( 'ocdi/demo_content_creator_after_import', array( $this, 'after_import_wpforms_setup' ) );
32
+
33
+ add_action( 'wp_ajax_ocdi_import_created_content', array( $this, 'import_created_content' ) );
34
+ }
35
+
36
+ /**
37
+ * Get all default pre-created demo content data.
38
+ *
39
+ * @return array[]
40
+ */
41
+ public function get_default_content() {
42
+ return array(
43
+ array(
44
+ 'slug' => 'about-page',
45
+ 'file' => OCDI_PATH . 'assets/demo-content/about-page.xml',
46
+ 'name' => esc_html__( 'About Us', 'one-click-demo-import' ),
47
+ 'description' => esc_html__( 'Introduce yourself and your business with a clean layout to reassure your leads and customers.', 'one-click-demo-import' ),
48
+ 'required_plugins' => array(),
49
+ ),
50
+ array(
51
+ 'slug' => 'book-now-page',
52
+ 'file' => OCDI_PATH . 'assets/demo-content/book-now-page.xml',
53
+ 'name' => esc_html__( 'Book Now', 'one-click-demo-import' ),
54
+ 'description' => esc_html__( 'Expand your reach by accepting appointments online plus detailing your services and staff.', 'one-click-demo-import' ),
55
+ 'required_plugins' => array(),
56
+ ),
57
+ array(
58
+ 'slug' => 'contact-page',
59
+ 'file' => OCDI_PATH . 'assets/demo-content/contact-page.xml',
60
+ 'name' => esc_html__( 'Contact Us', 'one-click-demo-import' ),
61
+ 'description' => esc_html__( 'Make it easy to get in touch with you through a completely customizable built-in contact form.', 'one-click-demo-import' ),
62
+ 'required_plugins' => array( 'wpforms-lite' ),
63
+ ),
64
+ array(
65
+ 'slug' => 'faq-page',
66
+ 'file' => OCDI_PATH . 'assets/demo-content/faq-page.xml',
67
+ 'name' => esc_html__( 'FAQ', 'one-click-demo-import' ),
68
+ 'description' => esc_html__( 'Lighten the load on your support team or your inbox by addressing frequently asked questions.', 'one-click-demo-import' ),
69
+ 'required_plugins' => array(),
70
+ ),
71
+ array(
72
+ 'slug' => 'meet-the-team-page',
73
+ 'file' => OCDI_PATH . 'assets/demo-content/meet-the-team-page.xml',
74
+ 'name' => esc_html__( 'Meet the Team', 'one-click-demo-import' ),
75
+ 'description' => esc_html__( 'Help potential clients feel more at ease by showing off your hard-working and trustworthy team.', 'one-click-demo-import' ),
76
+ 'required_plugins' => array( 'wpforms-lite' ),
77
+ ),
78
+ array(
79
+ 'slug' => 'menu-page',
80
+ 'file' => OCDI_PATH . 'assets/demo-content/menu-page.xml',
81
+ 'name' => esc_html__( 'Menu', 'one-click-demo-import' ),
82
+ 'description' => esc_html__( 'Display your delicious dishes online to entice website visitors to become restaurant customers.', 'one-click-demo-import' ),
83
+ 'required_plugins' => array(),
84
+ ),
85
+ array(
86
+ 'slug' => 'portfolio-page',
87
+ 'file' => OCDI_PATH . 'assets/demo-content/portfolio-page.xml',
88
+ 'name' => esc_html__( 'Portfolio', 'one-click-demo-import' ),
89
+ 'description' => esc_html__( 'Impress leads by visually showcasing your achievements, case studies, and past work.', 'one-click-demo-import' ),
90
+ 'required_plugins' => array(),
91
+ ),
92
+ array(
93
+ 'slug' => 'services-page',
94
+ 'file' => OCDI_PATH . 'assets/demo-content/services-page.xml',
95
+ 'name' => esc_html__( 'Services', 'one-click-demo-import' ),
96
+ 'description' => esc_html__( 'Let the world know your services or products\' cost and features in an organized pricing table.', 'one-click-demo-import' ),
97
+ 'required_plugins' => array(),
98
+ ),
99
+ array(
100
+ 'slug' => 'shop-page',
101
+ 'file' => OCDI_PATH . 'assets/demo-content/shop-page.xml',
102
+ 'name' => esc_html__( 'Shop', 'one-click-demo-import' ),
103
+ 'description' => esc_html__( 'Categorize and sell your products online while displaying reviews from happy customers.', 'one-click-demo-import' ),
104
+ 'required_plugins' => array(),
105
+ ),
106
+ array(
107
+ 'file' => OCDI_PATH . 'assets/demo-content/testimonials-page.xml',
108
+ 'slug' => 'testimonials-page',
109
+ 'name' => esc_html__( 'Testimonials', 'one-click-demo-import' ),
110
+ 'description' => esc_html__( 'Tap into the power of social proof by displaying real-life testimonials on your website.', 'one-click-demo-import' ),
111
+ 'required_plugins' => array(),
112
+ ),
113
+ );
114
+ }
115
+
116
+ /**
117
+ * Set all pre-created demo pages.
118
+ * With our pre-created pages being set as defaults.
119
+ */
120
+ public function set_content() {
121
+ $all_content = array_merge( $this->get_default_content(), Helpers::apply_filters( 'ocdi/register_created_demo_content', array() ) );
122
+
123
+ $this->content = array_filter(
124
+ $all_content,
125
+ function ( $item ) {
126
+ if ( empty( $item['slug'] ) || empty( $item['name'] ) || empty( $item['file'] ) ) {
127
+ return false;
128
+ }
129
+
130
+ return true;
131
+ }
132
+ );
133
+ }
134
+
135
+ public function after_import_wpforms_setup( $slug ) {
136
+
137
+ // Perform WPForms setup only if this is a contact or the meet the team page import.
138
+ if ( ! in_array( $slug, array( 'contact-page', 'meet-the-team-page' ), true ) ) {
139
+ return;
140
+ }
141
+
142
+ // Is WPForms plugin active?
143
+ $plugin_installer = new PluginInstaller();
144
+
145
+ if (
146
+ ! (
147
+ $plugin_installer->is_plugin_active( 'wpforms-lite' ) ||
148
+ $plugin_installer->is_plugin_active( 'wpforms' )
149
+ )
150
+ ) {
151
+ wp_send_json_error( esc_html__( 'Could not complete the import process for this page. Required WPForms plugin is not activated.', 'one-click-demo-import' ) );
152
+ }
153
+
154
+ if ( ! function_exists( 'wpforms' ) ) {
155
+ wp_send_json_error( esc_html__( 'Could not complete the import process for this page. Required WPForms plugin doesn\'t exist.', 'one-click-demo-import' ) );
156
+ }
157
+
158
+ $form_title = ( $slug === 'meet-the-team-page' ) ? esc_html__( 'Meet the Team Form', 'one-click-demo-import' ) : esc_html__( 'Contact Form', 'one-click-demo-import' );
159
+ $form_id = $this->create_wpforms_form( $form_title );
160
+
161
+ if ( empty( $form_id ) ) {
162
+ wp_send_json_error( esc_html__( 'Could not complete the import process for this page. Something went wrong while creating a WPForms contact form.', 'one-click-demo-import' ) );
163
+ }
164
+
165
+ $update_page = $this->update_contact_page_form_id( $form_id );
166
+
167
+ if ( empty( $update_page ) ) {
168
+ wp_send_json_error( esc_html__( 'Could not complete the import process for this page. Could not update the imported page with correct WPForms form ID.', 'one-click-demo-import' ) );
169
+ }
170
+ }
171
+
172
+ /**
173
+ * AJAX callback for importing the pre-created demo content.
174
+ * Has to contain the `slug` POST parameter.
175
+ */
176
+ public function import_created_content() {
177
+ check_ajax_referer( 'ocdi-ajax-verification', 'security' );
178
+
179
+ // Check if user has the WP capability to import content.
180
+ if ( ! current_user_can( 'import' ) ) {
181
+ wp_send_json_error( esc_html__( 'Could not import this page. You don\'t have permission to import content.', 'one-click-demo-import' ) );
182
+ }
183
+
184
+ $slug = ! empty( $_POST['slug'] ) ? sanitize_key( wp_unslash( $_POST['slug'] ) ) : '';
185
+
186
+ if ( empty( $slug ) ) {
187
+ wp_send_json_error( esc_html__( 'Could not import this page. Page slug is missing.', 'one-click-demo-import' ) );
188
+ }
189
+
190
+ // Install required plugins.
191
+ $content_item = $this->get_content_data( $slug );
192
+ $ocdi = OneClickDemoImport::get_instance();
193
+ $refresh = false;
194
+
195
+ if ( ! empty( $content_item['required_plugins'] ) ) {
196
+ foreach ( $content_item['required_plugins'] as $plugin_slug ) {
197
+ if ( ! $ocdi->plugin_installer->is_plugin_active( $plugin_slug ) ) {
198
+ $ocdi->plugin_installer->install_plugin( $plugin_slug );
199
+ $refresh = true;
200
+ }
201
+ }
202
+ }
203
+
204
+ if ( $refresh ) {
205
+ wp_send_json_success( [ 'refresh' => true ] );
206
+ }
207
+
208
+ // Import the pre-created page.
209
+ $error = $this->import_content( $slug );
210
+
211
+ if ( ! empty( $error ) ) {
212
+ wp_send_json_error(
213
+ sprintf( /* translators: %s - The actual error message. */
214
+ esc_html__( 'An error occured while importing this page: %s', 'one-click-demo-import' ),
215
+ esc_html( $error )
216
+ )
217
+ );
218
+ }
219
+
220
+ wp_send_json_success();
221
+ }
222
+
223
+ /**
224
+ * Get the data of a registered pre-created content via the slug.
225
+ *
226
+ * @param string $slug The pre-created content slug.
227
+ *
228
+ * @return array
229
+ */
230
+ public function get_content_data( $slug ) {
231
+ $data = [];
232
+
233
+ foreach ( $this->content as $item ) {
234
+ if ( $item['slug'] === $slug ) {
235
+ $data = $item;
236
+ break;
237
+ }
238
+ }
239
+
240
+ return $data;
241
+ }
242
+
243
+ /**
244
+ * Import the content for the selected pre-created content slug.
245
+ *
246
+ * @param string $slug The pre-created content slug.
247
+ *
248
+ * @return string
249
+ */
250
+ private function import_content( $slug ) {
251
+ $import_file = $this->get_import_file( $slug );
252
+
253
+ if ( empty( $import_file ) ) {
254
+ return esc_html__( 'The demo content import file is missing.', 'one-click-demo-import' );
255
+ }
256
+
257
+ // Change the date to allow same page import multiple times.
258
+ add_filter( 'wxr_importer.pre_process.post', function ( $data ) {
259
+ if ( $data['post_type'] === 'page' ) {
260
+ $data['post_date'] = date( 'Y-m-d H:i:s' );
261
+ }
262
+
263
+ return $data;
264
+ } );
265
+
266
+ // Increase PHP max execution time.
267
+ if ( strpos( ini_get( 'disable_functions' ), 'set_time_limit' ) === false ) {
268
+ set_time_limit( Helpers::apply_filters( 'ocdi/set_time_limit_for_demo_data_import', 300 ) );
269
+ }
270
+
271
+ // Disable import of authors.
272
+ add_filter( 'wxr_importer.pre_process.user', '__return_false' );
273
+
274
+ // Configure logger instance and set it to the importer.
275
+ $logger = new Logger();
276
+ $logger->min_level = 'warning';
277
+
278
+ // Create importer instance with proper parameters.
279
+ $importer = new Importer(
280
+ array(
281
+ 'fetch_attachments' => true,
282
+ 'aggressive_url_search' => true,
283
+ 'prefill_existing_posts' => false,
284
+ ),
285
+ $logger
286
+ );
287
+
288
+ Helpers::do_action( 'ocdi/demo_content_creater_before_import', $slug );
289
+
290
+ ob_start();
291
+ $importer->import( $import_file );
292
+ $message = ob_get_clean(); // Catch any output and clear the buffers.
293
+
294
+ Helpers::do_action( 'ocdi/demo_content_creator_after_import', $slug );
295
+
296
+ return $importer->logger->error_output;
297
+ }
298
+
299
+ /**
300
+ * Get the demo import file for the provided slug.
301
+ *
302
+ * @param string $slug The pre-created content slug.
303
+ *
304
+ * @return string
305
+ */
306
+ private function get_import_file( $slug ) {
307
+ $content_data = $this->get_content_data( $slug );
308
+
309
+ return ! empty( $content_data['file'] ) ? $content_data['file'] : '';
310
+ }
311
+
312
+ /**
313
+ * Create a WPForms contact form, for the pre-created pages.
314
+ *
315
+ * @param string $title The title of the contact form.
316
+ *
317
+ * @return false|int
318
+ */
319
+ private function create_wpforms_form( $title ) {
320
+ $form_id = wpforms()->form->add( $title );
321
+
322
+ if ( empty( $form_id ) || is_wp_error( $form_id ) ) {
323
+ return false;
324
+ }
325
+
326
+ $form_id = wpforms()->form->update(
327
+ $form_id,
328
+ array(
329
+ 'id' => $form_id,
330
+ 'field_id' => '3',
331
+ 'fields' => array(
332
+ '0' => array(
333
+ 'id' => '0',
334
+ 'type' => 'name',
335
+ 'format' => 'first-last',
336
+ 'label' => esc_html__( 'Name', 'one-click-demo-import' ),
337
+ 'required' => '1',
338
+ 'size' => 'medium',
339
+ ),
340
+ '1' => array(
341
+ 'id' => '1',
342
+ 'type' => 'email',
343
+ 'label' => esc_html__( 'Email', 'one-click-demo-import' ),
344
+ 'required' => '1',
345
+ 'size' => 'medium',
346
+ ),
347
+ '2' => array(
348
+ 'id' => '2',
349
+ 'type' => 'textarea',
350
+ 'label' => esc_html__( 'Comment or Message', 'one-click-demo-import' ),
351
+ 'description' => '',
352
+ 'required' => '1',
353
+ 'size' => 'medium',
354
+ 'placeholder' => '',
355
+ 'css' => '',
356
+ ),
357
+ ),
358
+ 'settings' => array(
359
+ 'form_title' => $title,
360
+ 'notification_enable' => '1',
361
+ 'notifications' => array(
362
+ '1' => array(
363
+ 'email' => '{admin_email}',
364
+ 'sender_address' => '{admin_email}',
365
+ 'replyto' => '{field_id="1"}',
366
+ 'message' => '{all_fields}',
367
+ ),
368
+ ),
369
+ 'confirmations' => array(
370
+ '1' => array(
371
+ 'type' => 'message',
372
+ 'message' => esc_html__( 'Thanks for contacting us! We will be in touch with you shortly.', 'one-click-demo-import' ),
373
+ 'message_scroll' => '1',
374
+ ),
375
+ ),
376
+ 'antispam' => '1',
377
+ 'submit_text' => esc_html__( 'Submit', 'one-click-demo-import' ),
378
+ 'submit_text_processing' => esc_html__( 'Sending...', 'one-click-demo-import' ),
379
+ ),
380
+ )
381
+ );
382
+
383
+ if ( empty( $form_id ) || is_wp_error( $form_id ) ) {
384
+ return false;
385
+ }
386
+
387
+ return $form_id;
388
+ }
389
+
390
+
391
+ /**
392
+ * Find the imported contact page and update the form ID.
393
+ *
394
+ * @param int $form_id The WPForms form ID.
395
+ *
396
+ * @return bool
397
+ */
398
+ private function update_contact_page_form_id( $form_id ) {
399
+ $pages = get_posts( array(
400
+ 'post_type' => 'page',
401
+ 'meta_query' => array(
402
+ array(
403
+ 'key' => 'ocdi_precreated_demo',
404
+ 'value' => 'contact-page',
405
+ ),
406
+ array(
407
+ 'key' => 'ocdi_precreated_demo_updated',
408
+ 'value' => 'no',
409
+ )
410
+ ),
411
+ ) );
412
+
413
+ if ( empty( $pages ) ) {
414
+ return false;
415
+ }
416
+
417
+ $contact_page = $pages[0];
418
+
419
+ // Replace the placeholder form ID with the newly created contact form.
420
+ $contact_page->post_content = str_replace(
421
+ '9999',
422
+ (string) $form_id,
423
+ $contact_page->post_content
424
+ );
425
+
426
+ $update_page = wp_update_post( $contact_page, true );
427
+
428
+ if ( is_wp_error( $update_page ) ) {
429
+ return false;
430
+ }
431
+
432
+ update_post_meta( $contact_page->ID, 'ocdi_precreated_demo_updated', 'yes' );
433
+
434
+ return true;
435
+ }
436
+ }
inc/CustomizerImporter.php CHANGED
@@ -34,15 +34,15 @@ class CustomizerImporter {
34
  Helpers::append_to_file(
35
  $error_message,
36
  $log_file_path,
37
- esc_html__( 'Importing customizer settings', 'pt-ocdi' )
38
  );
39
  }
40
  else {
41
  // Add this message to log file.
42
  $log_added = Helpers::append_to_file(
43
- esc_html__( 'Customizer settings import finished!', 'pt-ocdi' ),
44
  $log_file_path,
45
- esc_html__( 'Importing customizer settings' , 'pt-ocdi' )
46
  );
47
  }
48
  }
@@ -69,8 +69,8 @@ class CustomizerImporter {
69
  if ( ! file_exists( $import_file_path ) ) {
70
  return new \WP_Error(
71
  'missing_cutomizer_import_file',
72
- sprintf(
73
- esc_html__( 'Error: The customizer import file is missing! File path: %s', 'pt-ocdi' ),
74
  $import_file_path
75
  )
76
  );
@@ -90,18 +90,18 @@ class CustomizerImporter {
90
  if ( ! is_array( $data ) && ( ! isset( $data['template'] ) || ! isset( $data['mods'] ) ) ) {
91
  return new \WP_Error(
92
  'customizer_import_data_error',
93
- esc_html__( 'Error: The customizer import file is not in a correct format. Please make sure to use the correct customizer import file.', 'pt-ocdi' )
94
  );
95
  }
96
  if ( $data['template'] !== $template ) {
97
  return new \WP_Error(
98
  'customizer_import_wrong_theme',
99
- esc_html__( 'Error: The customizer import file is not suitable for current theme. You can only import customizer settings for the same theme or a child theme.', 'pt-ocdi' )
100
  );
101
  }
102
 
103
  // Import images.
104
- if ( apply_filters( 'pt-ocdi/customizer_import_images', true ) ) {
105
  $data['mods'] = self::import_customizer_images( $data['mods'] );
106
  }
107
 
@@ -124,7 +124,7 @@ class CustomizerImporter {
124
  }
125
 
126
  // Should the customizer import use the WP customize_save* hooks?
127
- $use_wp_customize_save_hooks = apply_filters( 'pt-ocdi/enable_wp_customize_save_hooks', false );
128
 
129
  if ( $use_wp_customize_save_hooks ) {
130
  do_action( 'customize_save', $wp_customize );
34
  Helpers::append_to_file(
35
  $error_message,
36
  $log_file_path,
37
+ esc_html__( 'Importing customizer settings', 'one-click-demo-import' )
38
  );
39
  }
40
  else {
41
  // Add this message to log file.
42
  $log_added = Helpers::append_to_file(
43
+ esc_html__( 'Customizer settings import finished!', 'one-click-demo-import' ),
44
  $log_file_path,
45
+ esc_html__( 'Importing customizer settings' , 'one-click-demo-import' )
46
  );
47
  }
48
  }
69
  if ( ! file_exists( $import_file_path ) ) {
70
  return new \WP_Error(
71
  'missing_cutomizer_import_file',
72
+ sprintf( /* translators: %s - file path */
73
+ esc_html__( 'Error: The customizer import file is missing! File path: %s', 'one-click-demo-import' ),
74
  $import_file_path
75
  )
76
  );
90
  if ( ! is_array( $data ) && ( ! isset( $data['template'] ) || ! isset( $data['mods'] ) ) ) {
91
  return new \WP_Error(
92
  'customizer_import_data_error',
93
+ esc_html__( 'Error: The customizer import file is not in a correct format. Please make sure to use the correct customizer import file.', 'one-click-demo-import' )
94
  );
95
  }
96
  if ( $data['template'] !== $template ) {
97
  return new \WP_Error(
98
  'customizer_import_wrong_theme',
99
+ esc_html__( 'Error: The customizer import file is not suitable for current theme. You can only import customizer settings for the same theme or a child theme.', 'one-click-demo-import' )
100
  );
101
  }
102
 
103
  // Import images.
104
+ if ( Helpers::apply_filters( 'ocdi/customizer_import_images', true ) ) {
105
  $data['mods'] = self::import_customizer_images( $data['mods'] );
106
  }
107
 
124
  }
125
 
126
  // Should the customizer import use the WP customize_save* hooks?
127
+ $use_wp_customize_save_hooks = Helpers::apply_filters( 'ocdi/enable_wp_customize_save_hooks', false );
128
 
129
  if ( $use_wp_customize_save_hooks ) {
130
  do_action( 'customize_save', $wp_customize );
inc/Downloader.php CHANGED
@@ -55,14 +55,14 @@ class Downloader {
55
  if ( empty( $url ) ) {
56
  return new \WP_Error(
57
  'missing_url',
58
- __( 'Missing URL for downloading a file!', 'pt-ocdi' )
59
  );
60
  }
61
 
62
  // Get file content from the server.
63
  $response = wp_remote_get(
64
  $url,
65
- array( 'timeout' => apply_filters( 'pt-ocdi/timeout_for_downloading_import_file', 20 ) )
66
  );
67
 
68
  // Test if the get request was not successful.
@@ -72,8 +72,8 @@ class Downloader {
72
 
73
  return new \WP_Error(
74
  'download_error',
75
- sprintf(
76
- __( 'An error occurred while fetching file from: %1$s%2$s%3$s!%4$sReason: %5$s - %6$s.', 'pt-ocdi' ),
77
  '<strong>',
78
  $url,
79
  '</strong>',
@@ -81,7 +81,7 @@ class Downloader {
81
  $response_error['error_code'],
82
  $response_error['error_message']
83
  ) . '<br>' .
84
- apply_filters( 'pt-ocdi/message_after_file_fetching_error', '' )
85
  );
86
  }
87
 
@@ -132,7 +132,7 @@ class Downloader {
132
  }
133
  else {
134
  $upload_dir = wp_upload_dir();
135
- $this->download_directory_path = apply_filters( 'pt-ocdi/upload_file_path', trailingslashit( $upload_dir['path'] ) );
136
  }
137
  }
138
  }
55
  if ( empty( $url ) ) {
56
  return new \WP_Error(
57
  'missing_url',
58
+ __( 'Missing URL for downloading a file!', 'one-click-demo-import' )
59
  );
60
  }
61
 
62
  // Get file content from the server.
63
  $response = wp_remote_get(
64
  $url,
65
+ array( 'timeout' => Helpers::apply_filters( 'ocdi/timeout_for_downloading_import_file', 20 ) )
66
  );
67
 
68
  // Test if the get request was not successful.
72
 
73
  return new \WP_Error(
74
  'download_error',
75
+ sprintf( /* translators: %1$s and %3$s - strong HTML tags, %2$s - file URL, %4$s - br HTML tag, %5$s - error code, %6$s - error message. */
76
+ __( 'An error occurred while fetching file from: %1$s%2$s%3$s!%4$sReason: %5$s - %6$s.', 'one-click-demo-import' ),
77
  '<strong>',
78
  $url,
79
  '</strong>',
81
  $response_error['error_code'],
82
  $response_error['error_message']
83
  ) . '<br>' .
84
+ Helpers::apply_filters( 'ocdi/message_after_file_fetching_error', '' )
85
  );
86
  }
87
 
132
  }
133
  else {
134
  $upload_dir = wp_upload_dir();
135
+ $this->download_directory_path = Helpers::apply_filters( 'ocdi/upload_file_path', trailingslashit( $upload_dir['path'] ) );
136
  }
137
  }
138
  }
inc/Helpers.php CHANGED
@@ -67,7 +67,7 @@ class Helpers {
67
  );
68
  $downloader = new Downloader();
69
 
70
- $import_file_info = apply_filters('pt-ocdi/pre_download_import_files', $import_file_info);
71
 
72
  // ----- Set content file path -----
73
  // Check if 'import_file_url' is not defined. That would mean a local file.
@@ -78,7 +78,7 @@ class Helpers {
78
  }
79
  else {
80
  // Set the filename string for content import file.
81
- $content_filename = apply_filters( 'pt-ocdi/downloaded_content_file_prefix', 'demo-content-import-file_' ) . self::$demo_import_start_time . apply_filters( 'pt-ocdi/downloaded_content_file_suffix_and_file_extension', '.xml' );
82
 
83
  // Download the content import file.
84
  $downloaded_files['content'] = $downloader->download_file( $import_file_info['import_file_url'], $content_filename );
@@ -93,7 +93,7 @@ class Helpers {
93
  // Get widgets file as well. If defined!
94
  if ( ! empty( $import_file_info['import_widget_file_url'] ) ) {
95
  // Set the filename string for widgets import file.
96
- $widget_filename = apply_filters( 'pt-ocdi/downloaded_widgets_file_prefix', 'demo-widgets-import-file_' ) . self::$demo_import_start_time . apply_filters( 'pt-ocdi/downloaded_widgets_file_suffix_and_file_extension', '.json' );
97
 
98
  // Download the widgets import file.
99
  $downloaded_files['widgets'] = $downloader->download_file( $import_file_info['import_widget_file_url'], $widget_filename );
@@ -113,7 +113,7 @@ class Helpers {
113
  // Get customizer import file as well. If defined!
114
  if ( ! empty( $import_file_info['import_customizer_file_url'] ) ) {
115
  // Setup filename path to save the customizer content.
116
- $customizer_filename = apply_filters( 'pt-ocdi/downloaded_customizer_file_prefix', 'demo-customizer-import-file_' ) . self::$demo_import_start_time . apply_filters( 'pt-ocdi/downloaded_customizer_file_suffix_and_file_extension', '.dat' );
117
 
118
  // Download the customizer import file.
119
  $downloaded_files['customizer'] = $downloader->download_file( $import_file_info['import_customizer_file_url'], $customizer_filename );
@@ -136,7 +136,7 @@ class Helpers {
136
 
137
  // Setup filename paths to save the Redux content.
138
  foreach ( $import_file_info['import_redux'] as $index => $redux_item ) {
139
- $redux_filename = apply_filters( 'pt-ocdi/downloaded_redux_file_prefix', 'demo-redux-import-file_' ) . $index . '-' . self::$demo_import_start_time . apply_filters( 'pt-ocdi/downloaded_redux_file_suffix_and_file_extension', '.json' );
140
 
141
  // Download the Redux import file.
142
  $file_path = $downloader->download_file( $redux_item['file_url'], $redux_filename );
@@ -195,8 +195,8 @@ class Helpers {
195
  if ( ! $wp_filesystem->put_contents( $file_path, $content ) ) {
196
  return new \WP_Error(
197
  'failed_writing_file_to_server',
198
- sprintf(
199
- __( 'An error occurred while writing file to your server! Tried to write a file to: %s%s.', 'pt-ocdi' ),
200
  '<br>',
201
  $file_path
202
  )
@@ -238,8 +238,8 @@ class Helpers {
238
  if ( ! $wp_filesystem->put_contents( $file_path, $existing_data . $separator . $content . PHP_EOL ) ) {
239
  return new \WP_Error(
240
  'failed_writing_file_to_server',
241
- sprintf(
242
- __( 'An error occurred while writing file to your server! Tried to write a file to: %s%s.', 'pt-ocdi' ),
243
  '<br>',
244
  $file_path
245
  )
@@ -272,8 +272,8 @@ class Helpers {
272
  if ( ! $data ) {
273
  return new \WP_Error(
274
  'failed_reading_file_from_server',
275
- sprintf(
276
- __( 'An error occurred while reading a file from your server! Tried reading file from path: %s%s.', 'pt-ocdi' ),
277
  '<br>',
278
  $file_path
279
  )
@@ -295,8 +295,8 @@ class Helpers {
295
  if ( ! ( 'direct' === get_filesystem_method() ) ) {
296
  return new \WP_Error(
297
  'no_direct_file_access',
298
- sprintf(
299
- __( 'This WordPress page does not have %sdirect%s write file access. This plugin needs it in order to save the demo import xml file to the upload directory of your site. You can change this setting with these instructions: %s.', 'pt-ocdi' ),
300
  '<strong>',
301
  '</strong>',
302
  '<a href="http://gregorcapuder.com/wordpress-how-to-set-direct-filesystem-method/" target="_blank">How to set <strong>direct</strong> filesystem method</a>'
@@ -305,14 +305,7 @@ class Helpers {
305
  }
306
 
307
  // Get plugin page settings.
308
- $plugin_page_setup = apply_filters( 'pt-ocdi/plugin_page_setup', array(
309
- 'parent_slug' => 'themes.php',
310
- 'page_title' => esc_html__( 'One Click Demo Import' , 'pt-ocdi' ),
311
- 'menu_title' => esc_html__( 'Import Demo Data' , 'pt-ocdi' ),
312
- 'capability' => 'import',
313
- 'menu_slug' => 'pt-one-click-demo-import',
314
- )
315
- );
316
 
317
  // Get user credentials for WP file-system API.
318
  $demo_import_page_url = wp_nonce_url( $plugin_page_setup['parent_slug'] . '?page=' . $plugin_page_setup['menu_slug'], $plugin_page_setup['menu_slug'] );
@@ -320,7 +313,7 @@ class Helpers {
320
  if ( false === ( $creds = request_filesystem_credentials( $demo_import_page_url, '', false, false, null ) ) ) {
321
  return new \WP_error(
322
  'filesystem_credentials_could_not_be_retrieved',
323
- __( 'An error occurred while retrieving reading/writing permissions to your server (could not retrieve WP filesystem credentials)!', 'pt-ocdi' )
324
  );
325
  }
326
 
@@ -328,7 +321,7 @@ class Helpers {
328
  if ( ! WP_Filesystem( $creds ) ) {
329
  return new \WP_Error(
330
  'wrong_login_credentials',
331
- __( 'Your WordPress login credentials don\'t allow to use WP_Filesystem!', 'pt-ocdi' )
332
  );
333
  }
334
 
@@ -343,9 +336,9 @@ class Helpers {
343
  */
344
  public static function get_log_path() {
345
  $upload_dir = wp_upload_dir();
346
- $upload_path = apply_filters( 'pt-ocdi/upload_file_path', trailingslashit( $upload_dir['path'] ) );
347
 
348
- $log_path = $upload_path . apply_filters( 'pt-ocdi/log_file_prefix', 'log_file_' ) . self::$demo_import_start_time . apply_filters( 'pt-ocdi/log_file_suffix_and_file_extension', '.txt' );
349
 
350
  self::register_file_as_media_attachment( $log_path );
351
 
@@ -362,13 +355,13 @@ class Helpers {
362
  public static function register_file_as_media_attachment( $log_path ) {
363
  // Check the type of file.
364
  $log_mimes = array( 'txt' => 'text/plain' );
365
- $filetype = wp_check_filetype( basename( $log_path ), apply_filters( 'pt-ocdi/file_mimes', $log_mimes ) );
366
 
367
  // Prepare an array of post data for the attachment.
368
  $attachment = array(
369
  'guid' => self::get_log_url( $log_path ),
370
  'post_mime_type' => $filetype['type'],
371
- 'post_title' => apply_filters( 'pt-ocdi/attachment_prefix', esc_html__( 'One Click Demo Import - ', 'pt-ocdi' ) ) . preg_replace( '/\.[^.]+$/', '', basename( $log_path ) ),
372
  'post_content' => '',
373
  'post_status' => 'inherit',
374
  );
@@ -386,7 +379,7 @@ class Helpers {
386
  */
387
  public static function get_log_url( $log_path ) {
388
  $upload_dir = wp_upload_dir();
389
- $upload_url = apply_filters( 'pt-ocdi/upload_file_url', trailingslashit( $upload_dir['url'] ) );
390
 
391
  return $upload_url . basename( $log_path );
392
  }
@@ -401,8 +394,8 @@ class Helpers {
401
  // Check if user has the WP capability to import data.
402
  if ( ! current_user_can( 'import' ) ) {
403
  wp_die(
404
- sprintf(
405
- __( '%sYour user role isn\'t high enough. You don\'t have permission to import demo data.%s', 'pt-ocdi' ),
406
  '<div class="notice notice-error"><p>',
407
  '</p></div>'
408
  )
@@ -435,7 +428,7 @@ class Helpers {
435
 
436
  // Error data if the demo file was not provided.
437
  $file_not_provided_error = array(
438
- 'error' => esc_html__( 'No file provided.', 'pt-ocdi' )
439
  );
440
 
441
  // Handle demo file uploads.
@@ -463,12 +456,12 @@ class Helpers {
463
  else {
464
  // Add this error to log file.
465
  $log_added = self::append_to_file(
466
- sprintf(
467
- __( 'Content file was not uploaded. Error: %s', 'pt-ocdi' ),
468
  $content_file_info['error']
469
  ),
470
  $log_file_path,
471
- esc_html__( 'Upload files' , 'pt-ocdi' )
472
  );
473
  }
474
 
@@ -480,12 +473,12 @@ class Helpers {
480
  else {
481
  // Add this error to log file.
482
  $log_added = self::append_to_file(
483
- sprintf(
484
- __( 'Widget file was not uploaded. Error: %s', 'pt-ocdi' ),
485
  $widget_file_info['error']
486
  ),
487
  $log_file_path,
488
- esc_html__( 'Upload files' , 'pt-ocdi' )
489
  );
490
  }
491
 
@@ -497,12 +490,12 @@ class Helpers {
497
  else {
498
  // Add this error to log file.
499
  $log_added = self::append_to_file(
500
- sprintf(
501
- __( 'Customizer file was not uploaded. Error: %s', 'pt-ocdi' ),
502
  $customizer_file_info['error']
503
  ),
504
  $log_file_path,
505
- esc_html__( 'Upload files' , 'pt-ocdi' )
506
  );
507
  }
508
 
@@ -511,9 +504,9 @@ class Helpers {
511
  if ( isset( $_POST['redux_option_name'] ) && empty( $_POST['redux_option_name'] ) ) {
512
  // Write error to log file and send an AJAX response with the error.
513
  self::log_error_and_send_ajax_response(
514
- esc_html__( 'Missing Redux option name! Please also enter the Redux option name!', 'pt-ocdi' ),
515
  $log_file_path,
516
- esc_html__( 'Upload files', 'pt-ocdi' )
517
  );
518
  }
519
 
@@ -528,20 +521,20 @@ class Helpers {
528
  else {
529
  // Add this error to log file.
530
  $log_added = self::append_to_file(
531
- sprintf(
532
- __( 'Redux file was not uploaded. Error: %s', 'pt-ocdi' ),
533
  $redux_file_info['error']
534
  ),
535
  $log_file_path,
536
- esc_html__( 'Upload files' , 'pt-ocdi' )
537
  );
538
  }
539
 
540
  // Add this message to log file.
541
  $log_added = self::append_to_file(
542
- __( 'The import files were successfully uploaded!', 'pt-ocdi' ) . self::import_file_info( $selected_import_files ),
543
  $log_file_path,
544
- esc_html__( 'Upload files' , 'pt-ocdi' )
545
  );
546
 
547
  // Return array with paths of uploaded files.
@@ -564,18 +557,18 @@ class Helpers {
564
  }
565
 
566
  return PHP_EOL .
567
- sprintf(
568
- __( 'Initial max execution time = %s', 'pt-ocdi' ),
569
  ini_get( 'max_execution_time' )
570
  ) . PHP_EOL .
571
- sprintf(
572
- __( 'Files info:%1$sSite URL = %2$s%1$sData file = %3$s%1$sWidget file = %4$s%1$sCustomizer file = %5$s%1$sRedux files:%1$s%6$s', 'pt-ocdi' ),
573
  PHP_EOL,
574
  get_site_url(),
575
- empty( $selected_import_files['content'] ) ? esc_html__( 'not defined!', 'pt-ocdi' ) : $selected_import_files['content'],
576
- empty( $selected_import_files['widgets'] ) ? esc_html__( 'not defined!', 'pt-ocdi' ) : $selected_import_files['widgets'],
577
- empty( $selected_import_files['customizer'] ) ? esc_html__( 'not defined!', 'pt-ocdi' ) : $selected_import_files['customizer'],
578
- empty( $redux_file_string ) ? esc_html__( 'not defined!', 'pt-ocdi' ) : $redux_file_string
579
  );
580
  }
581
 
@@ -604,7 +597,7 @@ class Helpers {
604
  * Set the $demo_import_start_time class variable with the current date and time string.
605
  */
606
  public static function set_demo_import_start_time() {
607
- self::$demo_import_start_time = date( apply_filters( 'pt-ocdi/date_format_for_file_names', 'Y-m-d__H-i-s' ) );
608
  }
609
 
610
 
@@ -665,4 +658,91 @@ class Helpers {
665
  public static function set_ocdi_import_data_transient( $data ) {
666
  set_transient( 'ocdi_importer_data', $data, 0.1 * HOUR_IN_SECONDS );
667
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
668
  }
67
  );
68
  $downloader = new Downloader();
69
 
70
+ $import_file_info = self::apply_filters('ocdi/pre_download_import_files', $import_file_info);
71
 
72
  // ----- Set content file path -----
73
  // Check if 'import_file_url' is not defined. That would mean a local file.
78
  }
79
  else {
80
  // Set the filename string for content import file.
81
+ $content_filename = self::apply_filters( 'ocdi/downloaded_content_file_prefix', 'demo-content-import-file_' ) . self::$demo_import_start_time . self::apply_filters( 'ocdi/downloaded_content_file_suffix_and_file_extension', '.xml' );
82
 
83
  // Download the content import file.
84
  $downloaded_files['content'] = $downloader->download_file( $import_file_info['import_file_url'], $content_filename );
93
  // Get widgets file as well. If defined!
94
  if ( ! empty( $import_file_info['import_widget_file_url'] ) ) {
95
  // Set the filename string for widgets import file.
96
+ $widget_filename = self::apply_filters( 'ocdi/downloaded_widgets_file_prefix', 'demo-widgets-import-file_' ) . self::$demo_import_start_time . self::apply_filters( 'ocdi/downloaded_widgets_file_suffix_and_file_extension', '.json' );
97
 
98
  // Download the widgets import file.
99
  $downloaded_files['widgets'] = $downloader->download_file( $import_file_info['import_widget_file_url'], $widget_filename );
113
  // Get customizer import file as well. If defined!
114
  if ( ! empty( $import_file_info['import_customizer_file_url'] ) ) {
115
  // Setup filename path to save the customizer content.
116
+ $customizer_filename = self::apply_filters( 'ocdi/downloaded_customizer_file_prefix', 'demo-customizer-import-file_' ) . self::$demo_import_start_time . self::apply_filters( 'ocdi/downloaded_customizer_file_suffix_and_file_extension', '.dat' );
117
 
118
  // Download the customizer import file.
119
  $downloaded_files['customizer'] = $downloader->download_file( $import_file_info['import_customizer_file_url'], $customizer_filename );
136
 
137
  // Setup filename paths to save the Redux content.
138
  foreach ( $import_file_info['import_redux'] as $index => $redux_item ) {
139
+ $redux_filename = self::apply_filters( 'ocdi/downloaded_redux_file_prefix', 'demo-redux-import-file_' ) . $index . '-' . self::$demo_import_start_time . self::apply_filters( 'ocdi/downloaded_redux_file_suffix_and_file_extension', '.json' );
140
 
141
  // Download the Redux import file.
142
  $file_path = $downloader->download_file( $redux_item['file_url'], $redux_filename );
195
  if ( ! $wp_filesystem->put_contents( $file_path, $content ) ) {
196
  return new \WP_Error(
197
  'failed_writing_file_to_server',
198
+ sprintf( /* translators: %1$s - br HTML tag, %2$s - file path */
199
+ __( 'An error occurred while writing file to your server! Tried to write a file to: %1$s%2$s.', 'one-click-demo-import' ),
200
  '<br>',
201
  $file_path
202
  )
238
  if ( ! $wp_filesystem->put_contents( $file_path, $existing_data . $separator . $content . PHP_EOL ) ) {
239
  return new \WP_Error(
240
  'failed_writing_file_to_server',
241
+ sprintf( /* translators: %1$s - br HTML tag, %2$s - file path */
242
+ __( 'An error occurred while writing file to your server! Tried to write a file to: %1$s%2$s.', 'one-click-demo-import' ),
243
  '<br>',
244
  $file_path
245
  )
272
  if ( ! $data ) {
273
  return new \WP_Error(
274
  'failed_reading_file_from_server',
275
+ sprintf( /* translators: %1$s - br HTML tag, %2$s - file path */
276
+ __( 'An error occurred while reading a file from your server! Tried reading file from path: %1$s%2$s.', 'one-click-demo-import' ),
277
  '<br>',
278
  $file_path
279
  )
295
  if ( ! ( 'direct' === get_filesystem_method() ) ) {
296
  return new \WP_Error(
297
  'no_direct_file_access',
298
+ sprintf( /* translators: %1$s and %2$s - strong HTML tags, %3$s - HTML link to a doc page. */
299
+ __( 'This WordPress page does not have %1$sdirect%2$s write file access. This plugin needs it in order to save the demo import xml file to the upload directory of your site. You can change this setting with these instructions: %3$s.', 'one-click-demo-import' ),
300
  '<strong>',
301
  '</strong>',
302
  '<a href="http://gregorcapuder.com/wordpress-how-to-set-direct-filesystem-method/" target="_blank">How to set <strong>direct</strong> filesystem method</a>'
305
  }
306
 
307
  // Get plugin page settings.
308
+ $plugin_page_setup = self::get_plugin_page_setup_data();
 
 
 
 
 
 
 
309
 
310
  // Get user credentials for WP file-system API.
311
  $demo_import_page_url = wp_nonce_url( $plugin_page_setup['parent_slug'] . '?page=' . $plugin_page_setup['menu_slug'], $plugin_page_setup['menu_slug'] );
313
  if ( false === ( $creds = request_filesystem_credentials( $demo_import_page_url, '', false, false, null ) ) ) {
314
  return new \WP_error(
315
  'filesystem_credentials_could_not_be_retrieved',
316
+ __( 'An error occurred while retrieving reading/writing permissions to your server (could not retrieve WP filesystem credentials)!', 'one-click-demo-import' )
317
  );
318
  }
319
 
321
  if ( ! WP_Filesystem( $creds ) ) {
322
  return new \WP_Error(
323
  'wrong_login_credentials',
324
+ __( 'Your WordPress login credentials don\'t allow to use WP_Filesystem!', 'one-click-demo-import' )
325
  );
326
  }
327
 
336
  */
337
  public static function get_log_path() {
338
  $upload_dir = wp_upload_dir();
339
+ $upload_path = self::apply_filters( 'ocdi/upload_file_path', trailingslashit( $upload_dir['path'] ) );
340
 
341
+ $log_path = $upload_path . self::apply_filters( 'ocdi/log_file_prefix', 'log_file_' ) . self::$demo_import_start_time . self::apply_filters( 'ocdi/log_file_suffix_and_file_extension', '.txt' );
342
 
343
  self::register_file_as_media_attachment( $log_path );
344
 
355
  public static function register_file_as_media_attachment( $log_path ) {
356
  // Check the type of file.
357
  $log_mimes = array( 'txt' => 'text/plain' );
358
+ $filetype = wp_check_filetype( basename( $log_path ), self::apply_filters( 'ocdi/file_mimes', $log_mimes ) );
359
 
360
  // Prepare an array of post data for the attachment.
361
  $attachment = array(
362
  'guid' => self::get_log_url( $log_path ),
363
  'post_mime_type' => $filetype['type'],
364
+ 'post_title' => self::apply_filters( 'ocdi/attachment_prefix', esc_html__( 'One Click Demo Import - ', 'one-click-demo-import' ) ) . preg_replace( '/\.[^.]+$/', '', basename( $log_path ) ),
365
  'post_content' => '',
366
  'post_status' => 'inherit',
367
  );
379
  */
380
  public static function get_log_url( $log_path ) {
381
  $upload_dir = wp_upload_dir();
382
+ $upload_url = self::apply_filters( 'ocdi/upload_file_url', trailingslashit( $upload_dir['url'] ) );
383
 
384
  return $upload_url . basename( $log_path );
385
  }
394
  // Check if user has the WP capability to import data.
395
  if ( ! current_user_can( 'import' ) ) {
396
  wp_die(
397
+ sprintf( /* translators: %1$s - opening div and paragraph HTML tags, %2$s - closing div and paragraph HTML tags. */
398
+ __( '%1$sYour user role isn\'t high enough. You don\'t have permission to import demo data.%2$s', 'one-click-demo-import' ),
399
  '<div class="notice notice-error"><p>',
400
  '</p></div>'
401
  )
428
 
429
  // Error data if the demo file was not provided.
430
  $file_not_provided_error = array(
431
+ 'error' => esc_html__( 'No file provided.', 'one-click-demo-import' )
432
  );
433
 
434
  // Handle demo file uploads.
456
  else {
457
  // Add this error to log file.
458
  $log_added = self::append_to_file(
459
+ sprintf( /* translators: %s - the error message. */
460
+ __( 'Content file was not uploaded. Error: %s', 'one-click-demo-import' ),
461
  $content_file_info['error']
462
  ),
463
  $log_file_path,
464
+ esc_html__( 'Upload files' , 'one-click-demo-import' )
465
  );
466
  }
467
 
473
  else {
474
  // Add this error to log file.
475
  $log_added = self::append_to_file(
476
+ sprintf( /* translators: %s - the error message. */
477
+ __( 'Widget file was not uploaded. Error: %s', 'one-click-demo-import' ),
478
  $widget_file_info['error']
479
  ),
480
  $log_file_path,
481
+ esc_html__( 'Upload files' , 'one-click-demo-import' )
482
  );
483
  }
484
 
490
  else {
491
  // Add this error to log file.
492
  $log_added = self::append_to_file(
493
+ sprintf( /* translators: %s - the error message. */
494
+ __( 'Customizer file was not uploaded. Error: %s', 'one-click-demo-import' ),
495
  $customizer_file_info['error']
496
  ),
497
  $log_file_path,
498
+ esc_html__( 'Upload files' , 'one-click-demo-import' )
499
  );
500
  }
501
 
504
  if ( isset( $_POST['redux_option_name'] ) && empty( $_POST['redux_option_name'] ) ) {
505
  // Write error to log file and send an AJAX response with the error.
506
  self::log_error_and_send_ajax_response(
507
+ esc_html__( 'Missing Redux option name! Please also enter the Redux option name!', 'one-click-demo-import' ),
508
  $log_file_path,
509
+ esc_html__( 'Upload files', 'one-click-demo-import' )
510
  );
511
  }
512
 
521
  else {
522
  // Add this error to log file.
523
  $log_added = self::append_to_file(
524
+ sprintf( /* translators: %s - the error message. */
525
+ __( 'Redux file was not uploaded. Error: %s', 'one-click-demo-import' ),
526
  $redux_file_info['error']
527
  ),
528
  $log_file_path,
529
+ esc_html__( 'Upload files' , 'one-click-demo-import' )
530
  );
531
  }
532
 
533
  // Add this message to log file.
534
  $log_added = self::append_to_file(
535
+ __( 'The import files were successfully uploaded!', 'one-click-demo-import' ) . self::import_file_info( $selected_import_files ),
536
  $log_file_path,
537
+ esc_html__( 'Upload files' , 'one-click-demo-import' )
538
  );
539
 
540
  // Return array with paths of uploaded files.
557
  }
558
 
559
  return PHP_EOL .
560
+ sprintf( /* translators: %s - the max execution time. */
561
+ __( 'Initial max execution time = %s', 'one-click-demo-import' ),
562
  ini_get( 'max_execution_time' )
563
  ) . PHP_EOL .
564
+ sprintf( /* translators: %1$s - new line break, %2$s - the site URL, %3$s - the file path for content import, %4$s - the file path for widgets import, %5$s - the file path for widgets import, %6$s - the file path for redux import. */
565
+ __( 'Files info:%1$sSite URL = %2$s%1$sData file = %3$s%1$sWidget file = %4$s%1$sCustomizer file = %5$s%1$sRedux files:%1$s%6$s', 'one-click-demo-import' ),
566
  PHP_EOL,
567
  get_site_url(),
568
+ empty( $selected_import_files['content'] ) ? esc_html__( 'not defined!', 'one-click-demo-import' ) : $selected_import_files['content'],
569
+ empty( $selected_import_files['widgets'] ) ? esc_html__( 'not defined!', 'one-click-demo-import' ) : $selected_import_files['widgets'],
570
+ empty( $selected_import_files['customizer'] ) ? esc_html__( 'not defined!', 'one-click-demo-import' ) : $selected_import_files['customizer'],
571
+ empty( $redux_file_string ) ? esc_html__( 'not defined!', 'one-click-demo-import' ) : $redux_file_string
572
  );
573
  }
574
 
597
  * Set the $demo_import_start_time class variable with the current date and time string.
598
  */
599
  public static function set_demo_import_start_time() {
600
+ self::$demo_import_start_time = date( self::apply_filters( 'ocdi/date_format_for_file_names', 'Y-m-d__H-i-s' ) );
601
  }
602
 
603
 
658
  public static function set_ocdi_import_data_transient( $data ) {
659
  set_transient( 'ocdi_importer_data', $data, 0.1 * HOUR_IN_SECONDS );
660
  }
661
+
662
+
663
+ /**
664
+ * Backwards compatible apply_filters helper.
665
+ * With 3.0 we changed the filter prefix from 'pt-ocdi/' to just 'ocdi/',
666
+ * but we needed to make sure backwards compatibility is in place.
667
+ * This method should be used for all apply_filters calls.
668
+ *
669
+ * @param string $hook The filter hook name.
670
+ * @param mixed $default_data The default filter data.
671
+ *
672
+ * @return mixed|void
673
+ */
674
+ public static function apply_filters( $hook, $default_data ) {
675
+ $new_data = apply_filters( $hook, $default_data );
676
+
677
+ if ( $new_data !== $default_data ) {
678
+ return $new_data;
679
+ }
680
+
681
+ $old_data = apply_filters( "pt-$hook", $default_data );
682
+
683
+ if ( $old_data !== $default_data ) {
684
+ return $old_data;
685
+ }
686
+
687
+ return $default_data;
688
+ }
689
+
690
+ /**
691
+ * Backwards compatible do_action helper.
692
+ * With 3.0 we changed the action prefix from 'pt-ocdi/' to just 'ocdi/',
693
+ * but we needed to make sure backwards compatibility is in place.
694
+ * This method should be used for all do_action calls.
695
+ *
696
+ * @param string $hook The action hook name.
697
+ * @param mixed ...$arg Optional. Additional arguments which are passed on to the
698
+ * functions hooked to the action. Default empty.
699
+ */
700
+ public static function do_action( $hook, ...$arg ) {
701
+ if ( has_action( $hook ) ) {
702
+ do_action( $hook, ...$arg );
703
+ } else if ( has_action( "pt-$hook" ) ) {
704
+ do_action( "pt-$hook", ...$arg );
705
+ }
706
+ }
707
+
708
+ /**
709
+ * Backwards compatible has_action helper.
710
+ * With 3.0 we changed the action prefix from 'pt-ocdi/' to just 'ocdi/',
711
+ * but we needed to make sure backwards compatibility is in place.
712
+ * This method should be used for all has_action calls.
713
+ *
714
+ * @param string $hook The name of the action hook.
715
+ * @param callable|bool $function_to_check Optional. The callback to check for. Default false.
716
+ *
717
+ * @return bool|int If $function_to_check is omitted, returns boolean for whether the hook has
718
+ * anything registered. When checking a specific function, the priority of that
719
+ * hook is returned, or false if the function is not attached. When using the
720
+ * $function_to_check argument, this function may return a non-boolean value
721
+ * that evaluates to false (e.g.) 0, so use the === operator for testing the
722
+ * return value.
723
+ */
724
+ public static function has_action( $hook, $function_to_check = false ) {
725
+ if ( has_action( $hook ) ) {
726
+ return has_action( $hook, $function_to_check );
727
+ } else if ( has_action( "pt-$hook" ) ) {
728
+ return has_action( "pt-$hook", $function_to_check );
729
+ }
730
+
731
+ return false;
732
+ }
733
+
734
+ /**
735
+ * Get the plugin page setup data.
736
+ *
737
+ * @return array
738
+ */
739
+ public static function get_plugin_page_setup_data() {
740
+ return Helpers::apply_filters( 'ocdi/plugin_page_setup', array(
741
+ 'parent_slug' => 'themes.php',
742
+ 'page_title' => esc_html__( 'One Click Demo Import' , 'one-click-demo-import' ),
743
+ 'menu_title' => esc_html__( 'Import Demo Data' , 'one-click-demo-import' ),
744
+ 'capability' => 'import',
745
+ 'menu_slug' => 'one-click-demo-import',
746
+ ) );
747
+ }
748
  }
inc/ImportActions.php CHANGED
@@ -14,22 +14,22 @@ class ImportActions {
14
  */
15
  public function register_hooks() {
16
  // Before content import.
17
- add_action( 'pt-ocdi/before_content_import_execution', array( $this, 'before_content_import_action' ), 10, 3 );
18
 
19
  // After content import.
20
- add_action( 'pt-ocdi/after_content_import_execution', array( $this, 'before_widget_import_action' ), 10, 3 );
21
- add_action( 'pt-ocdi/after_content_import_execution', array( $this, 'widgets_import' ), 20, 3 );
22
- add_action( 'pt-ocdi/after_content_import_execution', array( $this, 'redux_import' ), 30, 3 );
23
 
24
  // Customizer import.
25
- add_action( 'pt-ocdi/customizer_import_execution', array( $this, 'customizer_import' ), 10, 1 );
26
 
27
  // After full import action.
28
- add_action( 'pt-ocdi/after_all_import_execution', array( $this, 'after_import_action' ), 10, 3 );
29
 
30
  // Special widget import cases.
31
- if ( apply_filters( 'pt_ocdi/enable_custom_menu_widget_ids_fix', true ) ) {
32
- add_action( 'pt-ocdi/widget_settings_array', array( $this, 'fix_custom_menu_widget_ids' ) );
33
  }
34
  }
35
 
@@ -63,7 +63,7 @@ class ImportActions {
63
  * Execute the widgets import.
64
  *
65
  * @param array $selected_import_files Actual selected import files (content, widgets, customizer, redux).
66
- * @param array $import_files The filtered import files defined in `pt-ocdi/import_files` filter.
67
  * @param int $selected_index Selected index of import.
68
  */
69
  public function widgets_import( $selected_import_files, $import_files, $selected_index ) {
@@ -77,7 +77,7 @@ class ImportActions {
77
  * Execute the Redux import.
78
  *
79
  * @param array $selected_import_files Actual selected import files (content, widgets, customizer, redux).
80
- * @param array $import_files The filtered import files defined in `pt-ocdi/import_files` filter.
81
  * @param int $selected_index Selected index of import.
82
  */
83
  public function redux_import( $selected_import_files, $import_files, $selected_index ) {
@@ -91,7 +91,7 @@ class ImportActions {
91
  * Execute the customizer import.
92
  *
93
  * @param array $selected_import_files Actual selected import files (content, widgets, customizer, redux).
94
- * @param array $import_files The filtered import files defined in `pt-ocdi/import_files` filter.
95
  * @param int $selected_index Selected index of import.
96
  */
97
  public function customizer_import( $selected_import_files ) {
@@ -102,38 +102,38 @@ class ImportActions {
102
 
103
 
104
  /**
105
- * Execute the action: 'pt-ocdi/before_content_import'.
106
  *
107
  * @param array $selected_import_files Actual selected import files (content, widgets, customizer, redux).
108
- * @param array $import_files The filtered import files defined in `pt-ocdi/import_files` filter.
109
  * @param int $selected_index Selected index of import.
110
  */
111
  public function before_content_import_action( $selected_import_files, $import_files, $selected_index ) {
112
- $this->do_import_action( 'pt-ocdi/before_content_import', $import_files[ $selected_index ] );
113
  }
114
 
115
 
116
  /**
117
- * Execute the action: 'pt-ocdi/before_widgets_import'.
118
  *
119
  * @param array $selected_import_files Actual selected import files (content, widgets, customizer, redux).
120
- * @param array $import_files The filtered import files defined in `pt-ocdi/import_files` filter.
121
  * @param int $selected_index Selected index of import.
122
  */
123
  public function before_widget_import_action( $selected_import_files, $import_files, $selected_index ) {
124
- $this->do_import_action( 'pt-ocdi/before_widgets_import', $import_files[ $selected_index ] );
125
  }
126
 
127
 
128
  /**
129
- * Execute the action: 'pt-ocdi/after_import'.
130
  *
131
  * @param array $selected_import_files Actual selected import files (content, widgets, customizer, redux).
132
- * @param array $import_files The filtered import files defined in `pt-ocdi/import_files` filter.
133
  * @param int $selected_index Selected index of import.
134
  */
135
  public function after_import_action( $selected_import_files, $import_files, $selected_index ) {
136
- $this->do_import_action( 'pt-ocdi/after_import', $import_files[ $selected_index ] );
137
  }
138
 
139
 
@@ -141,15 +141,15 @@ class ImportActions {
141
  * Register the do_action hook, so users can hook to these during import.
142
  *
143
  * @param string $action The action name to be executed.
144
- * @param array $selected_import The data of selected import from `pt-ocdi/import_files` filter.
145
  */
146
  private function do_import_action( $action, $selected_import ) {
147
- if ( false !== has_action( $action ) ) {
148
  $ocdi = OneClickDemoImport::get_instance();
149
  $log_file_path = $ocdi->get_log_file_path();
150
 
151
  ob_start();
152
- do_action( $action, $selected_import );
153
  $message = ob_get_clean();
154
 
155
  // Add this message to log file.
14
  */
15
  public function register_hooks() {
16
  // Before content import.
17
+ add_action( 'ocdi/before_content_import_execution', array( $this, 'before_content_import_action' ), 10, 3 );
18
 
19
  // After content import.
20
+ add_action( 'ocdi/after_content_import_execution', array( $this, 'before_widget_import_action' ), 10, 3 );
21
+ add_action( 'ocdi/after_content_import_execution', array( $this, 'widgets_import' ), 20, 3 );
22
+ add_action( 'ocdi/after_content_import_execution', array( $this, 'redux_import' ), 30, 3 );
23
 
24
  // Customizer import.
25
+ add_action( 'ocdi/customizer_import_execution', array( $this, 'customizer_import' ), 10, 1 );
26
 
27
  // After full import action.
28
+ add_action( 'ocdi/after_all_import_execution', array( $this, 'after_import_action' ), 10, 3 );
29
 
30
  // Special widget import cases.
31
+ if ( Helpers::apply_filters( 'ocdi/enable_custom_menu_widget_ids_fix', true ) ) {
32
+ add_action( 'ocdi/widget_settings_array', array( $this, 'fix_custom_menu_widget_ids' ) );
33
  }
34
  }
35
 
63
  * Execute the widgets import.
64
  *
65
  * @param array $selected_import_files Actual selected import files (content, widgets, customizer, redux).
66
+ * @param array $import_files The filtered import files defined in `ocdi/import_files` filter.
67
  * @param int $selected_index Selected index of import.
68
  */
69
  public function widgets_import( $selected_import_files, $import_files, $selected_index ) {
77
  * Execute the Redux import.
78
  *
79
  * @param array $selected_import_files Actual selected import files (content, widgets, customizer, redux).
80
+ * @param array $import_files The filtered import files defined in `ocdi/import_files` filter.
81
  * @param int $selected_index Selected index of import.
82
  */
83
  public function redux_import( $selected_import_files, $import_files, $selected_index ) {
91
  * Execute the customizer import.
92
  *
93
  * @param array $selected_import_files Actual selected import files (content, widgets, customizer, redux).
94
+ * @param array $import_files The filtered import files defined in `ocdi/import_files` filter.
95
  * @param int $selected_index Selected index of import.
96
  */
97
  public function customizer_import( $selected_import_files ) {
102
 
103
 
104
  /**
105
+ * Execute the action: 'ocdi/before_content_import'.
106
  *
107
  * @param array $selected_import_files Actual selected import files (content, widgets, customizer, redux).
108
+ * @param array $import_files The filtered import files defined in `ocdi/import_files` filter.
109
  * @param int $selected_index Selected index of import.
110
  */
111
  public function before_content_import_action( $selected_import_files, $import_files, $selected_index ) {
112
+ $this->do_import_action( 'ocdi/before_content_import', $import_files[ $selected_index ] );
113
  }
114
 
115
 
116
  /**
117
+ * Execute the action: 'ocdi/before_widgets_import'.
118
  *
119
  * @param array $selected_import_files Actual selected import files (content, widgets, customizer, redux).
120
+ * @param array $import_files The filtered import files defined in `ocdi/import_files` filter.
121
  * @param int $selected_index Selected index of import.
122
  */
123
  public function before_widget_import_action( $selected_import_files, $import_files, $selected_index ) {
124
+ $this->do_import_action( 'ocdi/before_widgets_import', $import_files[ $selected_index ] );
125
  }
126
 
127
 
128
  /**
129
+ * Execute the action: 'ocdi/after_import'.
130
  *
131
  * @param array $selected_import_files Actual selected import files (content, widgets, customizer, redux).
132
+ * @param array $import_files The filtered import files defined in `ocdi/import_files` filter.
133
  * @param int $selected_index Selected index of import.
134
  */
135
  public function after_import_action( $selected_import_files, $import_files, $selected_index ) {
136
+ $this->do_import_action( 'ocdi/after_import', $import_files[ $selected_index ] );
137
  }
138
 
139
 
141
  * Register the do_action hook, so users can hook to these during import.
142
  *
143
  * @param string $action The action name to be executed.
144
+ * @param array $selected_import The data of selected import from `ocdi/import_files` filter.
145
  */
146
  private function do_import_action( $action, $selected_import ) {
147
+ if ( false !== Helpers::has_action( $action ) ) {
148
  $ocdi = OneClickDemoImport::get_instance();
149
  $log_file_path = $ocdi->get_log_file_path();
150
 
151
  ob_start();
152
+ Helpers::do_action( $action, $selected_import );
153
  $message = ob_get_clean();
154
 
155
  // Add this message to log file.
inc/Importer.php CHANGED
@@ -119,7 +119,7 @@ class Importer {
119
 
120
  // Increase PHP max execution time. Just in case, even though the AJAX calls are only 25 sec long.
121
  if ( strpos( ini_get( 'disable_functions' ), 'set_time_limit' ) === false ) {
122
- set_time_limit( apply_filters( 'pt-ocdi/set_time_limit_for_demo_data_import', 300 ) );
123
  }
124
 
125
  // Disable import of authors.
@@ -129,7 +129,7 @@ class Importer {
129
  add_filter( 'wxr_importer.pre_process.post', array( $this, 'new_ajax_request_maybe' ) );
130
 
131
  // Disables generation of multiple image sizes (thumbnails) in the content import step.
132
- if ( ! apply_filters( 'pt-ocdi/regenerate_thumbnails_in_content_import', true ) ) {
133
  add_filter( 'intermediate_image_sizes_advanced', '__return_null' );
134
  }
135
 
@@ -155,7 +155,7 @@ class Importer {
155
  $time = microtime( true ) - $this->microtime;
156
 
157
  // We should make a new ajax call, if the time is right.
158
- if ( $time > apply_filters( 'pt-ocdi/time_for_one_ajax_call', 25 ) ) {
159
  $response = array(
160
  'status' => 'newAJAX',
161
  'message' => 'Time for new AJAX request!: ' . $time,
@@ -171,7 +171,7 @@ class Importer {
171
 
172
  // Add message to log file.
173
  $log_added = Helpers::append_to_file(
174
- __( 'New AJAX call!' , 'pt-ocdi' ) . PHP_EOL . $message,
175
  $this->ocdi->get_log_file_path(),
176
  ''
177
  );
119
 
120
  // Increase PHP max execution time. Just in case, even though the AJAX calls are only 25 sec long.
121
  if ( strpos( ini_get( 'disable_functions' ), 'set_time_limit' ) === false ) {
122
+ set_time_limit( Helpers::apply_filters( 'ocdi/set_time_limit_for_demo_data_import', 300 ) );
123
  }
124
 
125
  // Disable import of authors.
129
  add_filter( 'wxr_importer.pre_process.post', array( $this, 'new_ajax_request_maybe' ) );
130
 
131
  // Disables generation of multiple image sizes (thumbnails) in the content import step.
132
+ if ( ! Helpers::apply_filters( 'ocdi/regenerate_thumbnails_in_content_import', true ) ) {
133
  add_filter( 'intermediate_image_sizes_advanced', '__return_null' );
134
  }
135
 
155
  $time = microtime( true ) - $this->microtime;
156
 
157
  // We should make a new ajax call, if the time is right.
158
+ if ( $time > Helpers::apply_filters( 'ocdi/time_for_one_ajax_call', 25 ) ) {
159
  $response = array(
160
  'status' => 'newAJAX',
161
  'message' => 'Time for new AJAX request!: ' . $time,
171
 
172
  // Add message to log file.
173
  $log_added = Helpers::append_to_file(
174
+ __( 'New AJAX call!' , 'one-click-demo-import' ) . PHP_EOL . $message,
175
  $this->ocdi->get_log_file_path(),
176
  ''
177
  );
inc/OneClickDemoImport.php CHANGED
@@ -25,6 +25,13 @@ class OneClickDemoImport {
25
  */
26
  public $importer;
27
 
 
 
 
 
 
 
 
28
  /**
29
  * The resulting page's hook_suffix, or false if the user does not have the capability required.
30
  *
@@ -74,12 +81,12 @@ class OneClickDemoImport {
74
  */
75
  private $before_import_executed = false;
76
 
77
- /**
78
- * Make plugin page options available to other methods.
79
- *
80
- * @var array
81
- */
82
- private $plugin_page_setup = array();
83
 
84
  /**
85
  * Returns the *Singleton* instance of this class.
@@ -104,11 +111,15 @@ class OneClickDemoImport {
104
  // Actions.
105
  add_action( 'admin_menu', array( $this, 'create_plugin_page' ) );
106
  add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) );
 
107
  add_action( 'wp_ajax_ocdi_import_demo_data', array( $this, 'import_demo_data_ajax_callback' ) );
108
  add_action( 'wp_ajax_ocdi_import_customizer_data', array( $this, 'import_customizer_data_ajax_callback' ) );
109
  add_action( 'wp_ajax_ocdi_after_import_data', array( $this, 'after_all_import_data_ajax_callback' ) );
110
  add_action( 'after_setup_theme', array( $this, 'setup_plugin_with_filter_data' ) );
111
- add_action( 'plugins_loaded', array( $this, 'load_textdomain' ) );
 
 
 
112
  }
113
 
114
 
@@ -121,24 +132,18 @@ class OneClickDemoImport {
121
 
122
 
123
  /**
124
- * Private unserialize method to prevent unserializing of the *Singleton* instance.
125
  *
126
  * @return void
127
  */
128
- private function __wakeup() {}
129
 
130
 
131
  /**
132
  * Creates the plugin page and a submenu item in WP Appearance menu.
133
  */
134
  public function create_plugin_page() {
135
- $this->plugin_page_setup = apply_filters( 'pt-ocdi/plugin_page_setup', array(
136
- 'parent_slug' => 'themes.php',
137
- 'page_title' => esc_html__( 'One Click Demo Import' , 'pt-ocdi' ),
138
- 'menu_title' => esc_html__( 'Import Demo Data' , 'pt-ocdi' ),
139
- 'capability' => 'import',
140
- 'menu_slug' => 'pt-one-click-demo-import',
141
- ) );
142
 
143
  $this->plugin_page = add_submenu_page(
144
  $this->plugin_page_setup['parent_slug'],
@@ -146,10 +151,10 @@ class OneClickDemoImport {
146
  $this->plugin_page_setup['menu_title'],
147
  $this->plugin_page_setup['capability'],
148
  $this->plugin_page_setup['menu_slug'],
149
- apply_filters( 'pt-ocdi/plugin_page_display_callback_function', array( $this, 'display_plugin_page' ) )
150
  );
151
 
152
- register_importer( $this->plugin_page_setup['menu_slug'], $this->plugin_page_setup['page_title'], $this->plugin_page_setup['menu_title'], apply_filters( 'pt-ocdi/plugin_page_display_callback_function', array( $this, 'display_plugin_page' ) ) );
153
  }
154
 
155
  /**
@@ -157,7 +162,26 @@ class OneClickDemoImport {
157
  * Output (HTML) is in another file.
158
  */
159
  public function display_plugin_page() {
160
- require_once PT_OCDI_PATH . 'views/plugin-page.php';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
161
  }
162
 
163
 
@@ -169,10 +193,7 @@ class OneClickDemoImport {
169
  public function admin_enqueue_scripts( $hook ) {
170
  // Enqueue the scripts only on the plugin page.
171
  if ( $this->plugin_page === $hook || ( 'admin.php' === $hook && $this->plugin_page_setup['menu_slug'] === esc_attr( $_GET['import'] ) ) ) {
172
- wp_enqueue_script( 'jquery-ui-dialog' );
173
- wp_enqueue_style( 'wp-jquery-ui-dialog' );
174
-
175
- wp_enqueue_script( 'ocdi-main-js', PT_OCDI_URL . 'assets/js/main.js' , array( 'jquery', 'jquery-ui-dialog' ), PT_OCDI_VERSION );
176
 
177
  // Get theme data.
178
  $theme = wp_get_theme();
@@ -182,25 +203,69 @@ class OneClickDemoImport {
182
  'ajax_url' => admin_url( 'admin-ajax.php' ),
183
  'ajax_nonce' => wp_create_nonce( 'ocdi-ajax-verification' ),
184
  'import_files' => $this->import_files,
185
- 'wp_customize_on' => apply_filters( 'pt-ocdi/enable_wp_customize_save_hooks', false ),
186
- 'import_popup' => apply_filters( 'pt-ocdi/enable_grid_layout_import_popup_confirmation', true ),
187
  'theme_screenshot' => $theme->get_screenshot(),
 
 
 
188
  'texts' => array(
189
- 'missing_preview_image' => esc_html__( 'No preview image defined for this import.', 'pt-ocdi' ),
190
- 'dialog_title' => esc_html__( 'Are you sure?', 'pt-ocdi' ),
191
- 'dialog_no' => esc_html__( 'Cancel', 'pt-ocdi' ),
192
- 'dialog_yes' => esc_html__( 'Yes, import!', 'pt-ocdi' ),
193
- 'selected_import_title' => esc_html__( 'Selected demo import:', 'pt-ocdi' ),
 
 
 
 
 
 
 
 
 
 
 
 
194
  ),
195
- 'dialog_options' => apply_filters( 'pt-ocdi/confirmation_dialog_options', array() )
196
  )
197
  );
198
 
199
- wp_enqueue_style( 'ocdi-main-css', PT_OCDI_URL . 'assets/css/main.css', array() , PT_OCDI_VERSION );
200
  }
201
  }
202
 
203
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
204
  /**
205
  * Main AJAX callback function for:
206
  * 1). prepare import files (uploaded or predefined via filters)
@@ -210,7 +275,7 @@ class OneClickDemoImport {
210
  */
211
  public function import_demo_data_ajax_callback() {
212
  // Try to update PHP memory limit (so that it does not run out of it).
213
- ini_set( 'memory_limit', apply_filters( 'pt-ocdi/import_memory_limit', '350M' ) );
214
 
215
  // Verify if the AJAX call is valid (checks nonce and current_user_can).
216
  Helpers::verify_ajax_call();
@@ -230,16 +295,16 @@ class OneClickDemoImport {
230
 
231
  /**
232
  * 1). Prepare import files.
233
- * Manually uploaded import files or predefined import files via filter: pt-ocdi/import_files
234
  */
235
  if ( ! empty( $_FILES ) ) { // Using manual file uploads?
236
  // Get paths for the uploaded files.
237
  $this->selected_import_files = Helpers::process_uploaded_files( $_FILES, $this->log_file_path );
238
 
239
  // Set the name of the import files, because we used the uploaded files.
240
- $this->import_files[ $this->selected_index ]['import_file_name'] = esc_html__( 'Manually uploaded files', 'pt-ocdi' );
241
  }
242
- elseif ( ! empty( $this->import_files[ $this->selected_index ] ) ) { // Use predefined import files from wp filter: pt-ocdi/import_files.
243
 
244
  // Download the import files (content, widgets and customizer files).
245
  $this->selected_import_files = Helpers::download_import_files( $this->import_files[ $this->selected_index ] );
@@ -250,23 +315,23 @@ class OneClickDemoImport {
250
  Helpers::log_error_and_send_ajax_response(
251
  $this->selected_import_files->get_error_message(),
252
  $this->log_file_path,
253
- esc_html__( 'Downloaded files', 'pt-ocdi' )
254
  );
255
  }
256
 
257
  // Add this message to log file.
258
  $log_added = Helpers::append_to_file(
259
- sprintf(
260
- __( 'The import files for: %s were successfully downloaded!', 'pt-ocdi' ),
261
  $this->import_files[ $this->selected_index ]['import_file_name']
262
  ) . Helpers::import_file_info( $this->selected_import_files ),
263
  $this->log_file_path,
264
- esc_html__( 'Downloaded files' , 'pt-ocdi' )
265
  );
266
  }
267
  else {
268
  // Send JSON Error response to the AJAX call.
269
- wp_send_json( esc_html__( 'No import files specified!', 'pt-ocdi' ) );
270
  }
271
  }
272
 
@@ -277,12 +342,12 @@ class OneClickDemoImport {
277
  $this->before_import_executed = true;
278
 
279
  /**
280
- * 2). Execute the actions hooked to the 'pt-ocdi/before_content_import_execution' action:
281
  *
282
  * Default actions:
283
  * 1 - Before content import WP action (with priority 10).
284
  */
285
- do_action( 'pt-ocdi/before_content_import_execution', $this->selected_import_files, $this->import_files, $this->selected_index );
286
  }
287
 
288
  /**
@@ -294,14 +359,14 @@ class OneClickDemoImport {
294
  }
295
 
296
  /**
297
- * 4). Execute the actions hooked to the 'pt-ocdi/after_content_import_execution' action:
298
  *
299
  * Default actions:
300
  * 1 - Before widgets import setup (with priority 10).
301
  * 2 - Import widgets (with priority 20).
302
  * 3 - Import Redux data (with priority 30).
303
  */
304
- do_action( 'pt-ocdi/after_content_import_execution', $this->selected_import_files, $this->import_files, $this->selected_index );
305
 
306
  // Save the import data as a transient, so other import parts (in new AJAX calls) can use that data.
307
  Helpers::set_ocdi_import_data_transient( $this->get_current_importer_data() );
@@ -312,7 +377,7 @@ class OneClickDemoImport {
312
  }
313
 
314
  // Request the after all import AJAX call.
315
- if ( false !== has_action( 'pt-ocdi/after_all_import_execution' ) ) {
316
  wp_send_json( array( 'status' => 'afterAllImportAJAX' ) );
317
  }
318
 
@@ -339,11 +404,11 @@ class OneClickDemoImport {
339
  * Default actions:
340
  * 1 - Customizer import (with priority 10).
341
  */
342
- do_action( 'pt-ocdi/customizer_import_execution', $this->selected_import_files );
343
  }
344
 
345
  // Request the after all import AJAX call.
346
- if ( false !== has_action( 'pt-ocdi/after_all_import_execution' ) ) {
347
  wp_send_json( array( 'status' => 'afterAllImportAJAX' ) );
348
  }
349
 
@@ -367,7 +432,7 @@ class OneClickDemoImport {
367
  * Default actions:
368
  * 1 - after_import action (with priority 10).
369
  */
370
- do_action( 'pt-ocdi/after_all_import_execution', $this->selected_import_files, $this->import_files, $this->selected_index );
371
  }
372
 
373
  // Send a JSON response with final report.
@@ -382,47 +447,29 @@ class OneClickDemoImport {
382
  // Delete importer data transient for current import.
383
  delete_transient( 'ocdi_importer_data' );
384
 
385
- // Display final messages (success or error messages).
386
- if ( empty( $this->frontend_error_messages ) ) {
387
- $response['message'] = '';
388
-
389
- if ( ! apply_filters( 'pt-ocdi/disable_pt_branding', false ) ) {
390
- $twitter_status = esc_html__( 'Just used One Click Demo Import plugin and it was awesome! Thanks @ProteusThemes! #OCDI https://www.proteusthemes.com/', 'pt-ocdi' );
391
-
392
- $response['message'] .= sprintf(
393
- __( '%1$s%6$sWasn\'t this a great One Click Demo Import experience?%7$s Created and maintained by %3$sProteusThemes%4$s. %2$s%5$sClick to Tweet!%4$s%8$s', 'pt-ocdi' ),
394
- '<div class="notice notice-info"><p>',
395
- '<br>',
396
- '<strong><a href="https://www.proteusthemes.com/" target="_blank">',
397
- '</a></strong>',
398
- '<strong><a href="' . add_query_arg( 'status', urlencode( $twitter_status ), 'http://twitter.com/home' ) . '" target="_blank">',
399
- '<strong>',
400
- '</strong>',
401
- '</p></div>'
402
- );
403
- }
404
 
405
- $response['message'] .= sprintf(
406
- __( '%1$s%3$sThat\'s it, all done!%4$s%2$sThe demo import has finished. Please check your page and make sure that everything has imported correctly. If it did, you can deactivate the %3$sOne Click Demo Import%4$s plugin, because it has done its job.%5$s', 'pt-ocdi' ),
407
- '<div class="notice notice-success"><p>',
408
- '<br>',
409
- '<strong>',
410
- '</strong>',
411
- '</p></div>'
412
- );
413
- }
414
- else {
415
- $response['message'] = $this->frontend_error_messages_display() . '<br>';
416
- $response['message'] .= sprintf(
417
- __( '%1$sThe demo import has finished, but there were some import errors.%2$sMore details about the errors can be found in this %3$s%5$slog file%6$s%4$s%7$s', 'pt-ocdi' ),
418
- '<div class="notice notice-warning"><p>',
419
- '<br>',
420
- '<strong>',
421
- '</strong>',
422
- '<a href="' . Helpers::get_log_url( $this->log_file_path ) .'" target="_blank">',
423
- '</a>',
424
- '</p></div>'
425
  );
 
 
426
  }
427
 
428
  wp_send_json( $response );
@@ -517,14 +564,6 @@ class OneClickDemoImport {
517
  }
518
 
519
 
520
- /**
521
- * Load the plugin textdomain, so that translations can be made.
522
- */
523
- public function load_textdomain() {
524
- load_plugin_textdomain( 'pt-ocdi', false, plugin_basename( dirname( dirname( __FILE__ ) ) ) . '/languages' );
525
- }
526
-
527
-
528
  /**
529
  * Get data from filters, after the theme has loaded and instantiate the importer.
530
  */
@@ -534,22 +573,22 @@ class OneClickDemoImport {
534
  }
535
 
536
  // Get info of import data files and filter it.
537
- $this->import_files = Helpers::validate_import_file_info( apply_filters( 'pt-ocdi/import_files', array() ) );
538
 
539
  /**
540
  * Register all default actions (before content import, widget, customizer import and other actions)
541
- * to the 'before_content_import_execution' and the 'pt-ocdi/after_content_import_execution' action hook.
542
  */
543
  $import_actions = new ImportActions();
544
  $import_actions->register_hooks();
545
 
546
  // Importer options array.
547
- $importer_options = apply_filters( 'pt-ocdi/importer_options', array(
548
  'fetch_attachments' => true,
549
  ) );
550
 
551
  // Logger options for the logger used in the importer.
552
- $logger_options = apply_filters( 'pt-ocdi/logger_options', array(
553
  'logger_min_level' => 'warning',
554
  ) );
555
 
@@ -559,5 +598,72 @@ class OneClickDemoImport {
559
 
560
  // Create importer instance with proper parameters.
561
  $this->importer = new Importer( $importer_options, $logger );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
562
  }
563
  }
25
  */
26
  public $importer;
27
 
28
+ /**
29
+ * The instance of the OCDI\PluginInstaller class.
30
+ *
31
+ * @var PluginInstaller object
32
+ */
33
+ public $plugin_installer;
34
+
35
  /**
36
  * The resulting page's hook_suffix, or false if the user does not have the capability required.
37
  *
81
  */
82
  private $before_import_executed = false;
83
 
84
+ /**
85
+ * Make plugin page options available to other methods.
86
+ *
87
+ * @var array
88
+ */
89
+ private $plugin_page_setup = array();
90
 
91
  /**
92
  * Returns the *Singleton* instance of this class.
111
  // Actions.
112
  add_action( 'admin_menu', array( $this, 'create_plugin_page' ) );
113
  add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) );
114
+ add_action( 'wp_ajax_ocdi_upload_manual_import_files', array( $this, 'upload_manual_import_files_callback' ) );
115
  add_action( 'wp_ajax_ocdi_import_demo_data', array( $this, 'import_demo_data_ajax_callback' ) );
116
  add_action( 'wp_ajax_ocdi_import_customizer_data', array( $this, 'import_customizer_data_ajax_callback' ) );
117
  add_action( 'wp_ajax_ocdi_after_import_data', array( $this, 'after_all_import_data_ajax_callback' ) );
118
  add_action( 'after_setup_theme', array( $this, 'setup_plugin_with_filter_data' ) );
119
+ add_action( 'network_admin_notices', array( $this, 'start_notice_output_capturing' ), 0 );
120
+ add_action( 'user_admin_notices', array( $this, 'start_notice_output_capturing' ), 0 );
121
+ add_action( 'admin_notices', array( $this, 'start_notice_output_capturing' ), 0 );
122
+ add_action( 'all_admin_notices', array( $this, 'finish_notice_output_capturing' ), PHP_INT_MAX );
123
  }
124
 
125
 
132
 
133
 
134
  /**
135
+ * Empty unserialize method to prevent unserializing of the *Singleton* instance.
136
  *
137
  * @return void
138
  */
139
+ public function __wakeup() {}
140
 
141
 
142
  /**
143
  * Creates the plugin page and a submenu item in WP Appearance menu.
144
  */
145
  public function create_plugin_page() {
146
+ $this->plugin_page_setup = Helpers::get_plugin_page_setup_data();
 
 
 
 
 
 
147
 
148
  $this->plugin_page = add_submenu_page(
149
  $this->plugin_page_setup['parent_slug'],
151
  $this->plugin_page_setup['menu_title'],
152
  $this->plugin_page_setup['capability'],
153
  $this->plugin_page_setup['menu_slug'],
154
+ Helpers::apply_filters( 'ocdi/plugin_page_display_callback_function', array( $this, 'display_plugin_page' ) )
155
  );
156
 
157
+ register_importer( $this->plugin_page_setup['menu_slug'], $this->plugin_page_setup['page_title'], $this->plugin_page_setup['menu_title'], Helpers::apply_filters( 'ocdi/plugin_page_display_callback_function', array( $this, 'display_plugin_page' ) ) );
158
  }
159
 
160
  /**
162
  * Output (HTML) is in another file.
163
  */
164
  public function display_plugin_page() {
165
+
166
+ if ( isset( $_GET['step'] ) && 'install-plugins' === $_GET['step'] ) {
167
+ require_once OCDI_PATH . 'views/install-plugins.php';
168
+
169
+ return;
170
+ }
171
+
172
+ if ( isset( $_GET['step'] ) && 'create-content' === $_GET['step'] ) {
173
+ require_once OCDI_PATH . 'views/create-content.php';
174
+
175
+ return;
176
+ }
177
+
178
+ if ( isset( $_GET['step'] ) && 'import' === $_GET['step'] ) {
179
+ require_once OCDI_PATH . 'views/import.php';
180
+
181
+ return;
182
+ }
183
+
184
+ require_once OCDI_PATH . 'views/plugin-page.php';
185
  }
186
 
187
 
193
  public function admin_enqueue_scripts( $hook ) {
194
  // Enqueue the scripts only on the plugin page.
195
  if ( $this->plugin_page === $hook || ( 'admin.php' === $hook && $this->plugin_page_setup['menu_slug'] === esc_attr( $_GET['import'] ) ) ) {
196
+ wp_enqueue_script( 'ocdi-main-js', OCDI_URL . 'assets/js/main.js' , array( 'jquery' ), OCDI_VERSION );
 
 
 
197
 
198
  // Get theme data.
199
  $theme = wp_get_theme();
203
  'ajax_url' => admin_url( 'admin-ajax.php' ),
204
  'ajax_nonce' => wp_create_nonce( 'ocdi-ajax-verification' ),
205
  'import_files' => $this->import_files,
206
+ 'wp_customize_on' => Helpers::apply_filters( 'ocdi/enable_wp_customize_save_hooks', false ),
 
207
  'theme_screenshot' => $theme->get_screenshot(),
208
+ 'missing_plugins' => $this->plugin_installer->get_missing_plugins(),
209
+ 'plugin_url' => OCDI_URL,
210
+ 'import_url' => $this->get_plugin_settings_url( [ 'step' => 'import' ] ),
211
  'texts' => array(
212
+ 'missing_preview_image' => esc_html__( 'No preview image defined for this import.', 'one-click-demo-import' ),
213
+ 'dialog_title' => esc_html__( 'Are you sure?', 'one-click-demo-import' ),
214
+ 'dialog_no' => esc_html__( 'Cancel', 'one-click-demo-import' ),
215
+ 'dialog_yes' => esc_html__( 'Yes, import!', 'one-click-demo-import' ),
216
+ 'selected_import_title' => esc_html__( 'Selected demo import:', 'one-click-demo-import' ),
217
+ 'installing' => esc_html__( 'Installing...', 'one-click-demo-import' ),
218
+ 'importing' => esc_html__( 'Importing...', 'one-click-demo-import' ),
219
+ 'successful_import' => esc_html__( 'Successfully Imported!', 'one-click-demo-import' ),
220
+ 'install_plugin' => esc_html__( 'Install Plugin', 'one-click-demo-import' ),
221
+ 'installed' => esc_html__( 'Installed', 'one-click-demo-import' ),
222
+ 'import_failed' => esc_html__( 'Import Failed', 'one-click-demo-import' ),
223
+ 'import_failed_subtitle' => esc_html__( 'Whoops, there was a problem importing your content.', 'one-click-demo-import' ),
224
+ 'plugin_install_failed' => esc_html__( 'Looks like some of the plugins failed to install. Please try again. If this issue persists, please manually install the failing plugins and come back to this step to import the theme demo data.', 'one-click-demo-import' ),
225
+ 'content_filetype_warn' => esc_html__( 'Invalid file type detected! Please select an XML file for the Content Import.', 'one-click-demo-import' ),
226
+ 'widgets_filetype_warn' => esc_html__( 'Invalid file type detected! Please select a JSON or WIE file for the Widgets Import.', 'one-click-demo-import' ),
227
+ 'customizer_filetype_warn' => esc_html__( 'Invalid file type detected! Please select a DAT file for the Customizer Import.', 'one-click-demo-import' ),
228
+ 'redux_filetype_warn' => esc_html__( 'Invalid file type detected! Please select a JSON file for the Redux Import.', 'one-click-demo-import' ),
229
  ),
 
230
  )
231
  );
232
 
233
+ wp_enqueue_style( 'ocdi-main-css', OCDI_URL . 'assets/css/main.css', array() , OCDI_VERSION );
234
  }
235
  }
236
 
237
 
238
+ /**
239
+ * AJAX callback method for uploading the manual import files.
240
+ */
241
+ public function upload_manual_import_files_callback() {
242
+ Helpers::verify_ajax_call();
243
+
244
+ if ( empty( $_FILES ) ) {
245
+ wp_send_json_error( esc_html__( 'Manual import files are missing! Please select the import files and try again.', 'one-click-demo-import' ) );
246
+ }
247
+
248
+ // Create a date and time string to use for demo and log file names.
249
+ Helpers::set_demo_import_start_time();
250
+
251
+ // Define log file path.
252
+ $this->log_file_path = Helpers::get_log_path();
253
+
254
+ $this->selected_index = 0;
255
+
256
+ // Get paths for the uploaded files.
257
+ $this->selected_import_files = Helpers::process_uploaded_files( $_FILES, $this->log_file_path );
258
+
259
+ // Set the name of the import files, because we used the uploaded files.
260
+ $this->import_files[ $this->selected_index ]['import_file_name'] = esc_html__( 'Manually uploaded files', 'one-click-demo-import' );
261
+
262
+ // Save the initial import data as a transient, so the next import call (in new AJAX call) can use that data.
263
+ Helpers::set_ocdi_import_data_transient( $this->get_current_importer_data() );
264
+
265
+ wp_send_json_success();
266
+ }
267
+
268
+
269
  /**
270
  * Main AJAX callback function for:
271
  * 1). prepare import files (uploaded or predefined via filters)
275
  */
276
  public function import_demo_data_ajax_callback() {
277
  // Try to update PHP memory limit (so that it does not run out of it).
278
+ ini_set( 'memory_limit', Helpers::apply_filters( 'ocdi/import_memory_limit', '350M' ) );
279
 
280
  // Verify if the AJAX call is valid (checks nonce and current_user_can).
281
  Helpers::verify_ajax_call();
295
 
296
  /**
297
  * 1). Prepare import files.
298
+ * Manually uploaded import files or predefined import files via filter: ocdi/import_files
299
  */
300
  if ( ! empty( $_FILES ) ) { // Using manual file uploads?
301
  // Get paths for the uploaded files.
302
  $this->selected_import_files = Helpers::process_uploaded_files( $_FILES, $this->log_file_path );
303
 
304
  // Set the name of the import files, because we used the uploaded files.
305
+ $this->import_files[ $this->selected_index ]['import_file_name'] = esc_html__( 'Manually uploaded files', 'one-click-demo-import' );
306
  }
307
+ elseif ( ! empty( $this->import_files[ $this->selected_index ] ) ) { // Use predefined import files from wp filter: ocdi/import_files.
308
 
309
  // Download the import files (content, widgets and customizer files).
310
  $this->selected_import_files = Helpers::download_import_files( $this->import_files[ $this->selected_index ] );
315
  Helpers::log_error_and_send_ajax_response(
316
  $this->selected_import_files->get_error_message(),
317
  $this->log_file_path,
318
+ esc_html__( 'Downloaded files', 'one-click-demo-import' )
319
  );
320
  }
321
 
322
  // Add this message to log file.
323
  $log_added = Helpers::append_to_file(
324
+ sprintf( /* translators: %s - the name of the selected import. */
325
+ __( 'The import files for: %s were successfully downloaded!', 'one-click-demo-import' ),
326
  $this->import_files[ $this->selected_index ]['import_file_name']
327
  ) . Helpers::import_file_info( $this->selected_import_files ),
328
  $this->log_file_path,
329
+ esc_html__( 'Downloaded files' , 'one-click-demo-import' )
330
  );
331
  }
332
  else {
333
  // Send JSON Error response to the AJAX call.
334
+ wp_send_json( esc_html__( 'No import files specified!', 'one-click-demo-import' ) );
335
  }
336
  }
337
 
342
  $this->before_import_executed = true;
343
 
344
  /**
345
+ * 2). Execute the actions hooked to the 'ocdi/before_content_import_execution' action:
346
  *
347
  * Default actions:
348
  * 1 - Before content import WP action (with priority 10).
349
  */
350
+ Helpers::do_action( 'ocdi/before_content_import_execution', $this->selected_import_files, $this->import_files, $this->selected_index );
351
  }
352
 
353
  /**
359
  }
360
 
361
  /**
362
+ * 4). Execute the actions hooked to the 'ocdi/after_content_import_execution' action:
363
  *
364
  * Default actions:
365
  * 1 - Before widgets import setup (with priority 10).
366
  * 2 - Import widgets (with priority 20).
367
  * 3 - Import Redux data (with priority 30).
368
  */
369
+ Helpers::do_action( 'ocdi/after_content_import_execution', $this->selected_import_files, $this->import_files, $this->selected_index );
370
 
371
  // Save the import data as a transient, so other import parts (in new AJAX calls) can use that data.
372
  Helpers::set_ocdi_import_data_transient( $this->get_current_importer_data() );
377
  }
378
 
379
  // Request the after all import AJAX call.
380
+ if ( false !== Helpers::has_action( 'ocdi/after_all_import_execution' ) ) {
381
  wp_send_json( array( 'status' => 'afterAllImportAJAX' ) );
382
  }
383
 
404
  * Default actions:
405
  * 1 - Customizer import (with priority 10).
406
  */
407
+ Helpers::do_action( 'ocdi/customizer_import_execution', $this->selected_import_files );
408
  }
409
 
410
  // Request the after all import AJAX call.
411
+ if ( false !== Helpers::has_action( 'ocdi/after_all_import_execution' ) ) {
412
  wp_send_json( array( 'status' => 'afterAllImportAJAX' ) );
413
  }
414
 
432
  * Default actions:
433
  * 1 - after_import action (with priority 10).
434
  */
435
+ Helpers::do_action( 'ocdi/after_all_import_execution', $this->selected_import_files, $this->import_files, $this->selected_index );
436
  }
437
 
438
  // Send a JSON response with final report.
447
  // Delete importer data transient for current import.
448
  delete_transient( 'ocdi_importer_data' );
449
 
450
+ // Display final messages (success or warning messages).
451
+ $response['title'] = esc_html__( 'Import Complete!', 'one-click-demo-import' );
452
+ $response['subtitle'] = '<p>' . esc_html__( 'Congrats, your demo was imported successfully. You can now begin editing your site.', 'one-click-demo-import' ) . '</p>';
453
+ $response['message'] = '<img class="ocdi-imported-content-imported ocdi-imported-content-imported--success" src="' . esc_url( OCDI_URL . 'assets/images/success.svg' ) . '" alt="' . esc_attr__( 'Successful Import', 'one-click-demo-import' ) . '">';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
454
 
455
+ if ( ! empty( $this->frontend_error_messages ) ) {
456
+ $response['subtitle'] = '<p>' . esc_html__( 'Your import completed, but some things may not have imported properly.', 'one-click-demo-import' ) . '</p>';
457
+ $response['subtitle'] .= sprintf(
458
+ wp_kses(
459
+ /* translators: %s - link to the log file. */
460
+ __( '<p><a href="%s" target="_blank">View error log</a> for more information.</p>', 'one-click-demo-import' ),
461
+ array(
462
+ 'p' => [],
463
+ 'a' => [
464
+ 'href' => [],
465
+ 'target' => [],
466
+ ],
467
+ )
468
+ ),
469
+ Helpers::get_log_url( $this->log_file_path )
 
 
 
 
 
470
  );
471
+
472
+ $response['message'] = '<div class="notice notice-warning"><p>' . $this->frontend_error_messages_display() . '</p></div>';
473
  }
474
 
475
  wp_send_json( $response );
564
  }
565
 
566
 
 
 
 
 
 
 
 
 
567
  /**
568
  * Get data from filters, after the theme has loaded and instantiate the importer.
569
  */
573
  }
574
 
575
  // Get info of import data files and filter it.
576
+ $this->import_files = Helpers::validate_import_file_info( Helpers::apply_filters( 'ocdi/import_files', array() ) );
577
 
578
  /**
579
  * Register all default actions (before content import, widget, customizer import and other actions)
580
+ * to the 'before_content_import_execution' and the 'ocdi/after_content_import_execution' action hook.
581
  */
582
  $import_actions = new ImportActions();
583
  $import_actions->register_hooks();
584
 
585
  // Importer options array.
586
+ $importer_options = Helpers::apply_filters( 'ocdi/importer_options', array(
587
  'fetch_attachments' => true,
588
  ) );
589
 
590
  // Logger options for the logger used in the importer.
591
+ $logger_options = Helpers::apply_filters( 'ocdi/logger_options', array(
592
  'logger_min_level' => 'warning',
593
  ) );
594
 
598
 
599
  // Create importer instance with proper parameters.
600
  $this->importer = new Importer( $importer_options, $logger );
601
+
602
+ // Prepare registered plugins and register AJAX callbacks.
603
+ $this->plugin_installer = new PluginInstaller();
604
+ $this->plugin_installer->init();
605
+
606
+ // Prepare registered pre-created demo content pages and the AJAX callback.
607
+ $demo_content_creator = new CreateDemoContent\DemoContentCreator();
608
+ $demo_content_creator->init();
609
+ }
610
+
611
+ /**
612
+ * Getter for $plugin_page_setup.
613
+ *
614
+ * @return array
615
+ */
616
+ public function get_plugin_page_setup() {
617
+ return $this->plugin_page_setup;
618
+ }
619
+
620
+ /**
621
+ * Output the begining of the container div for all notices, but only on OCDI pages.
622
+ */
623
+ public function start_notice_output_capturing() {
624
+ $screen = get_current_screen();
625
+
626
+ if ( false === strpos( $screen->base, $this->plugin_page_setup['menu_slug'] ) ) {
627
+ return;
628
+ }
629
+
630
+ echo '<div class="ocdi-notices-wrapper js-ocdi-notice-wrapper">';
631
+ }
632
+
633
+ /**
634
+ * Output the ending of the container div for all notices, but only on OCDI pages.
635
+ */
636
+ public function finish_notice_output_capturing() {
637
+ $screen = get_current_screen();
638
+
639
+ if ( false === strpos( $screen->base, $this->plugin_page_setup['menu_slug'] ) ) {
640
+ return;
641
+ }
642
+
643
+ echo '</div><!-- /.ocdi-notices-wrapper -->';
644
+ }
645
+
646
+ /**
647
+ * Get the URL of the plugin settings page.
648
+ *
649
+ * @return string
650
+ */
651
+ public function get_plugin_settings_url( $query_parameters = [] ) {
652
+ if ( empty( $this->plugin_page_setup ) ) {
653
+ $this->plugin_page_setup = Helpers::get_plugin_page_setup_data();
654
+ }
655
+
656
+ $parameters = array_merge(
657
+ array( 'page' => $this->plugin_page_setup['menu_slug'] ),
658
+ $query_parameters
659
+ );
660
+
661
+ $url = menu_page_url( $this->plugin_page_setup['parent_slug'], false );
662
+
663
+ if ( empty( $url ) ) {
664
+ $url = self_admin_url( $this->plugin_page_setup['parent_slug'] );
665
+ }
666
+
667
+ return add_query_arg( $parameters, $url );
668
  }
669
  }
inc/PluginInstaller.php ADDED
@@ -0,0 +1,587 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Plugin Installer class - responsible for installing other plugins.
4
+ *
5
+ * @package ocdi
6
+ */
7
+
8
+ namespace OCDI;
9
+
10
+ class PluginInstaller {
11
+
12
+ /**
13
+ * Holds all registered plugins.
14
+ *
15
+ * @var array
16
+ */
17
+ private $plugins;
18
+
19
+ /**
20
+ * Initialize everything needed for the plugin installer class to function properly.
21
+ */
22
+ public function init() {
23
+ $this->set_plugins();
24
+
25
+ add_action( 'ocdi/plugin_intaller_before_plugin_activation', array( $this, 'before_plugin_activation' ) );
26
+ add_action( 'ocdi/plugin_intaller_after_plugin_activation', array( $this, 'after_plugin_activation' ) );
27
+
28
+ add_action( 'wp_ajax_ocdi_install_plugin', array( $this, 'install_plugin_callback' ) );
29
+ }
30
+
31
+ /**
32
+ * Prevent the auto redirects for our recommended plugins.
33
+ * This code is run before plugin is activated.
34
+ *
35
+ * @param string $slug The plugin slug.
36
+ */
37
+ public function before_plugin_activation( $slug ) {
38
+ // Disable the WPForms redirect after plugin activation.
39
+ if ( $slug === 'wpforms-lite' ) {
40
+ update_option( 'wpforms_activation_redirect', true );
41
+ }
42
+
43
+ // Disable the AIOSEO redirect after plugin activation.
44
+ if ( $slug === 'all-in-one-seo-pack' ) {
45
+ update_option( 'aioseo_activation_redirect', true );
46
+ }
47
+
48
+ // Disable the WP Mail SMTP redirect after plugin activation.
49
+ if ( $slug === 'wp-mail-smtp' ) {
50
+ update_option( 'wp_mail_smtp_activation_prevent_redirect', true );
51
+ }
52
+ }
53
+
54
+ /**
55
+ * Prevent the auto redirects for our recommended plugins.
56
+ * This code is run after plugin is activated.
57
+ *
58
+ * @param string $slug The plugin slug.
59
+ */
60
+ public function after_plugin_activation( $slug ) {
61
+ // Disable the RafflePress redirect after plugin activation.
62
+ if ( $slug === 'rafflepress' ) {
63
+ delete_transient('_rafflepress_welcome_screen_activation_redirect');
64
+ }
65
+
66
+ // Disable the MonsterInsights redirect after plugin activation.
67
+ if ( $slug === 'google-analytics-for-wordpress' ) {
68
+ delete_transient('_monsterinsights_activation_redirect');
69
+ }
70
+
71
+ // Disable the SeedProd redirect after the plugin activation.
72
+ if ( $slug === 'coming-soon' ) {
73
+ delete_transient( '_seedprod_welcome_screen_activation_redirect' );
74
+ }
75
+ }
76
+
77
+ /**
78
+ * Get all partner plugins data.
79
+ *
80
+ * @return array[]
81
+ */
82
+ public function get_partner_plugins() {
83
+ return array(
84
+ array(
85
+ 'name' => esc_html__( 'WPForms', 'one-click-demo-import' ),
86
+ 'description' => esc_html__( 'Join 4,000,000+ professionals who build smarter forms and surveys with WPForms.', 'one-click-demo-import' ),
87
+ 'slug' => 'wpforms-lite',
88
+ 'required' => false,
89
+ 'preselected' => true,
90
+ ),
91
+ array(
92
+ 'name' => esc_html__( 'All in One SEO', 'one-click-demo-import' ),
93
+ 'description' => esc_html__( 'Use All in One SEO Pack to optimize your WordPress site for SEO.', 'one-click-demo-import' ),
94
+ 'slug' => 'all-in-one-seo-pack',
95
+ 'required' => false,
96
+ 'preselected' => true,
97
+ ),
98
+ array(
99
+ 'name' => esc_html__( 'MonsterInsights', 'one-click-demo-import' ),
100
+ 'description' => esc_html__( 'The #1 Google Analytics Plugin for WordPress that’s easy and powerful.', 'one-click-demo-import' ),
101
+ 'slug' => 'google-analytics-for-wordpress',
102
+ 'required' => false,
103
+ 'preselected' => true,
104
+ ),
105
+ array(
106
+ 'name' => esc_html__( 'Custom Landing Pages by SeedProd', 'one-click-demo-import' ),
107
+ 'description' => esc_html__( 'Work on your site in private while visitors see a "Coming Soon" or "Maintenance Mode" page.', 'one-click-demo-import' ),
108
+ 'slug' => 'coming-soon',
109
+ 'required' => false,
110
+ ),
111
+ array(
112
+ 'name' => esc_html__( 'Smash Balloon Social Photo Feed', 'one-click-demo-import' ),
113
+ 'description' => esc_html__( 'Display beautifully clean, customizable, and responsive Instagram feeds.', 'one-click-demo-import' ),
114
+ 'slug' => 'instagram-feed',
115
+ 'required' => false,
116
+ ),
117
+ array(
118
+ 'name' => esc_html__( 'WP Mail SMTP', 'one-click-demo-import' ),
119
+ 'description' => esc_html__( 'Make email delivery easy for WordPress. Connect with SMTP, Gmail, Outlook, Mailgun, and more.', 'one-click-demo-import' ),
120
+ 'slug' => 'wp-mail-smtp',
121
+ 'required' => false,
122
+ ),
123
+ );
124
+ }
125
+
126
+ /**
127
+ * Set all registered plugins.
128
+ * With our recommended plugins being set as defaults.
129
+ */
130
+ public function set_plugins() {
131
+ $all_plugins = array_merge( $this->get_partner_plugins(), Helpers::apply_filters( 'ocdi/register_plugins', array() ) );
132
+
133
+ $this->plugins = $this->filter_plugins( $all_plugins );
134
+ }
135
+
136
+ /**
137
+ * Get all theme registered plugins.
138
+ * With our 3 top recommended plugins being set as defaults.
139
+ */
140
+ public function get_theme_plugins() {
141
+ $default_plugins = $this->get_top_partner_plugins();
142
+
143
+ $theme_plugins = array_merge( $default_plugins, Helpers::apply_filters( 'ocdi/register_plugins', array() ) );
144
+
145
+ return $this->filter_plugins( $theme_plugins );
146
+ }
147
+
148
+ /**
149
+ * Get the top 3 partner plugins if they are not already activated.
150
+ *
151
+ * @return array
152
+ */
153
+ private function get_top_partner_plugins() {
154
+ $installed_plugins = $this->get_plugins();
155
+ $contact_form = [
156
+ 'wpforms-lite/wpforms.php',
157
+ 'wpforms/wpforms.php',
158
+ 'formidable/formidable.php',
159
+ 'formidable/formidable-pro.php',
160
+ 'gravityforms/gravityforms.php',
161
+ 'ninja-forms/ninja-forms.php',
162
+ ];
163
+ $seo = [
164
+ 'all-in-one-seo-pack/all_in_one_seo_pack.php',
165
+ 'all-in-one-seo-pack-pro/all_in_one_seo_pack.php',
166
+ 'wordpress-seo/wp-seo.php',
167
+ 'wordpress-seo-premium/wp-seo-premium.php',
168
+ 'seo-by-rank-math/rank-math.php',
169
+ 'seo-by-rank-math-pro/rank-math-pro.php',
170
+ ];
171
+ $google_analytics = [
172
+ 'google-analytics-for-wordpress/googleanalytics.php',
173
+ 'exactmetrics-premium/exactmetrics-premium.php',
174
+ 'google-analytics-dashboard-for-wp/gadwp.php',
175
+ ];
176
+
177
+ $plugins = array_slice( $this->get_partner_plugins(), 0, 3 );
178
+
179
+ return array_filter(
180
+ $plugins,
181
+ function ( $plugin ) use ( $installed_plugins, $contact_form, $seo, $google_analytics ) {
182
+ if ( empty( $plugin['slug'] ) || empty( $plugin['name'] ) ) {
183
+ return false;
184
+ }
185
+
186
+ if ( 'wpforms-lite' === $plugin['slug'] ) {
187
+ foreach ( $installed_plugins as $basename => $plugin_info ) {
188
+ if ( in_array( $basename, $contact_form, true ) ) {
189
+ return false;
190
+ }
191
+ }
192
+ } elseif ( 'all-in-one-seo-pack' === $plugin['slug'] ) {
193
+ foreach ( $installed_plugins as $basename => $plugin_info ) {
194
+ if ( in_array( $basename, $seo, true ) ) {
195
+ return false;
196
+ }
197
+ }
198
+ } elseif ( 'google-analytics-for-wordpress' === $plugin['slug'] ) {
199
+ foreach ( $installed_plugins as $basename => $plugin_info ) {
200
+ if ( in_array( $basename, $google_analytics, true ) ) {
201
+ return false;
202
+ }
203
+ }
204
+ }
205
+
206
+ return true;
207
+ }
208
+ );
209
+ }
210
+
211
+ /**
212
+ * AJAX callback for installing a plugin.
213
+ * Has to contain the `slug` POST parameter.
214
+ */
215
+ public function install_plugin_callback() {
216
+ check_ajax_referer( 'ocdi-ajax-verification', 'security' );
217
+
218
+ // Check if user has the WP capability to install plugins.
219
+ if ( ! current_user_can( 'install_plugins' ) ) {
220
+ wp_send_json_error( esc_html__( 'Could not install the plugin. You don\'t have permission to install plugins.', 'one-click-demo-import' ) );
221
+ }
222
+
223
+ $slug = ! empty( $_POST['slug'] ) ? sanitize_key( wp_unslash( $_POST['slug'] ) ) : '';
224
+
225
+ if ( empty( $slug ) ) {
226
+ wp_send_json_error( esc_html__( 'Could not install the plugin. Plugin slug is missing.', 'one-click-demo-import' ) );
227
+ }
228
+
229
+ // Check if the plugin is already installed and activated.
230
+ if ( $this->is_plugin_active( $slug ) ) {
231
+ wp_send_json_success( esc_html__( 'Plugin is already installed and activated!', 'one-click-demo-import' ) );
232
+ }
233
+
234
+ // Activate the plugin if the plugin is already installed.
235
+ if ( $this->is_plugin_installed( $slug ) ) {
236
+ $activated = $this->activate_plugin( $this->get_plugin_basename_from_slug( $slug ), $slug );
237
+
238
+ if ( ! is_wp_error( $activated ) ) {
239
+ wp_send_json_success( esc_html__( 'Plugin was already installed! We activated it for you.', 'one-click-demo-import' ) );
240
+ } else {
241
+ wp_send_json_error( $activated->get_error_message() );
242
+ }
243
+ }
244
+
245
+ // Check for file system permissions.
246
+ if ( ! $this->filesystem_permissions_allowed() ) {
247
+ wp_send_json_error( esc_html__( 'Could not install the plugin. Don\'t have file permission.', 'one-click-demo-import' ) );
248
+ }
249
+
250
+ // Do not allow WordPress to search/download translations, as this will break JS output.
251
+ remove_action( 'upgrader_process_complete', [ 'Language_Pack_Upgrader', 'async_upgrade' ], 20 );
252
+
253
+ // Prep variables for Plugin_Installer_Skin class.
254
+ $extra = array();
255
+ $extra['slug'] = $slug; // Needed for potentially renaming of directory name.
256
+ $source = $this->get_download_url( $slug );
257
+ $api = empty( $this->get_plugin_data( $slug )['source'] ) ? $this->get_plugins_api( $slug ) : null;
258
+ $api = ( false !== $api ) ? $api : null;
259
+
260
+ if ( ! empty( $api ) && is_wp_error( $api ) ) {
261
+ wp_send_json_error( $api->get_error_message() );
262
+ }
263
+
264
+ if ( ! class_exists( '\Plugin_Upgrader', false ) ) {
265
+ require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
266
+ }
267
+
268
+ $skin_args = array(
269
+ 'type' => 'web',
270
+ 'plugin' => '',
271
+ 'api' => $api,
272
+ 'extra' => $extra,
273
+ );
274
+
275
+ $upgrader = new \Plugin_Upgrader( new PluginInstallerSkin( $skin_args ) );
276
+
277
+ $upgrader->install( $source );
278
+
279
+ // Flush the cache and return the newly installed plugin basename.
280
+ wp_cache_flush();
281
+
282
+ if ( $upgrader->plugin_info() ) {
283
+ $activated = $this->activate_plugin( $upgrader->plugin_info(), $slug );
284
+
285
+ if ( ! is_wp_error( $activated ) ) {
286
+ wp_send_json_success(
287
+ esc_html__( 'Plugin installed and activated succesfully.', 'one-click-demo-import' )
288
+ );
289
+ } else {
290
+ wp_send_json_success( $activated->get_error_message() );
291
+ }
292
+ }
293
+
294
+ wp_send_json_error( esc_html__( 'Could not install the plugin. WP Plugin installer could not retrieve plugin information.', 'one-click-demo-import' ) );
295
+ }
296
+
297
+ /**
298
+ * Direct plugin install, without AJAX responses.
299
+ *
300
+ * @param string $slug The registered plugin slug to install.
301
+ *
302
+ * @return bool
303
+ */
304
+ public function install_plugin( $slug ) {
305
+ if ( empty( $slug ) ) {
306
+ return false;
307
+ }
308
+
309
+ // Check if user has the WP capability to install plugins.
310
+ if ( ! current_user_can( 'install_plugins' ) ) {
311
+ return false;
312
+ }
313
+
314
+ // Check if the plugin is already installed and activated.
315
+ if ( $this->is_plugin_active( $slug ) ) {
316
+ return true;
317
+ }
318
+
319
+ // Activate the plugin if the plugin is already installed.
320
+ if ( $this->is_plugin_installed( $slug ) ) {
321
+ $activated = $this->activate_plugin( $this->get_plugin_basename_from_slug( $slug ), $slug );
322
+
323
+ return ! is_wp_error( $activated );
324
+ }
325
+
326
+ // Check for file system permissions.
327
+ if ( ! $this->filesystem_permissions_allowed() ) {
328
+ return false;
329
+ }
330
+
331
+ // Do not allow WordPress to search/download translations, as this will break JS output.
332
+ remove_action( 'upgrader_process_complete', [ 'Language_Pack_Upgrader', 'async_upgrade' ], 20 );
333
+
334
+ // Prep variables for Plugin_Installer_Skin class.
335
+ $extra = array();
336
+ $extra['slug'] = $slug; // Needed for potentially renaming of directory name.
337
+ $source = $this->get_download_url( $slug );
338
+ $api = empty( $this->get_plugin_data( $slug )['source'] ) ? $this->get_plugins_api( $slug ) : null;
339
+ $api = ( false !== $api ) ? $api : null;
340
+
341
+ if ( ! empty( $api ) && is_wp_error( $api ) ) {
342
+ return false;
343
+ }
344
+
345
+ if ( ! class_exists( '\Plugin_Upgrader', false ) ) {
346
+ require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
347
+ }
348
+
349
+ $skin_args = array(
350
+ 'type' => 'web',
351
+ 'plugin' => '',
352
+ 'api' => $api,
353
+ 'extra' => $extra,
354
+ );
355
+
356
+ $upgrader = new \Plugin_Upgrader( new PluginInstallerSkinSilent( $skin_args ) );
357
+
358
+ $upgrader->install( $source );
359
+
360
+ // Flush the cache and return the newly installed plugin basename.
361
+ wp_cache_flush();
362
+
363
+ if ( $upgrader->plugin_info() ) {
364
+ $activated = $this->activate_plugin( $upgrader->plugin_info(), $slug );
365
+
366
+ if ( ! is_wp_error( $activated ) ) {
367
+ return true;
368
+ }
369
+ }
370
+
371
+ return false;
372
+ }
373
+
374
+ /**
375
+ * Activate the plugin with the before and after hooks.
376
+ *
377
+ * @param string $plugin_filename The plugin's basename(example: wpforms/wpforms.php).
378
+ * @param string $slug The plugin's slug.
379
+ *
380
+ * @return null|WP_Error Null on success, WP_Error on invalid file.
381
+ */
382
+ private function activate_plugin( $plugin_filename, $slug ) {
383
+ Helpers::do_action( 'ocdi/plugin_intaller_before_plugin_activation', $slug );
384
+
385
+ $activated = activate_plugin( $plugin_filename );
386
+
387
+ Helpers::do_action( 'ocdi/plugin_intaller_after_plugin_activation', $slug );
388
+
389
+ return $activated;
390
+ }
391
+
392
+ /**
393
+ * Helper function to check for the filesystem permissions.
394
+ *
395
+ * @return bool
396
+ */
397
+ private function filesystem_permissions_allowed() {
398
+ $ocdi = OneClickDemoImport::get_instance();
399
+ $url = esc_url_raw( $ocdi->get_plugin_settings_url() );
400
+ $creds = request_filesystem_credentials( $url, '', false, false, null );
401
+
402
+ // Check for file system permissions.
403
+ if ( false === $creds || ! WP_Filesystem( $creds ) ) {
404
+ return false;
405
+ }
406
+
407
+ return true;
408
+ }
409
+
410
+ /**
411
+ * Get the data of a registered plugin via the slug.
412
+ *
413
+ * @param string $slug The plugin slug.
414
+ *
415
+ * @return array
416
+ */
417
+ public function get_plugin_data( $slug ) {
418
+ $data = [];
419
+
420
+ foreach ( $this->plugins as $plugin ) {
421
+ if ( $plugin['slug'] === $slug ) {
422
+ $data = $plugin;
423
+ break;
424
+ }
425
+ }
426
+
427
+ return $data;
428
+ }
429
+
430
+ /**
431
+ * Get the download URL for a plugin.
432
+ *
433
+ * @param string $slug Plugin slug.
434
+ *
435
+ * @return string Plugin download URL.
436
+ */
437
+ public function get_download_url( $slug ) {
438
+ $plugin_data = $this->get_plugin_data( $slug );
439
+
440
+ if ( ! empty( $plugin_data['source'] ) ) {
441
+ return $plugin_data['source'];
442
+ }
443
+
444
+ return $this->get_wp_repo_download_url( $slug );
445
+ }
446
+
447
+ /**
448
+ * Get the download URL from the WP.org.
449
+ *
450
+ * @param string $slug Plugin slug.
451
+ *
452
+ * @return string Plugin download URL from WP.org.
453
+ */
454
+ protected function get_wp_repo_download_url( $slug ) {
455
+ $source = '';
456
+ $api = $this->get_plugins_api( $slug );
457
+
458
+ if ( false !== $api && isset( $api->download_link ) ) {
459
+ $source = $api->download_link;
460
+ }
461
+
462
+ return $source;
463
+ }
464
+
465
+ /**
466
+ * Try to grab information from WordPress API.
467
+ *
468
+ * @param string $slug Plugin slug.
469
+ *
470
+ * @return object Plugins_api response object on success, WP_Error on failure.
471
+ */
472
+ protected function get_plugins_api( $slug ) {
473
+ static $api = array(); // Cache received responses.
474
+
475
+ if ( ! isset( $api[ $slug ] ) ) {
476
+ if ( ! function_exists( 'plugins_api' ) ) {
477
+ require_once ABSPATH . 'wp-admin/includes/plugin-install.php';
478
+ }
479
+
480
+ $api[ $slug ] = plugins_api( 'plugin_information', array( 'slug' => $slug, 'fields' => array( 'sections' => false ) ) );
481
+ }
482
+
483
+ return $api[ $slug ];
484
+ }
485
+
486
+ /**
487
+ * Wrapper around the core WP get_plugins function, making sure it's actually available.
488
+ *
489
+ * @param string $plugin_folder Optional. Relative path to single plugin folder.
490
+ *
491
+ * @return array Array of installed plugins with plugin information.
492
+ */
493
+ public function get_plugins( $plugin_folder = '' ) {
494
+ if ( ! function_exists( 'get_plugins' ) ) {
495
+ require_once ABSPATH . 'wp-admin/includes/plugin.php';
496
+ }
497
+
498
+ return get_plugins( $plugin_folder );
499
+ }
500
+
501
+ /**
502
+ * Helper function to extract the plugin file path from the
503
+ * plugin slug, if the plugin is installed.
504
+ *
505
+ * @param string $slug Plugin slug (typically folder name) as provided by the developer.
506
+ *
507
+ * @return string|bool Either plugin file path for plugin if installed, or false.
508
+ */
509
+ protected function get_plugin_basename_from_slug( $slug ) {
510
+ $keys = array_keys( $this->get_plugins() );
511
+
512
+ foreach ( $keys as $key ) {
513
+ if ( preg_match( '/^' . $slug . '\//', $key ) ) {
514
+ return $key;
515
+ }
516
+ }
517
+
518
+ return false;
519
+ }
520
+
521
+ /**
522
+ * Check if a plugin is installed. Does not take must-use plugins into account.
523
+ *
524
+ * @param string $slug Plugin slug.
525
+ *
526
+ * @return bool True if installed, false otherwise.
527
+ */
528
+ public function is_plugin_installed( $slug ) {
529
+ return ( ! empty( $this->get_plugin_basename_from_slug( $slug ) ) );
530
+ }
531
+
532
+ /**
533
+ * Check if a plugin is active.
534
+ *
535
+ * @param string $slug Plugin slug.
536
+ *
537
+ * @return bool True if active, false otherwise.
538
+ */
539
+ public function is_plugin_active( $slug ) {
540
+ $plugin_path = $this->get_plugin_basename_from_slug( $slug );
541
+
542
+ if ( empty( $plugin_path ) ) {
543
+ return false;
544
+ }
545
+
546
+ return is_plugin_active( $plugin_path );
547
+ }
548
+
549
+ /**
550
+ * Get the list of plugins (with their data) of all non-active and non-installed registered plugins.
551
+ *
552
+ * @return array
553
+ */
554
+ public function get_missing_plugins() {
555
+ $missing = [];
556
+
557
+ foreach ( $this->plugins as $plugin_data ) {
558
+ if ( ! $this->is_plugin_active( $plugin_data['slug'] ) ) {
559
+ $missing[] = $plugin_data;
560
+ }
561
+ }
562
+
563
+ return $missing;
564
+ }
565
+
566
+ /**
567
+ * Return only plugins with required attributes:
568
+ * - name
569
+ * - slug
570
+ *
571
+ * @param array $plugins The array of plugin's data.
572
+ *
573
+ * @return array
574
+ */
575
+ private function filter_plugins( $plugins ) {
576
+ return array_filter(
577
+ $plugins,
578
+ function ( $plugin ) {
579
+ if ( empty( $plugin['slug'] ) || empty( $plugin['name'] ) ) {
580
+ return false;
581
+ }
582
+
583
+ return true;
584
+ }
585
+ );
586
+ }
587
+ }
inc/PluginInstallerSkin.php ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Plugin Installer Skin class - responsible for displying info while installing plugins.
4
+ *
5
+ * @package ocdi
6
+ */
7
+
8
+ namespace OCDI;
9
+
10
+ if ( ! class_exists( '\Plugin_Upgrader', false ) ) {
11
+ require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
12
+ }
13
+
14
+ /**
15
+ * WordPress class extended for on-the-fly plugin installations.
16
+ */
17
+ class PluginInstallerSkin extends \WP_Upgrader_Skin {
18
+
19
+ /**
20
+ * Empty out the header of its HTML content.
21
+ */
22
+ public function header() {}
23
+
24
+ /**
25
+ * Empty out the footer of its HTML content.
26
+ */
27
+ public function footer() {}
28
+
29
+ /**
30
+ * Empty out the footer of its HTML content.
31
+ *
32
+ * @param string $string
33
+ * @param mixed ...$args Optional text replacements.
34
+ */
35
+ public function feedback( $string, ...$args ) {}
36
+
37
+ /**
38
+ * Empty out JavaScript output that calls function to decrement the update counts.
39
+ *
40
+ * @param string $type Type of update count to decrement.
41
+ */
42
+ public function decrement_update_count( $type ) {}
43
+
44
+ /**
45
+ * Instead of outputting HTML for errors, json_encode the errors and send them
46
+ * back to the Ajax script for processing.
47
+ *
48
+ * @param string|WP_Error $errors A string or WP_Error object of the install error/s.
49
+ */
50
+ public function error( $errors ) {
51
+ if ( empty( $errors ) ) {
52
+ return;
53
+ }
54
+
55
+ if ( is_string( $errors ) ) {
56
+ wp_send_json_error( $errors );
57
+ } elseif ( is_wp_error( $errors ) && $errors->has_errors() ) {
58
+ if ( $errors->get_error_data() && is_string( $errors->get_error_data() ) ) {
59
+ wp_send_json_error( $message . ' ' . esc_html( strip_tags( $errors->get_error_data() ) ) );
60
+ } else {
61
+ wp_send_json_error( $message );
62
+ }
63
+ }
64
+ }
65
+ }
66
+
inc/PluginInstallerSkinSilent.php ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Plugin Installer Skin class - responsible for not displying any info while installing plugins.
4
+ *
5
+ * @package ocdi
6
+ */
7
+
8
+ namespace OCDI;
9
+
10
+ if ( ! class_exists( '\Plugin_Upgrader', false ) ) {
11
+ require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
12
+ }
13
+
14
+ /**
15
+ * WordPress class extended for on-the-fly plugin installations.
16
+ */
17
+ class PluginInstallerSkinSilent extends \WP_Upgrader_Skin {
18
+
19
+ /**
20
+ * Empty out the header of its HTML content.
21
+ */
22
+ public function header() {}
23
+
24
+ /**
25
+ * Empty out the footer of its HTML content.
26
+ */
27
+ public function footer() {}
28
+
29
+ /**
30
+ * Empty out the footer of its HTML content.
31
+ *
32
+ * @param string $string
33
+ * @param mixed ...$args Optional text replacements.
34
+ */
35
+ public function feedback( $string, ...$args ) {}
36
+
37
+ /**
38
+ * Empty out JavaScript output that calls function to decrement the update counts.
39
+ *
40
+ * @param string $type Type of update count to decrement.
41
+ */
42
+ public function decrement_update_count( $type ) {}
43
+
44
+ /**
45
+ * Empty out the error HTML content.
46
+ *
47
+ * @param string|WP_Error $errors A string or WP_Error object of the install error/s.
48
+ */
49
+ public function error( $errors ) {}
50
+ }
51
+
inc/ReduxImporter.php CHANGED
@@ -20,7 +20,7 @@ class ReduxImporter {
20
 
21
  // Redux plugin is not active!
22
  if ( ! class_exists( 'ReduxFramework' ) ) {
23
- $error_message = esc_html__( 'The Redux plugin is not activated, so the Redux import was skipped!', 'pt-ocdi' );
24
 
25
  // Add any error messages to the frontend_error_messages variable in OCDI main class.
26
  $ocdi->append_to_frontend_error_messages( $error_message );
@@ -29,7 +29,7 @@ class ReduxImporter {
29
  Helpers::append_to_file(
30
  $error_message,
31
  $log_file_path,
32
- esc_html__( 'Importing Redux settings' , 'pt-ocdi' )
33
  );
34
 
35
  return;
@@ -47,14 +47,14 @@ class ReduxImporter {
47
  $redux_framework->set_options( $redux_options_data );
48
 
49
  // Add this message to log file.
50
- $log_added = Helpers::append_to_file(
51
- sprintf( esc_html__( 'Redux settings import for: %s finished successfully!', 'pt-ocdi' ), $redux_item['option_name'] ),
52
  $log_file_path,
53
- esc_html__( 'Importing Redux settings' , 'pt-ocdi' )
54
  );
55
  }
56
- else {
57
- $error_message = sprintf( esc_html__( 'The Redux option name: %s, was not found in this WP site, so it was not imported!', 'pt-ocdi' ), $redux_item['option_name'] );
58
 
59
  // Add any error messages to the frontend_error_messages variable in OCDI main class.
60
  $ocdi->append_to_frontend_error_messages( $error_message );
@@ -63,7 +63,7 @@ class ReduxImporter {
63
  Helpers::append_to_file(
64
  $error_message,
65
  $log_file_path,
66
- esc_html__( 'Importing Redux settings' , 'pt-ocdi' )
67
  );
68
  }
69
  }
20
 
21
  // Redux plugin is not active!
22
  if ( ! class_exists( 'ReduxFramework' ) ) {
23
+ $error_message = esc_html__( 'The Redux plugin is not activated, so the Redux import was skipped!', 'one-click-demo-import' );
24
 
25
  // Add any error messages to the frontend_error_messages variable in OCDI main class.
26
  $ocdi->append_to_frontend_error_messages( $error_message );
29
  Helpers::append_to_file(
30
  $error_message,
31
  $log_file_path,
32
+ esc_html__( 'Importing Redux settings' , 'one-click-demo-import' )
33
  );
34
 
35
  return;
47
  $redux_framework->set_options( $redux_options_data );
48
 
49
  // Add this message to log file.
50
+ $log_added = Helpers::append_to_file( /* translators: %s - the name of the Redux option. */
51
+ sprintf( esc_html__( 'Redux settings import for: %s finished successfully!', 'one-click-demo-import' ), $redux_item['option_name'] ),
52
  $log_file_path,
53
+ esc_html__( 'Importing Redux settings' , 'one-click-demo-import' )
54
  );
55
  }
56
+ else { /* translators: %s - the name of the Redux option. */
57
+ $error_message = sprintf( esc_html__( 'The Redux option name: %s, was not found in this WP site, so it was not imported!', 'one-click-demo-import' ), $redux_item['option_name'] );
58
 
59
  // Add any error messages to the frontend_error_messages variable in OCDI main class.
60
  $ocdi->append_to_frontend_error_messages( $error_message );
63
  Helpers::append_to_file(
64
  $error_message,
65
  $log_file_path,
66
+ esc_html__( 'Importing Redux settings' , 'one-click-demo-import' )
67
  );
68
  }
69
  }
inc/ViewHelpers.php ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Static functions used in the OCDI plugin views.
4
+ *
5
+ * @package ocdi
6
+ */
7
+
8
+ namespace OCDI;
9
+
10
+ class ViewHelpers {
11
+ /**
12
+ * The HTML output of the plugin page header.
13
+ *
14
+ * @return string HTML output.
15
+ */
16
+ public static function plugin_header_output() {
17
+ ob_start(); ?>
18
+ <div class="ocdi__title-container">
19
+ <h1 class="ocdi__title-container-title"><?php esc_html_e( 'One Click Demo Import', 'one-click-demo-import' ); ?></h1>
20
+ <a href="https://ocdi.com/user-guide/" target="_blank" rel="noopener noreferrer">
21
+ <img class="ocdi__title-container-icon" src="<?php echo esc_url( OCDI_URL . 'assets/images/icons/question-circle.svg' ); ?>" alt="<?php esc_attr_e( 'Questionmark icon', 'one-click-demo-import' ); ?>">
22
+ </a>
23
+ </div>
24
+ <?php
25
+ $plugin_title = ob_get_clean();
26
+
27
+ // Display the plugin title (can be replaced with custom title text through the filter below).
28
+ return Helpers::apply_filters( 'ocdi/plugin_page_title', $plugin_title );
29
+ }
30
+
31
+ /**
32
+ * The HTML output of a small card with theme screenshot and title.
33
+ *
34
+ * @return string HTML output.
35
+ */
36
+ public static function small_theme_card( $selected = null ) {
37
+ $theme = wp_get_theme();
38
+ $screenshot = $theme->get_screenshot();
39
+ $name = $theme->name;
40
+
41
+ if ( isset( $selected ) ) {
42
+ $ocdi = OneClickDemoImport::get_instance();
43
+ $selected_data = $ocdi->import_files[ $selected ];
44
+ $name = ! empty( $selected_data['import_file_name'] ) ? $selected_data['import_file_name'] : $name;
45
+ $screenshot = ! empty( $selected_data['import_preview_image_url'] ) ? $selected_data['import_preview_image_url'] : $screenshot;
46
+ }
47
+
48
+ ob_start(); ?>
49
+ <div class="ocdi__card ocdi__card--theme">
50
+ <div class="ocdi__card-content">
51
+ <?php if ( $screenshot ) : ?>
52
+ <div class="screenshot"><img src="<?php echo esc_url( $screenshot ); ?>" alt="<?php esc_attr_e( 'Theme screenshot', 'one-click-demo-import' ); ?>" /></div>
53
+ <?php else : ?>
54
+ <div class="screenshot blank"></div>
55
+ <?php endif; ?>
56
+ </div>
57
+ <div class="ocdi__card-footer">
58
+ <h3><?php echo esc_html( $name ); ?></h3>
59
+ </div>
60
+ </div>
61
+ <?php
62
+ return ob_get_clean();
63
+ }
64
+ }
inc/WPCLICommands.php CHANGED
@@ -31,10 +31,10 @@ class WPCLICommands extends \WP_CLI_Command {
31
  */
32
  public function list_predefined() {
33
  if ( empty( $this->ocdi->import_files ) ) {
34
- WP_CLI::error( esc_html__( 'There are no predefined demo imports for currently active theme!', 'pt-ocdi' ) );
35
  }
36
 
37
- WP_CLI::success( esc_html__( 'Here are the predefined demo imports:', 'pt-ocdi' ) );
38
 
39
  foreach ( $this->ocdi->import_files as $index => $import_file ) {
40
  WP_CLI::log( sprintf(
@@ -68,7 +68,7 @@ class WPCLICommands extends \WP_CLI_Command {
68
  */
69
  public function import( $args, $assoc_args ) {
70
  if ( ! $this->any_import_options_set( $assoc_args ) ) {
71
- WP_CLI::error( esc_html__( 'At least one of the possible options should be set! Check them with --help', 'pt-ocdi' ) );
72
  }
73
 
74
  if ( isset( $assoc_args['predefined'] ) ) {
@@ -119,47 +119,47 @@ class WPCLICommands extends \WP_CLI_Command {
119
  */
120
  private function import_predefined( $predefined_index ) {
121
  if ( ! is_numeric( $predefined_index ) ) {
122
- WP_CLI::error( esc_html__( 'The "predefined" parameter should be a number (an index of the OCDI predefined demo import)!', 'pt-ocdi' ) );
123
  }
124
 
125
  $predefined_index = absint( $predefined_index );
126
 
127
  if ( ! array_key_exists( $predefined_index, $this->ocdi->import_files ) ) {
128
- WP_CLI::warning( esc_html__( 'The supplied predefined index does not exist! Please take a look at the available predefined demo imports:', 'pt-ocdi' ) );
129
 
130
  $this->list_predefined();
131
 
132
  return false;
133
  }
134
 
135
- WP_CLI::log( esc_html__( 'Predefined demo import started! All other parameters will be ignored!', 'pt-ocdi' ) );
136
 
137
  $selected_files = $this->ocdi->import_files[ $predefined_index ];
138
 
139
- if ( ! empty( $selected_files['import_file_name'] ) ) {
140
- WP_CLI::log( sprintf( esc_html__( 'Selected predefined demo import: %s', 'pt-ocdi' ), $selected_files['import_file_name'] ) );
141
  }
142
 
143
- WP_CLI::log( esc_html__( 'Preparing the demo import files...', 'pt-ocdi' ) );
144
 
145
  $import_files = Helpers::download_import_files( $selected_files );
146
 
147
  if ( empty( $import_files ) ) {
148
- WP_CLI::error( esc_html__( 'Demo import files could not be retrieved!', 'pt-ocdi' ) );
149
  }
150
 
151
- WP_CLI::log( esc_html__( 'Demo import files retrieved successfully!', 'pt-ocdi' ) );
152
 
153
- WP_CLI::log( esc_html__( 'Importing...', 'pt-ocdi' ) );
154
 
155
  if ( ! empty( $import_files['content'] ) ) {
156
- $this->do_action( 'pt-ocdi/before_content_import_execution', $import_files, $this->ocdi->import_files, $predefined_index );
157
 
158
  $this->import_content( $import_files['content'] );
159
  }
160
 
161
  if ( ! empty( $import_files['widgets'] ) ) {
162
- $this->do_action( 'pt-ocdi/before_widgets_import', $import_files );
163
 
164
  $this->import_widgets( $import_files['widgets'] );
165
  }
@@ -168,9 +168,9 @@ class WPCLICommands extends \WP_CLI_Command {
168
  $this->import_customizer( $import_files['customizer'] );
169
  }
170
 
171
- $this->do_action( 'pt-ocdi/after_all_import_execution', $import_files, $this->ocdi->import_files, $predefined_index );
172
 
173
- WP_CLI::log( esc_html__( 'Predefined import finished!', 'pt-ocdi' ) );
174
  }
175
 
176
  /**
@@ -182,26 +182,26 @@ class WPCLICommands extends \WP_CLI_Command {
182
  $content_import_file_path = realpath( $relative_file_path );
183
 
184
  if ( ! file_exists( $content_import_file_path ) ) {
185
- WP_CLI::warning( esc_html__( 'Content import file provided does not exist! Skipping this import!', 'pt-ocdi' ) );
186
  return false;
187
  }
188
 
189
  // Change the single AJAX call duration so the whole content import will be done in one go.
190
- add_filter( 'pt-ocdi/time_for_one_ajax_call', function() {
191
  return 3600;
192
  } );
193
 
194
- WP_CLI::log( esc_html__( 'Importing content (this might take a while)...', 'pt-ocdi' ) );
195
 
196
- Helpers::append_to_file( '', $this->ocdi->log_file_path, esc_html__( 'Importing content' , 'pt-ocdi' ) );
197
 
198
  $this->ocdi->append_to_frontend_error_messages( $this->ocdi->importer->import_content( $content_import_file_path ) );
199
 
200
  if( empty( $this->ocdi->frontend_error_messages ) ) {
201
- WP_CLI::success( esc_html__( 'Content import finished!', 'pt-ocdi' ) );
202
  }
203
  else {
204
- WP_CLI::warning( esc_html__( 'There were some issues while importing the content!', 'pt-ocdi' ) );
205
 
206
  foreach ( $this->ocdi->frontend_error_messages as $line ) {
207
  WP_CLI::log( $line );
@@ -220,19 +220,19 @@ class WPCLICommands extends \WP_CLI_Command {
220
  $widgets_import_file_path = realpath( $relative_file_path );
221
 
222
  if ( ! file_exists( $widgets_import_file_path ) ) {
223
- WP_CLI::warning( esc_html__( 'Widgets import file provided does not exist! Skipping this import!', 'pt-ocdi' ) );
224
  return false;
225
  }
226
 
227
- WP_CLI::log( esc_html__( 'Importing widgets...', 'pt-ocdi' ) );
228
 
229
  WidgetImporter::import( $widgets_import_file_path );
230
 
231
  if( empty( $this->ocdi->frontend_error_messages ) ) {
232
- WP_CLI::success( esc_html__( 'Widgets imported successfully!', 'pt-ocdi' ) );
233
  }
234
  else {
235
- WP_CLI::warning( esc_html__( 'There were some issues while importing widgets!', 'pt-ocdi' ) );
236
 
237
  foreach ( $this->ocdi->frontend_error_messages as $line ) {
238
  WP_CLI::log( $line );
@@ -251,19 +251,19 @@ class WPCLICommands extends \WP_CLI_Command {
251
  $customizer_import_file_path = realpath( $relative_file_path );
252
 
253
  if ( ! file_exists( $customizer_import_file_path ) ) {
254
- WP_CLI::warning( esc_html__( 'Customizer import file provided does not exist! Skipping this import!', 'pt-ocdi' ) );
255
  return false;
256
  }
257
 
258
- WP_CLI::log( esc_html__( 'Importing customizer settings...', 'pt-ocdi' ) );
259
 
260
  CustomizerImporter::import( $customizer_import_file_path );
261
 
262
  if( empty( $this->ocdi->frontend_error_messages ) ) {
263
- WP_CLI::success( esc_html__( 'Customizer settings imported successfully!', 'pt-ocdi' ) );
264
  }
265
  else {
266
- WP_CLI::warning( esc_html__( 'There were some issues while importing customizer settings!', 'pt-ocdi' ) );
267
 
268
  foreach ( $this->ocdi->frontend_error_messages as $line ) {
269
  WP_CLI::log( $line );
@@ -282,11 +282,11 @@ class WPCLICommands extends \WP_CLI_Command {
282
  * @param null $selected_index Selected predefined index.
283
  */
284
  private function do_action( $action, $import_files = array(), $all_import_files = array(), $selected_index = null ) {
285
- if ( false !== has_action( $action ) ) {
286
- WP_CLI::log( sprintf( esc_html__( 'Executing action: %s ...', 'pt-ocdi' ), $action ) );
287
 
288
  ob_start();
289
- do_action( $action, $import_files, $all_import_files, $selected_index );
290
  $message = ob_get_clean();
291
 
292
  Helpers::append_to_file( $message, $this->ocdi->log_file_path, $action );
31
  */
32
  public function list_predefined() {
33
  if ( empty( $this->ocdi->import_files ) ) {
34
+ WP_CLI::error( esc_html__( 'There are no predefined demo imports for currently active theme!', 'one-click-demo-import' ) );
35
  }
36
 
37
+ WP_CLI::success( esc_html__( 'Here are the predefined demo imports:', 'one-click-demo-import' ) );
38
 
39
  foreach ( $this->ocdi->import_files as $index => $import_file ) {
40
  WP_CLI::log( sprintf(
68
  */
69
  public function import( $args, $assoc_args ) {
70
  if ( ! $this->any_import_options_set( $assoc_args ) ) {
71
+ WP_CLI::error( esc_html__( 'At least one of the possible options should be set! Check them with --help', 'one-click-demo-import' ) );
72
  }
73
 
74
  if ( isset( $assoc_args['predefined'] ) ) {
119
  */
120
  private function import_predefined( $predefined_index ) {
121
  if ( ! is_numeric( $predefined_index ) ) {
122
+ WP_CLI::error( esc_html__( 'The "predefined" parameter should be a number (an index of the OCDI predefined demo import)!', 'one-click-demo-import' ) );
123
  }
124
 
125
  $predefined_index = absint( $predefined_index );
126
 
127
  if ( ! array_key_exists( $predefined_index, $this->ocdi->import_files ) ) {
128
+ WP_CLI::warning( esc_html__( 'The supplied predefined index does not exist! Please take a look at the available predefined demo imports:', 'one-click-demo-import' ) );
129
 
130
  $this->list_predefined();
131
 
132
  return false;
133
  }
134
 
135
+ WP_CLI::log( esc_html__( 'Predefined demo import started! All other parameters will be ignored!', 'one-click-demo-import' ) );
136
 
137
  $selected_files = $this->ocdi->import_files[ $predefined_index ];
138
 
139
+ if ( ! empty( $selected_files['import_file_name'] ) ) { /* translators: %s - the name of the selected demo import. */
140
+ WP_CLI::log( sprintf( esc_html__( 'Selected predefined demo import: %s', 'one-click-demo-import' ), $selected_files['import_file_name'] ) );
141
  }
142
 
143
+ WP_CLI::log( esc_html__( 'Preparing the demo import files...', 'one-click-demo-import' ) );
144
 
145
  $import_files = Helpers::download_import_files( $selected_files );
146
 
147
  if ( empty( $import_files ) ) {
148
+ WP_CLI::error( esc_html__( 'Demo import files could not be retrieved!', 'one-click-demo-import' ) );
149
  }
150
 
151
+ WP_CLI::log( esc_html__( 'Demo import files retrieved successfully!', 'one-click-demo-import' ) );
152
 
153
+ WP_CLI::log( esc_html__( 'Importing...', 'one-click-demo-import' ) );
154
 
155
  if ( ! empty( $import_files['content'] ) ) {
156
+ $this->do_action( 'ocdi/before_content_import_execution', $import_files, $this->ocdi->import_files, $predefined_index );
157
 
158
  $this->import_content( $import_files['content'] );
159
  }
160
 
161
  if ( ! empty( $import_files['widgets'] ) ) {
162
+ $this->do_action( 'ocdi/before_widgets_import', $import_files );
163
 
164
  $this->import_widgets( $import_files['widgets'] );
165
  }
168
  $this->import_customizer( $import_files['customizer'] );
169
  }
170
 
171
+ $this->do_action( 'ocdi/after_all_import_execution', $import_files, $this->ocdi->import_files, $predefined_index );
172
 
173
+ WP_CLI::log( esc_html__( 'Predefined import finished!', 'one-click-demo-import' ) );
174
  }
175
 
176
  /**
182
  $content_import_file_path = realpath( $relative_file_path );
183
 
184
  if ( ! file_exists( $content_import_file_path ) ) {
185
+ WP_CLI::warning( esc_html__( 'Content import file provided does not exist! Skipping this import!', 'one-click-demo-import' ) );
186
  return false;
187
  }
188
 
189
  // Change the single AJAX call duration so the whole content import will be done in one go.
190
+ add_filter( 'ocdi/time_for_one_ajax_call', function() {
191
  return 3600;
192
  } );
193
 
194
+ WP_CLI::log( esc_html__( 'Importing content (this might take a while)...', 'one-click-demo-import' ) );
195
 
196
+ Helpers::append_to_file( '', $this->ocdi->log_file_path, esc_html__( 'Importing content' , 'one-click-demo-import' ) );
197
 
198
  $this->ocdi->append_to_frontend_error_messages( $this->ocdi->importer->import_content( $content_import_file_path ) );
199
 
200
  if( empty( $this->ocdi->frontend_error_messages ) ) {
201
+ WP_CLI::success( esc_html__( 'Content import finished!', 'one-click-demo-import' ) );
202
  }
203
  else {
204
+ WP_CLI::warning( esc_html__( 'There were some issues while importing the content!', 'one-click-demo-import' ) );
205
 
206
  foreach ( $this->ocdi->frontend_error_messages as $line ) {
207
  WP_CLI::log( $line );
220
  $widgets_import_file_path = realpath( $relative_file_path );
221
 
222
  if ( ! file_exists( $widgets_import_file_path ) ) {
223
+ WP_CLI::warning( esc_html__( 'Widgets import file provided does not exist! Skipping this import!', 'one-click-demo-import' ) );
224
  return false;
225
  }
226
 
227
+ WP_CLI::log( esc_html__( 'Importing widgets...', 'one-click-demo-import' ) );
228
 
229
  WidgetImporter::import( $widgets_import_file_path );
230
 
231
  if( empty( $this->ocdi->frontend_error_messages ) ) {
232
+ WP_CLI::success( esc_html__( 'Widgets imported successfully!', 'one-click-demo-import' ) );
233
  }
234
  else {
235
+ WP_CLI::warning( esc_html__( 'There were some issues while importing widgets!', 'one-click-demo-import' ) );
236
 
237
  foreach ( $this->ocdi->frontend_error_messages as $line ) {
238
  WP_CLI::log( $line );
251
  $customizer_import_file_path = realpath( $relative_file_path );
252
 
253
  if ( ! file_exists( $customizer_import_file_path ) ) {
254
+ WP_CLI::warning( esc_html__( 'Customizer import file provided does not exist! Skipping this import!', 'one-click-demo-import' ) );
255
  return false;
256
  }
257
 
258
+ WP_CLI::log( esc_html__( 'Importing customizer settings...', 'one-click-demo-import' ) );
259
 
260
  CustomizerImporter::import( $customizer_import_file_path );
261
 
262
  if( empty( $this->ocdi->frontend_error_messages ) ) {
263
+ WP_CLI::success( esc_html__( 'Customizer settings imported successfully!', 'one-click-demo-import' ) );
264
  }
265
  else {
266
+ WP_CLI::warning( esc_html__( 'There were some issues while importing customizer settings!', 'one-click-demo-import' ) );
267
 
268
  foreach ( $this->ocdi->frontend_error_messages as $line ) {
269
  WP_CLI::log( $line );
282
  * @param null $selected_index Selected predefined index.
283
  */
284
  private function do_action( $action, $import_files = array(), $all_import_files = array(), $selected_index = null ) {
285
+ if ( false !== Helpers::has_action( $action ) ) { /* translators: %s - the name of the executing action. */
286
+ WP_CLI::log( sprintf( esc_html__( 'Executing action: %s ...', 'one-click-demo-import' ), $action ) );
287
 
288
  ob_start();
289
+ Helpers::do_action( $action, $import_files, $all_import_files, $selected_index );
290
  $message = ob_get_clean();
291
 
292
  Helpers::append_to_file( $message, $this->ocdi->log_file_path, $action );
inc/WXRImporter.php CHANGED
@@ -66,7 +66,7 @@ class WXRImporter extends \AwesomeMotive\WPContentImporter2\WXRImporter {
66
  * Fixes: [WARNING] Failed to import pa_size L warnings in content import.
67
  * Code from: woocommerce/includes/admin/class-wc-admin-importers.php (ver 2.6.9).
68
  *
69
- * Github issue: https://github.com/proteusthemes/one-click-demo-import/issues/71
70
  *
71
  * @param array $date The term data to import.
72
  * @return array The unchanged term data.
66
  * Fixes: [WARNING] Failed to import pa_size L warnings in content import.
67
  * Code from: woocommerce/includes/admin/class-wc-admin-importers.php (ver 2.6.9).
68
  *
69
+ * Github issue: https://github.com/awesomemotive/one-click-demo-import/issues/71
70
  *
71
  * @param array $date The term data to import.
72
  * @return array The unchanged term data.
inc/WidgetImporter.php CHANGED
@@ -37,7 +37,7 @@ class WidgetImporter {
37
  Helpers::append_to_file(
38
  $error_message,
39
  $log_file_path,
40
- esc_html__( 'Importing widgets', 'pt-ocdi' )
41
  );
42
  }
43
  else {
@@ -49,7 +49,7 @@ class WidgetImporter {
49
  $log_added = Helpers::append_to_file(
50
  $message,
51
  $log_file_path,
52
- esc_html__( 'Importing widgets' , 'pt-ocdi' )
53
  );
54
  }
55
 
@@ -85,7 +85,7 @@ class WidgetImporter {
85
  if ( ! file_exists( $file ) ) {
86
  return new \WP_Error(
87
  'widget_import_file_not_found',
88
- __( 'Error: Widget import file could not be found.', 'pt-ocdi' )
89
  );
90
  }
91
 
@@ -115,13 +115,13 @@ class WidgetImporter {
115
  if ( empty( $data ) || ! is_object( $data ) ) {
116
  return new \WP_Error(
117
  'corrupted_widget_import_data',
118
- __( 'Error: Widget import data could not be read. Please try a different file.', 'pt-ocdi' )
119
  );
120
  }
121
 
122
  // Hook before import.
123
- do_action( 'pt-ocdi/widget_importer_before_widgets_import' );
124
- $data = apply_filters( 'pt-ocdi/before_widgets_import_data', $data );
125
 
126
  // Get all available widgets site supports.
127
  $available_widgets = self::available_widgets();
@@ -154,7 +154,7 @@ class WidgetImporter {
154
  $sidebar_available = false;
155
  $use_sidebar_id = 'wp_inactive_widgets'; // Add to inactive if sidebar does not exist in theme.
156
  $sidebar_message_type = 'error';
157
- $sidebar_message = __( 'Sidebar does not exist in theme (moving widget to Inactive)', 'pt-ocdi' );
158
  }
159
 
160
  // Result for sidebar.
@@ -175,13 +175,13 @@ class WidgetImporter {
175
  if ( ! $fail && ! isset( $available_widgets[ $id_base ] ) ) {
176
  $fail = true;
177
  $widget_message_type = 'error';
178
- $widget_message = __( 'Site does not support widget', 'pt-ocdi' ); // Explain why widget not imported.
179
  }
180
 
181
  // Filter to modify settings object before conversion to array and import.
182
  // Leave this filter here for backwards compatibility with manipulating objects (before conversion to array below).
183
  // Ideally the newer wie_widget_settings_array below will be used instead of this.
184
- $widget = apply_filters( 'pt-ocdi/widget_settings', $widget ); // Object.
185
 
186
  // Convert multidimensional objects to multidimensional arrays.
187
  // Some plugins like Jetpack Widget Visibility store settings as multidimensional arrays.
@@ -193,7 +193,7 @@ class WidgetImporter {
193
  // Filter to modify settings array.
194
  // This is preferred over the older wie_widget_settings filter above.
195
  // Do before identical check because changes may make it identical to end result (such as URL replacements).
196
- $widget = apply_filters( 'pt-ocdi/widget_settings_array', $widget );
197
 
198
  // Does widget with identical settings already exist in same sidebar?
199
  if ( ! $fail && isset( $widget_instances[ $id_base ] ) ) {
@@ -208,7 +208,7 @@ class WidgetImporter {
208
  if ( in_array( "$id_base-$check_id", $sidebar_widgets ) && (array) $widget == $check_widget ) {
209
  $fail = true;
210
  $widget_message_type = 'warning';
211
- $widget_message = __( 'Widget already exists', 'pt-ocdi' ); // Explain why widget not imported.
212
 
213
  break;
214
  }
@@ -268,22 +268,22 @@ class WidgetImporter {
268
  'widget_id_num' => $new_instance_id_number,
269
  'widget_id_num_old' => $instance_id_number,
270
  );
271
- do_action( 'pt-ocdi/widget_importer_after_single_widget_import', $after_widget_import );
272
 
273
  // Success message.
274
  if ( $sidebar_available ) {
275
  $widget_message_type = 'success';
276
- $widget_message = __( 'Imported', 'pt-ocdi' );
277
  }
278
  else {
279
  $widget_message_type = 'warning';
280
- $widget_message = __( 'Imported to Inactive', 'pt-ocdi' );
281
  }
282
  }
283
 
284
  // Result for widget instance.
285
  $results[ $sidebar_id ]['widgets'][ $widget_instance_id ]['name'] = isset( $available_widgets[ $id_base ]['name'] ) ? $available_widgets[ $id_base ]['name'] : $id_base; // Widget name or ID if name not available (not supported by site).
286
- $results[ $sidebar_id ]['widgets'][ $widget_instance_id ]['title'] = ! empty( $widget['title'] ) ? $widget['title'] : __( 'No Title', 'pt-ocdi' ); // Show "No Title" if widget instance is untitled.
287
  $results[ $sidebar_id ]['widgets'][ $widget_instance_id ]['message_type'] = $widget_message_type;
288
  $results[ $sidebar_id ]['widgets'][ $widget_instance_id ]['message'] = $widget_message;
289
 
@@ -291,10 +291,10 @@ class WidgetImporter {
291
  }
292
 
293
  // Hook after import.
294
- do_action( 'pt-ocdi/widget_importer_after_widgets_import' );
295
 
296
  // Return results.
297
- return apply_filters( 'pt-ocdi/widget_import_results', $results );
298
  }
299
 
300
 
@@ -319,7 +319,7 @@ class WidgetImporter {
319
  }
320
  }
321
 
322
- return apply_filters( 'pt-ocdi/available_widgets', $available_widgets );
323
  }
324
 
325
 
@@ -330,7 +330,7 @@ class WidgetImporter {
330
  */
331
  private static function format_results_for_log( $results ) {
332
  if ( empty( $results ) ) {
333
- esc_html_e( 'No results for widget import!', 'pt-ocdi' );
334
  }
335
 
336
  // Loop sidebars.
37
  Helpers::append_to_file(
38
  $error_message,
39
  $log_file_path,
40
+ esc_html__( 'Importing widgets', 'one-click-demo-import' )
41
  );
42
  }
43
  else {
49
  $log_added = Helpers::append_to_file(
50
  $message,
51
  $log_file_path,
52
+ esc_html__( 'Importing widgets' , 'one-click-demo-import' )
53
  );
54
  }
55
 
85
  if ( ! file_exists( $file ) ) {
86
  return new \WP_Error(
87
  'widget_import_file_not_found',
88
+ __( 'Error: Widget import file could not be found.', 'one-click-demo-import' )
89
  );
90
  }
91
 
115
  if ( empty( $data ) || ! is_object( $data ) ) {
116
  return new \WP_Error(
117
  'corrupted_widget_import_data',
118
+ __( 'Error: Widget import data could not be read. Please try a different file.', 'one-click-demo-import' )
119
  );
120
  }
121
 
122
  // Hook before import.
123
+ Helpers::do_action( 'ocdi/widget_importer_before_widgets_import' );
124
+ $data = Helpers::apply_filters( 'ocdi/before_widgets_import_data', $data );
125
 
126
  // Get all available widgets site supports.
127
  $available_widgets = self::available_widgets();
154
  $sidebar_available = false;
155
  $use_sidebar_id = 'wp_inactive_widgets'; // Add to inactive if sidebar does not exist in theme.
156
  $sidebar_message_type = 'error';
157
+ $sidebar_message = __( 'Sidebar does not exist in theme (moving widget to Inactive)', 'one-click-demo-import' );
158
  }
159
 
160
  // Result for sidebar.
175
  if ( ! $fail && ! isset( $available_widgets[ $id_base ] ) ) {
176
  $fail = true;
177
  $widget_message_type = 'error';
178
+ $widget_message = __( 'Site does not support widget', 'one-click-demo-import' ); // Explain why widget not imported.
179
  }
180
 
181
  // Filter to modify settings object before conversion to array and import.
182
  // Leave this filter here for backwards compatibility with manipulating objects (before conversion to array below).
183
  // Ideally the newer wie_widget_settings_array below will be used instead of this.
184
+ $widget = Helpers::apply_filters( 'ocdi/widget_settings', $widget ); // Object.
185
 
186
  // Convert multidimensional objects to multidimensional arrays.
187
  // Some plugins like Jetpack Widget Visibility store settings as multidimensional arrays.
193
  // Filter to modify settings array.
194
  // This is preferred over the older wie_widget_settings filter above.
195
  // Do before identical check because changes may make it identical to end result (such as URL replacements).
196
+ $widget = Helpers::apply_filters( 'ocdi/widget_settings_array', $widget );
197
 
198
  // Does widget with identical settings already exist in same sidebar?
199
  if ( ! $fail && isset( $widget_instances[ $id_base ] ) ) {
208
  if ( in_array( "$id_base-$check_id", $sidebar_widgets ) && (array) $widget == $check_widget ) {
209
  $fail = true;
210
  $widget_message_type = 'warning';
211
+ $widget_message = __( 'Widget already exists', 'one-click-demo-import' ); // Explain why widget not imported.
212
 
213
  break;
214
  }
268
  'widget_id_num' => $new_instance_id_number,
269
  'widget_id_num_old' => $instance_id_number,
270
  );
271
+ Helpers::do_action( 'ocdi/widget_importer_after_single_widget_import', $after_widget_import );
272
 
273
  // Success message.
274
  if ( $sidebar_available ) {
275
  $widget_message_type = 'success';
276
+ $widget_message = __( 'Imported', 'one-click-demo-import' );
277
  }
278
  else {
279
  $widget_message_type = 'warning';
280
+ $widget_message = __( 'Imported to Inactive', 'one-click-demo-import' );
281
  }
282
  }
283
 
284
  // Result for widget instance.
285
  $results[ $sidebar_id ]['widgets'][ $widget_instance_id ]['name'] = isset( $available_widgets[ $id_base ]['name'] ) ? $available_widgets[ $id_base ]['name'] : $id_base; // Widget name or ID if name not available (not supported by site).
286
+ $results[ $sidebar_id ]['widgets'][ $widget_instance_id ]['title'] = ! empty( $widget['title'] ) ? $widget['title'] : __( 'No Title', 'one-click-demo-import' ); // Show "No Title" if widget instance is untitled.
287
  $results[ $sidebar_id ]['widgets'][ $widget_instance_id ]['message_type'] = $widget_message_type;
288
  $results[ $sidebar_id ]['widgets'][ $widget_instance_id ]['message'] = $widget_message;
289
 
291
  }
292
 
293
  // Hook after import.
294
+ Helpers::do_action( 'ocdi/widget_importer_after_widgets_import' );
295
 
296
  // Return results.
297
+ return Helpers::apply_filters( 'ocdi/widget_import_results', $results );
298
  }
299
 
300
 
319
  }
320
  }
321
 
322
+ return Helpers::apply_filters( 'ocdi/available_widgets', $available_widgets );
323
  }
324
 
325
 
330
  */
331
  private static function format_results_for_log( $results ) {
332
  if ( empty( $results ) ) {
333
+ esc_html_e( 'No results for widget import!', 'one-click-demo-import' );
334
  }
335
 
336
  // Loop sidebars.
languages/one-click-demo-import.pot ADDED
@@ -0,0 +1,939 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: One Click Demo Import 3.0.0\n"
4
+ "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/one-click-demo-import\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-03-31T10:43:06+00: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: one-click-demo-import\n"
14
+
15
+ #. Plugin Name of the plugin
16
+ #. Author of the plugin
17
+ #: inc/Helpers.php:742
18
+ #: inc/ViewHelpers.php:19
19
+ msgid "One Click Demo Import"
20
+ msgstr ""
21
+
22
+ #. Plugin URI of the plugin
23
+ msgid "https://wordpress.org/plugins/one-click-demo-import/"
24
+ msgstr ""
25
+
26
+ #. Description of the plugin
27
+ msgid "Import your content, widgets and theme settings with one click. Theme authors! Enable simple demo import for your theme demo data."
28
+ msgstr ""
29
+
30
+ #. Author URI of the plugin
31
+ msgid "https://profiles.wordpress.org/ocdi/"
32
+ msgstr ""
33
+
34
+ #: inc/CreateDemoContent/DemoContentCreator.php:46
35
+ msgid "About Us"
36
+ msgstr ""
37
+
38
+ #: inc/CreateDemoContent/DemoContentCreator.php:47
39
+ msgid "Introduce yourself and your business with a clean layout to reassure your leads and customers."
40
+ msgstr ""
41
+
42
+ #: inc/CreateDemoContent/DemoContentCreator.php:53
43
+ msgid "Book Now"
44
+ msgstr ""
45
+
46
+ #: inc/CreateDemoContent/DemoContentCreator.php:54
47
+ msgid "Expand your reach by accepting appointments online plus detailing your services and staff."
48
+ msgstr ""
49
+
50
+ #: inc/CreateDemoContent/DemoContentCreator.php:60
51
+ msgid "Contact Us"
52
+ msgstr ""
53
+
54
+ #: inc/CreateDemoContent/DemoContentCreator.php:61
55
+ msgid "Make it easy to get in touch with you through a completely customizable built-in contact form."
56
+ msgstr ""
57
+
58
+ #: inc/CreateDemoContent/DemoContentCreator.php:67
59
+ msgid "FAQ"
60
+ msgstr ""
61
+
62
+ #: inc/CreateDemoContent/DemoContentCreator.php:68
63
+ msgid "Lighten the load on your support team or your inbox by addressing frequently asked questions."
64
+ msgstr ""
65
+
66
+ #: inc/CreateDemoContent/DemoContentCreator.php:74
67
+ msgid "Meet the Team"
68
+ msgstr ""
69
+
70
+ #: inc/CreateDemoContent/DemoContentCreator.php:75
71
+ msgid "Help potential clients feel more at ease by showing off your hard-working and trustworthy team."
72
+ msgstr ""
73
+
74
+ #: inc/CreateDemoContent/DemoContentCreator.php:81
75
+ msgid "Menu"
76
+ msgstr ""
77
+
78
+ #: inc/CreateDemoContent/DemoContentCreator.php:82
79
+ msgid "Display your delicious dishes online to entice website visitors to become restaurant customers."
80
+ msgstr ""
81
+
82
+ #: inc/CreateDemoContent/DemoContentCreator.php:88
83
+ msgid "Portfolio"
84
+ msgstr ""
85
+
86
+ #: inc/CreateDemoContent/DemoContentCreator.php:89
87
+ msgid "Impress leads by visually showcasing your achievements, case studies, and past work."
88
+ msgstr ""
89
+
90
+ #: inc/CreateDemoContent/DemoContentCreator.php:95
91
+ msgid "Services"
92
+ msgstr ""
93
+
94
+ #: inc/CreateDemoContent/DemoContentCreator.php:96
95
+ msgid "Let the world know your services or products' cost and features in an organized pricing table."
96
+ msgstr ""
97
+
98
+ #: inc/CreateDemoContent/DemoContentCreator.php:102
99
+ msgid "Shop"
100
+ msgstr ""
101
+
102
+ #: inc/CreateDemoContent/DemoContentCreator.php:103
103
+ msgid "Categorize and sell your products online while displaying reviews from happy customers."
104
+ msgstr ""
105
+
106
+ #: inc/CreateDemoContent/DemoContentCreator.php:109
107
+ msgid "Testimonials"
108
+ msgstr ""
109
+
110
+ #: inc/CreateDemoContent/DemoContentCreator.php:110
111
+ msgid "Tap into the power of social proof by displaying real-life testimonials on your website."
112
+ msgstr ""
113
+
114
+ #: inc/CreateDemoContent/DemoContentCreator.php:151
115
+ msgid "Could not complete the import process for this page. Required WPForms plugin is not activated."
116
+ msgstr ""
117
+
118
+ #: inc/CreateDemoContent/DemoContentCreator.php:155
119
+ msgid "Could not complete the import process for this page. Required WPForms plugin doesn't exist."
120
+ msgstr ""
121
+
122
+ #: inc/CreateDemoContent/DemoContentCreator.php:158
123
+ msgid "Meet the Team Form"
124
+ msgstr ""
125
+
126
+ #: inc/CreateDemoContent/DemoContentCreator.php:158
127
+ msgid "Contact Form"
128
+ msgstr ""
129
+
130
+ #: inc/CreateDemoContent/DemoContentCreator.php:162
131
+ msgid "Could not complete the import process for this page. Something went wrong while creating a WPForms contact form."
132
+ msgstr ""
133
+
134
+ #: inc/CreateDemoContent/DemoContentCreator.php:168
135
+ msgid "Could not complete the import process for this page. Could not update the imported page with correct WPForms form ID."
136
+ msgstr ""
137
+
138
+ #: inc/CreateDemoContent/DemoContentCreator.php:181
139
+ msgid "Could not import this page. You don't have permission to import content."
140
+ msgstr ""
141
+
142
+ #: inc/CreateDemoContent/DemoContentCreator.php:187
143
+ msgid "Could not import this page. Page slug is missing."
144
+ msgstr ""
145
+
146
+ #. translators: %s - The actual error message.
147
+ #: inc/CreateDemoContent/DemoContentCreator.php:214
148
+ msgid "An error occured while importing this page: %s"
149
+ msgstr ""
150
+
151
+ #: inc/CreateDemoContent/DemoContentCreator.php:254
152
+ msgid "The demo content import file is missing."
153
+ msgstr ""
154
+
155
+ #: inc/CreateDemoContent/DemoContentCreator.php:336
156
+ msgid "Name"
157
+ msgstr ""
158
+
159
+ #: inc/CreateDemoContent/DemoContentCreator.php:343
160
+ msgid "Email"
161
+ msgstr ""
162
+
163
+ #: inc/CreateDemoContent/DemoContentCreator.php:350
164
+ msgid "Comment or Message"
165
+ msgstr ""
166
+
167
+ #: inc/CreateDemoContent/DemoContentCreator.php:372
168
+ msgid "Thanks for contacting us! We will be in touch with you shortly."
169
+ msgstr ""
170
+
171
+ #: inc/CreateDemoContent/DemoContentCreator.php:377
172
+ msgid "Submit"
173
+ msgstr ""
174
+
175
+ #: inc/CreateDemoContent/DemoContentCreator.php:378
176
+ msgid "Sending..."
177
+ msgstr ""
178
+
179
+ #: inc/CustomizerImporter.php:37
180
+ #: inc/CustomizerImporter.php:45
181
+ msgid "Importing customizer settings"
182
+ msgstr ""
183
+
184
+ #: inc/CustomizerImporter.php:43
185
+ msgid "Customizer settings import finished!"
186
+ msgstr ""
187
+
188
+ #. translators: %s - file path
189
+ #: inc/CustomizerImporter.php:73
190
+ msgid "Error: The customizer import file is missing! File path: %s"
191
+ msgstr ""
192
+
193
+ #: inc/CustomizerImporter.php:93
194
+ msgid "Error: The customizer import file is not in a correct format. Please make sure to use the correct customizer import file."
195
+ msgstr ""
196
+
197
+ #: inc/CustomizerImporter.php:99
198
+ msgid "Error: The customizer import file is not suitable for current theme. You can only import customizer settings for the same theme or a child theme."
199
+ msgstr ""
200
+
201
+ #: inc/Downloader.php:58
202
+ msgid "Missing URL for downloading a file!"
203
+ msgstr ""
204
+
205
+ #. translators: %1$s and %3$s - strong HTML tags, %2$s - file URL, %4$s - br HTML tag, %5$s - error code, %6$s - error message.
206
+ #: inc/Downloader.php:76
207
+ msgid "An error occurred while fetching file from: %1$s%2$s%3$s!%4$sReason: %5$s - %6$s."
208
+ msgstr ""
209
+
210
+ #. translators: %1$s - br HTML tag, %2$s - file path
211
+ #: inc/Helpers.php:199
212
+ #: inc/Helpers.php:242
213
+ msgid "An error occurred while writing file to your server! Tried to write a file to: %1$s%2$s."
214
+ msgstr ""
215
+
216
+ #. translators: %1$s - br HTML tag, %2$s - file path
217
+ #: inc/Helpers.php:276
218
+ msgid "An error occurred while reading a file from your server! Tried reading file from path: %1$s%2$s."
219
+ msgstr ""
220
+
221
+ #. translators: %1$s and %2$s - strong HTML tags, %3$s - HTML link to a doc page.
222
+ #: inc/Helpers.php:299
223
+ msgid "This WordPress page does not have %1$sdirect%2$s write file access. This plugin needs it in order to save the demo import xml file to the upload directory of your site. You can change this setting with these instructions: %3$s."
224
+ msgstr ""
225
+
226
+ #: inc/Helpers.php:316
227
+ msgid "An error occurred while retrieving reading/writing permissions to your server (could not retrieve WP filesystem credentials)!"
228
+ msgstr ""
229
+
230
+ #: inc/Helpers.php:324
231
+ msgid "Your WordPress login credentials don't allow to use WP_Filesystem!"
232
+ msgstr ""
233
+
234
+ #: inc/Helpers.php:364
235
+ msgid "One Click Demo Import - "
236
+ msgstr ""
237
+
238
+ #. translators: %1$s - opening div and paragraph HTML tags, %2$s - closing div and paragraph HTML tags.
239
+ #: inc/Helpers.php:398
240
+ msgid "%1$sYour user role isn't high enough. You don't have permission to import demo data.%2$s"
241
+ msgstr ""
242
+
243
+ #: inc/Helpers.php:431
244
+ msgid "No file provided."
245
+ msgstr ""
246
+
247
+ #. translators: %s - the error message.
248
+ #: inc/Helpers.php:460
249
+ msgid "Content file was not uploaded. Error: %s"
250
+ msgstr ""
251
+
252
+ #: inc/Helpers.php:464
253
+ #: inc/Helpers.php:481
254
+ #: inc/Helpers.php:498
255
+ #: inc/Helpers.php:509
256
+ #: inc/Helpers.php:529
257
+ #: inc/Helpers.php:537
258
+ msgid "Upload files"
259
+ msgstr ""
260
+
261
+ #. translators: %s - the error message.
262
+ #: inc/Helpers.php:477
263
+ msgid "Widget file was not uploaded. Error: %s"
264
+ msgstr ""
265
+
266
+ #. translators: %s - the error message.
267
+ #: inc/Helpers.php:494
268
+ msgid "Customizer file was not uploaded. Error: %s"
269
+ msgstr ""
270
+
271
+ #: inc/Helpers.php:507
272
+ msgid "Missing Redux option name! Please also enter the Redux option name!"
273
+ msgstr ""
274
+
275
+ #. translators: %s - the error message.
276
+ #: inc/Helpers.php:525
277
+ msgid "Redux file was not uploaded. Error: %s"
278
+ msgstr ""
279
+
280
+ #: inc/Helpers.php:535
281
+ msgid "The import files were successfully uploaded!"
282
+ msgstr ""
283
+
284
+ #. translators: %s - the max execution time.
285
+ #: inc/Helpers.php:561
286
+ msgid "Initial max execution time = %s"
287
+ msgstr ""
288
+
289
+ #. translators: %1$s - new line break, %2$s - the site URL, %3$s - the file path for content import, %4$s - the file path for widgets import, %5$s - the file path for widgets import, %6$s - the file path for redux import.
290
+ #: inc/Helpers.php:565
291
+ msgid "Files info:%1$sSite URL = %2$s%1$sData file = %3$s%1$sWidget file = %4$s%1$sCustomizer file = %5$s%1$sRedux files:%1$s%6$s"
292
+ msgstr ""
293
+
294
+ #: inc/Helpers.php:568
295
+ #: inc/Helpers.php:569
296
+ #: inc/Helpers.php:570
297
+ #: inc/Helpers.php:571
298
+ msgid "not defined!"
299
+ msgstr ""
300
+
301
+ #: inc/Helpers.php:743
302
+ #: views/plugin-page.php:290
303
+ msgid "Import Demo Data"
304
+ msgstr ""
305
+
306
+ #: inc/Importer.php:174
307
+ msgid "New AJAX call!"
308
+ msgstr ""
309
+
310
+ #: inc/OneClickDemoImport.php:212
311
+ msgid "No preview image defined for this import."
312
+ msgstr ""
313
+
314
+ #: inc/OneClickDemoImport.php:213
315
+ msgid "Are you sure?"
316
+ msgstr ""
317
+
318
+ #: inc/OneClickDemoImport.php:214
319
+ #: views/plugin-page.php:276
320
+ msgid "Cancel"
321
+ msgstr ""
322
+
323
+ #: inc/OneClickDemoImport.php:215
324
+ msgid "Yes, import!"
325
+ msgstr ""
326
+
327
+ #: inc/OneClickDemoImport.php:216
328
+ msgid "Selected demo import:"
329
+ msgstr ""
330
+
331
+ #: inc/OneClickDemoImport.php:217
332
+ msgid "Installing..."
333
+ msgstr ""
334
+
335
+ #: inc/OneClickDemoImport.php:218
336
+ #: inc/WPCLICommands.php:153
337
+ msgid "Importing..."
338
+ msgstr ""
339
+
340
+ #: inc/OneClickDemoImport.php:219
341
+ msgid "Successfully Imported!"
342
+ msgstr ""
343
+
344
+ #: inc/OneClickDemoImport.php:220
345
+ #: views/plugin-page.php:270
346
+ msgid "Install Plugin"
347
+ msgstr ""
348
+
349
+ #: inc/OneClickDemoImport.php:221
350
+ #: views/plugin-page.php:270
351
+ msgid "Installed"
352
+ msgstr ""
353
+
354
+ #: inc/OneClickDemoImport.php:222
355
+ msgid "Import Failed"
356
+ msgstr ""
357
+
358
+ #: inc/OneClickDemoImport.php:223
359
+ msgid "Whoops, there was a problem importing your content."
360
+ msgstr ""
361
+
362
+ #: inc/OneClickDemoImport.php:224
363
+ msgid "Looks like some of the plugins failed to install. Please try again. If this issue persists, please manually install the failing plugins and come back to this step to import the theme demo data."
364
+ msgstr ""
365
+
366
+ #: inc/OneClickDemoImport.php:225
367
+ msgid "Invalid file type detected! Please select an XML file for the Content Import."
368
+ msgstr ""
369
+
370
+ #: inc/OneClickDemoImport.php:226
371
+ msgid "Invalid file type detected! Please select a JSON or WIE file for the Widgets Import."
372
+ msgstr ""
373
+
374
+ #: inc/OneClickDemoImport.php:227
375
+ msgid "Invalid file type detected! Please select a DAT file for the Customizer Import."
376
+ msgstr ""
377
+
378
+ #: inc/OneClickDemoImport.php:228
379
+ msgid "Invalid file type detected! Please select a JSON file for the Redux Import."
380
+ msgstr ""
381
+
382
+ #: inc/OneClickDemoImport.php:245
383
+ msgid "Manual import files are missing! Please select the import files and try again."
384
+ msgstr ""
385
+
386
+ #: inc/OneClickDemoImport.php:260
387
+ #: inc/OneClickDemoImport.php:305
388
+ msgid "Manually uploaded files"
389
+ msgstr ""
390
+
391
+ #: inc/OneClickDemoImport.php:318
392
+ #: inc/OneClickDemoImport.php:329
393
+ msgid "Downloaded files"
394
+ msgstr ""
395
+
396
+ #. translators: %s - the name of the selected import.
397
+ #: inc/OneClickDemoImport.php:325
398
+ msgid "The import files for: %s were successfully downloaded!"
399
+ msgstr ""
400
+
401
+ #: inc/OneClickDemoImport.php:334
402
+ msgid "No import files specified!"
403
+ msgstr ""
404
+
405
+ #: inc/OneClickDemoImport.php:451
406
+ #: views/import.php:101
407
+ msgid "Import Complete!"
408
+ msgstr ""
409
+
410
+ #: inc/OneClickDemoImport.php:452
411
+ #: views/import.php:104
412
+ msgid "Congrats, your demo was imported successfully. You can now begin editing your site."
413
+ msgstr ""
414
+
415
+ #: inc/OneClickDemoImport.php:453
416
+ msgid "Successful Import"
417
+ msgstr ""
418
+
419
+ #: inc/OneClickDemoImport.php:456
420
+ msgid "Your import completed, but some things may not have imported properly."
421
+ msgstr ""
422
+
423
+ #. translators: %s - link to the log file.
424
+ #: inc/OneClickDemoImport.php:460
425
+ msgid "<p><a href=\"%s\" target=\"_blank\">View error log</a> for more information.</p>"
426
+ msgstr ""
427
+
428
+ #: inc/PluginInstaller.php:85
429
+ msgid "WPForms"
430
+ msgstr ""
431
+
432
+ #: inc/PluginInstaller.php:86
433
+ msgid "Join 4,000,000+ professionals who build smarter forms and surveys with WPForms."
434
+ msgstr ""
435
+
436
+ #: inc/PluginInstaller.php:92
437
+ msgid "All in One SEO"
438
+ msgstr ""
439
+
440
+ #: inc/PluginInstaller.php:93
441
+ msgid "Use All in One SEO Pack to optimize your WordPress site for SEO."
442
+ msgstr ""
443
+
444
+ #: inc/PluginInstaller.php:99
445
+ msgid "MonsterInsights"
446
+ msgstr ""
447
+
448
+ #: inc/PluginInstaller.php:100
449
+ msgid "The #1 Google Analytics Plugin for WordPress that’s easy and powerful."
450
+ msgstr ""
451
+
452
+ #: inc/PluginInstaller.php:106
453
+ msgid "Custom Landing Pages by SeedProd"
454
+ msgstr ""
455
+
456
+ #: inc/PluginInstaller.php:107
457
+ msgid "Work on your site in private while visitors see a \"Coming Soon\" or \"Maintenance Mode\" page."
458
+ msgstr ""
459
+
460
+ #: inc/PluginInstaller.php:112
461
+ msgid "Smash Balloon Social Photo Feed"
462
+ msgstr ""
463
+
464
+ #: inc/PluginInstaller.php:113
465
+ msgid "Display beautifully clean, customizable, and responsive Instagram feeds."
466
+ msgstr ""
467
+
468
+ #: inc/PluginInstaller.php:118
469
+ msgid "WP Mail SMTP"
470
+ msgstr ""
471
+
472
+ #: inc/PluginInstaller.php:119
473
+ msgid "Make email delivery easy for WordPress. Connect with SMTP, Gmail, Outlook, Mailgun, and more."
474
+ msgstr ""
475
+
476
+ #: inc/PluginInstaller.php:220
477
+ msgid "Could not install the plugin. You don't have permission to install plugins."
478
+ msgstr ""
479
+
480
+ #: inc/PluginInstaller.php:226
481
+ msgid "Could not install the plugin. Plugin slug is missing."
482
+ msgstr ""
483
+
484
+ #: inc/PluginInstaller.php:231
485
+ msgid "Plugin is already installed and activated!"
486
+ msgstr ""
487
+
488
+ #: inc/PluginInstaller.php:239
489
+ msgid "Plugin was already installed! We activated it for you."
490
+ msgstr ""
491
+
492
+ #: inc/PluginInstaller.php:247
493
+ msgid "Could not install the plugin. Don't have file permission."
494
+ msgstr ""
495
+
496
+ #: inc/PluginInstaller.php:287
497
+ msgid "Plugin installed and activated succesfully."
498
+ msgstr ""
499
+
500
+ #: inc/PluginInstaller.php:294
501
+ msgid "Could not install the plugin. WP Plugin installer could not retrieve plugin information."
502
+ msgstr ""
503
+
504
+ #: inc/ReduxImporter.php:23
505
+ msgid "The Redux plugin is not activated, so the Redux import was skipped!"
506
+ msgstr ""
507
+
508
+ #: inc/ReduxImporter.php:32
509
+ #: inc/ReduxImporter.php:53
510
+ #: inc/ReduxImporter.php:66
511
+ msgid "Importing Redux settings"
512
+ msgstr ""
513
+
514
+ #. translators: %s - the name of the Redux option.
515
+ #: inc/ReduxImporter.php:51
516
+ msgid "Redux settings import for: %s finished successfully!"
517
+ msgstr ""
518
+
519
+ #. translators: %s - the name of the Redux option.
520
+ #: inc/ReduxImporter.php:57
521
+ msgid "The Redux option name: %s, was not found in this WP site, so it was not imported!"
522
+ msgstr ""
523
+
524
+ #: inc/ViewHelpers.php:21
525
+ msgid "Questionmark icon"
526
+ msgstr ""
527
+
528
+ #: inc/ViewHelpers.php:52
529
+ #: views/plugin-page.php:74
530
+ msgid "Theme screenshot"
531
+ msgstr ""
532
+
533
+ #: inc/WidgetImporter.php:40
534
+ #: inc/WidgetImporter.php:52
535
+ msgid "Importing widgets"
536
+ msgstr ""
537
+
538
+ #: inc/WidgetImporter.php:88
539
+ msgid "Error: Widget import file could not be found."
540
+ msgstr ""
541
+
542
+ #: inc/WidgetImporter.php:118
543
+ msgid "Error: Widget import data could not be read. Please try a different file."
544
+ msgstr ""
545
+
546
+ #: inc/WidgetImporter.php:157
547
+ msgid "Sidebar does not exist in theme (moving widget to Inactive)"
548
+ msgstr ""
549
+
550
+ #: inc/WidgetImporter.php:178
551
+ msgid "Site does not support widget"
552
+ msgstr ""
553
+
554
+ #: inc/WidgetImporter.php:211
555
+ msgid "Widget already exists"
556
+ msgstr ""
557
+
558
+ #: inc/WidgetImporter.php:276
559
+ msgid "Imported"
560
+ msgstr ""
561
+
562
+ #: inc/WidgetImporter.php:280
563
+ msgid "Imported to Inactive"
564
+ msgstr ""
565
+
566
+ #: inc/WidgetImporter.php:286
567
+ msgid "No Title"
568
+ msgstr ""
569
+
570
+ #: inc/WidgetImporter.php:333
571
+ msgid "No results for widget import!"
572
+ msgstr ""
573
+
574
+ #: inc/WPCLICommands.php:34
575
+ msgid "There are no predefined demo imports for currently active theme!"
576
+ msgstr ""
577
+
578
+ #: inc/WPCLICommands.php:37
579
+ msgid "Here are the predefined demo imports:"
580
+ msgstr ""
581
+
582
+ #: inc/WPCLICommands.php:71
583
+ msgid "At least one of the possible options should be set! Check them with --help"
584
+ msgstr ""
585
+
586
+ #: inc/WPCLICommands.php:122
587
+ msgid "The \"predefined\" parameter should be a number (an index of the OCDI predefined demo import)!"
588
+ msgstr ""
589
+
590
+ #: inc/WPCLICommands.php:128
591
+ msgid "The supplied predefined index does not exist! Please take a look at the available predefined demo imports:"
592
+ msgstr ""
593
+
594
+ #: inc/WPCLICommands.php:135
595
+ msgid "Predefined demo import started! All other parameters will be ignored!"
596
+ msgstr ""
597
+
598
+ #. translators: %s - the name of the selected demo import.
599
+ #: inc/WPCLICommands.php:140
600
+ msgid "Selected predefined demo import: %s"
601
+ msgstr ""
602
+
603
+ #: inc/WPCLICommands.php:143
604
+ msgid "Preparing the demo import files..."
605
+ msgstr ""
606
+
607
+ #: inc/WPCLICommands.php:148
608
+ msgid "Demo import files could not be retrieved!"
609
+ msgstr ""
610
+
611
+ #: inc/WPCLICommands.php:151
612
+ msgid "Demo import files retrieved successfully!"
613
+ msgstr ""
614
+
615
+ #: inc/WPCLICommands.php:173
616
+ msgid "Predefined import finished!"
617
+ msgstr ""
618
+
619
+ #: inc/WPCLICommands.php:185
620
+ msgid "Content import file provided does not exist! Skipping this import!"
621
+ msgstr ""
622
+
623
+ #: inc/WPCLICommands.php:194
624
+ msgid "Importing content (this might take a while)..."
625
+ msgstr ""
626
+
627
+ #: inc/WPCLICommands.php:196
628
+ msgid "Importing content"
629
+ msgstr ""
630
+
631
+ #: inc/WPCLICommands.php:201
632
+ msgid "Content import finished!"
633
+ msgstr ""
634
+
635
+ #: inc/WPCLICommands.php:204
636
+ msgid "There were some issues while importing the content!"
637
+ msgstr ""
638
+
639
+ #: inc/WPCLICommands.php:223
640
+ msgid "Widgets import file provided does not exist! Skipping this import!"
641
+ msgstr ""
642
+
643
+ #: inc/WPCLICommands.php:227
644
+ msgid "Importing widgets..."
645
+ msgstr ""
646
+
647
+ #: inc/WPCLICommands.php:232
648
+ msgid "Widgets imported successfully!"
649
+ msgstr ""
650
+
651
+ #: inc/WPCLICommands.php:235
652
+ msgid "There were some issues while importing widgets!"
653
+ msgstr ""
654
+
655
+ #: inc/WPCLICommands.php:254
656
+ msgid "Customizer import file provided does not exist! Skipping this import!"
657
+ msgstr ""
658
+
659
+ #: inc/WPCLICommands.php:258
660
+ msgid "Importing customizer settings..."
661
+ msgstr ""
662
+
663
+ #: inc/WPCLICommands.php:263
664
+ msgid "Customizer settings imported successfully!"
665
+ msgstr ""
666
+
667
+ #: inc/WPCLICommands.php:266
668
+ msgid "There were some issues while importing customizer settings!"
669
+ msgstr ""
670
+
671
+ #. translators: %s - the name of the executing action.
672
+ #: inc/WPCLICommands.php:286
673
+ msgid "Executing action: %s ..."
674
+ msgstr ""
675
+
676
+ #. translators: %1$s - the PHP version, %2$s and %3$s - strong HTML tags, %4$s - br HTMl tag.
677
+ #: one-click-demo-import.php:58
678
+ msgid "The %2$sOne Click Demo Import%3$s plugin requires %2$sPHP 5.6+%3$s to run properly. Please contact your hosting company and ask them to update the PHP version of your site to at least PHP 7.4%4$s Your current version of PHP: %2$s%1$s%3$s"
679
+ msgstr ""
680
+
681
+ #: views/create-content.php:26
682
+ #: views/plugin-page.php:239
683
+ msgid "Create Demo Content"
684
+ msgstr ""
685
+
686
+ #: views/create-content.php:28
687
+ msgid "Select which pre-built pages you want to import to use on your website. After that, all you need to do is customize the content to fit your needs and your page will be good to go."
688
+ msgstr ""
689
+
690
+ #: views/create-content.php:50
691
+ #: views/import.php:69
692
+ #: views/install-plugins.php:49
693
+ msgid "Checkmark icon"
694
+ msgstr ""
695
+
696
+ #: views/create-content.php:51
697
+ #: views/import.php:73
698
+ #: views/install-plugins.php:50
699
+ msgid "Loading..."
700
+ msgstr ""
701
+
702
+ #: views/create-content.php:60
703
+ msgid "The following plugins will be installed for free: "
704
+ msgstr ""
705
+
706
+ #: views/create-content.php:66
707
+ #: views/import.php:81
708
+ #: views/install-plugins.php:57
709
+ msgid "Back icon"
710
+ msgstr ""
711
+
712
+ #: views/create-content.php:66
713
+ #: views/import.php:81
714
+ #: views/install-plugins.php:57
715
+ msgid "Go Back"
716
+ msgstr ""
717
+
718
+ #: views/create-content.php:67
719
+ msgid "Import"
720
+ msgstr ""
721
+
722
+ #: views/import.php:27
723
+ msgid "Before We Import Your Demo"
724
+ msgstr ""
725
+
726
+ #: views/import.php:29
727
+ msgid "To ensure the best experience, installing the following plugins is strongly recommended, and in some cases required."
728
+ msgstr ""
729
+
730
+ #: views/import.php:42
731
+ msgid "All required/recommended plugins are already installed. You can import your demo content."
732
+ msgstr ""
733
+
734
+ #: views/import.php:54
735
+ msgid "Star icon"
736
+ msgstr ""
737
+
738
+ #: views/import.php:71
739
+ msgid "Lock icon"
740
+ msgstr ""
741
+
742
+ #: views/import.php:82
743
+ #: views/plugin-page.php:277
744
+ msgid "Continue & Import"
745
+ msgstr ""
746
+
747
+ #: views/import.php:91
748
+ msgid "Importing Content"
749
+ msgstr ""
750
+
751
+ #: views/import.php:92
752
+ msgid "Please sit tight while we import your content. Do not refresh the page or hit the back button."
753
+ msgstr ""
754
+
755
+ #: views/import.php:95
756
+ msgid "Importing animation"
757
+ msgstr ""
758
+
759
+ #: views/import.php:112
760
+ msgid "Theme Settings"
761
+ msgstr ""
762
+
763
+ #: views/import.php:113
764
+ msgid "Visit Site"
765
+ msgstr ""
766
+
767
+ #: views/install-plugins.php:25
768
+ msgid "Install Recommended Plugins"
769
+ msgstr ""
770
+
771
+ #: views/install-plugins.php:27
772
+ msgid "Want to use the best plugins for the job? Here is the list of awesome plugins that will help you achieve your goals."
773
+ msgstr ""
774
+
775
+ #: views/install-plugins.php:58
776
+ msgid "Install & Activate"
777
+ msgstr ""
778
+
779
+ #. translators: %1$s - the opening div and paragraph HTML tags, %2$s and %3$s - strong HTML tags, %4$s - the closing div and paragraph HTML tags.
780
+ #: views/plugin-page.php:32
781
+ msgid "%1$sWarning: your server is using %2$sPHP safe mode%3$s. This means that you might experience server timeout errors.%4$s"
782
+ msgstr ""
783
+
784
+ #: views/plugin-page.php:50
785
+ msgid "Importing demo data (post, pages, images, theme settings, etc.) is the quickest and easiest way to set up your new theme."
786
+ msgstr ""
787
+
788
+ #: views/plugin-page.php:51
789
+ msgid "It allows you to simply edit everything instead of creating content and layouts from scratch."
790
+ msgstr ""
791
+
792
+ #: views/plugin-page.php:52
793
+ msgid "Learn more"
794
+ msgstr ""
795
+
796
+ #: views/plugin-page.php:65
797
+ msgid "There are no predefined import files available for this theme. Please upload the import files manually below."
798
+ msgstr ""
799
+
800
+ #: views/plugin-page.php:108
801
+ msgid "Switch to Manual Import"
802
+ msgstr ""
803
+
804
+ #: views/plugin-page.php:110
805
+ msgid "Switch back to Theme Predefined Imports"
806
+ msgstr ""
807
+
808
+ #: views/plugin-page.php:121
809
+ msgid "Manual Demo File Import"
810
+ msgstr ""
811
+
812
+ #: views/plugin-page.php:130
813
+ msgid "Content import icon"
814
+ msgstr ""
815
+
816
+ #: views/plugin-page.php:132
817
+ msgid "Import Content"
818
+ msgstr ""
819
+
820
+ #: views/plugin-page.php:133
821
+ msgid "Select an XML file to import."
822
+ msgstr ""
823
+
824
+ #: views/plugin-page.php:136
825
+ #: views/plugin-page.php:157
826
+ #: views/plugin-page.php:178
827
+ #: views/plugin-page.php:200
828
+ #: views/plugin-page.php:225
829
+ #: views/plugin-page.php:243
830
+ #: views/plugin-page.php:261
831
+ msgid "Info icon"
832
+ msgstr ""
833
+
834
+ #: views/plugin-page.php:141
835
+ #: views/plugin-page.php:162
836
+ #: views/plugin-page.php:183
837
+ #: views/plugin-page.php:205
838
+ msgid "Select a File"
839
+ msgstr ""
840
+
841
+ #: views/plugin-page.php:151
842
+ msgid "Widgets import icon"
843
+ msgstr ""
844
+
845
+ #: views/plugin-page.php:153
846
+ msgid "Import Widgets"
847
+ msgstr ""
848
+
849
+ #: views/plugin-page.php:154
850
+ msgid "Select a JSON/WIE file to import."
851
+ msgstr ""
852
+
853
+ #: views/plugin-page.php:172
854
+ msgid "Customizer import icon"
855
+ msgstr ""
856
+
857
+ #: views/plugin-page.php:174
858
+ msgid "Import Customizer"
859
+ msgstr ""
860
+
861
+ #: views/plugin-page.php:175
862
+ msgid "Select a DAT file to import."
863
+ msgstr ""
864
+
865
+ #: views/plugin-page.php:194
866
+ msgid "Redux import icon"
867
+ msgstr ""
868
+
869
+ #: views/plugin-page.php:196
870
+ msgid "Import Redux"
871
+ msgstr ""
872
+
873
+ #: views/plugin-page.php:197
874
+ msgid "Select a JSON file and enter Redux option name."
875
+ msgstr ""
876
+
877
+ #: views/plugin-page.php:208
878
+ msgid "Enter Option Name"
879
+ msgstr ""
880
+
881
+ #: views/plugin-page.php:219
882
+ msgid "Recommended plugins icon"
883
+ msgstr ""
884
+
885
+ #: views/plugin-page.php:221
886
+ msgid "Recommended Plugins"
887
+ msgstr ""
888
+
889
+ #: views/plugin-page.php:222
890
+ msgid "Install our recommended plugins."
891
+ msgstr ""
892
+
893
+ #: views/plugin-page.php:229
894
+ msgid "Install Plugins"
895
+ msgstr ""
896
+
897
+ #: views/plugin-page.php:237
898
+ msgid "Create demo content icon"
899
+ msgstr ""
900
+
901
+ #: views/plugin-page.php:240
902
+ msgid "Create useful content with a few clicks."
903
+ msgstr ""
904
+
905
+ #: views/plugin-page.php:247
906
+ msgid "Create Content"
907
+ msgstr ""
908
+
909
+ #: views/plugin-page.php:255
910
+ msgid "Create landing pages icon"
911
+ msgstr ""
912
+
913
+ #: views/plugin-page.php:257
914
+ msgid "Create Landing Pages"
915
+ msgstr ""
916
+
917
+ #: views/plugin-page.php:258
918
+ msgid "Create beautiful converting pages."
919
+ msgstr ""
920
+
921
+ #: views/plugin-page.php:305
922
+ msgid "All Demos"
923
+ msgstr ""
924
+
925
+ #: views/plugin-page.php:318
926
+ msgid "Search Demos..."
927
+ msgstr ""
928
+
929
+ #: views/plugin-page.php:341
930
+ msgid "No preview image."
931
+ msgstr ""
932
+
933
+ #: views/plugin-page.php:348
934
+ msgid "Preview Demo"
935
+ msgstr ""
936
+
937
+ #: views/plugin-page.php:350
938
+ msgid "Import Demo"
939
+ msgstr ""
languages/pt-ocdi.pot DELETED
@@ -1,521 +0,0 @@
1
- # Copyright (C) 2020 Awesome Motive
2
- # This file is distributed under the GPL 2.0.
3
- msgid ""
4
- msgstr ""
5
- "Project-Id-Version: One Click Demo Import 2.6.1\n"
6
- "Report-Msgid-Bugs-To: "
7
- "https://wordpress.org/support/plugin/one-click-demo-import/\n"
8
- "POT-Creation-Date: 2016-05-14 09:53:17+00:00\n"
9
- "MIME-Version: 1.0\n"
10
- "Content-Type: text/plain; charset=utf-8\n"
11
- "Content-Transfer-Encoding: 8bit\n"
12
- "PO-Revision-Date: 2020-MO-DA HO:MI+ZONE\n"
13
- "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
- "Language-Team: LANGUAGE <LL@li.org>\n"
15
- "X-Generator: grunt-wp-i18n 0.5.4\n"
16
- "X-Poedit-KeywordsList: "
17
- "__;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_"
18
- "attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c;\n"
19
- "Language: en\n"
20
- "Plural-Forms: nplurals=2; plural=(n != 1);\n"
21
- "X-Poedit-Country: United States\n"
22
- "X-Poedit-SourceCharset: UTF-8\n"
23
- "X-Poedit-Basepath: ../\n"
24
- "X-Poedit-SearchPath-0: .\n"
25
- "X-Poedit-Bookmarks: \n"
26
- "X-Textdomain-Support: yes\n"
27
-
28
- #: inc/CustomizerImporter.php:37 inc/CustomizerImporter.php:45
29
- msgid "Importing customizer settings"
30
- msgstr ""
31
-
32
- #: inc/CustomizerImporter.php:43
33
- msgid "Customizer settings import finished!"
34
- msgstr ""
35
-
36
- #: inc/CustomizerImporter.php:73
37
- msgid "Error: The customizer import file is missing! File path: %s"
38
- msgstr ""
39
-
40
- #: inc/CustomizerImporter.php:93
41
- msgid ""
42
- "Error: The customizer import file is not in a correct format. Please make "
43
- "sure to use the correct customizer import file."
44
- msgstr ""
45
-
46
- #: inc/CustomizerImporter.php:99
47
- msgid ""
48
- "Error: The customizer import file is not suitable for current theme. You "
49
- "can only import customizer settings for the same theme or a child theme."
50
- msgstr ""
51
-
52
- #: inc/Downloader.php:58
53
- msgid "Missing URL for downloading a file!"
54
- msgstr ""
55
-
56
- #: inc/Downloader.php:76
57
- msgid ""
58
- "An error occurred while fetching file from: %1$s%2$s%3$s!%4$sReason: %5$s - "
59
- "%6$s."
60
- msgstr ""
61
-
62
- #: inc/Helpers.php:199 inc/Helpers.php:242
63
- msgid ""
64
- "An error occurred while writing file to your server! Tried to write a file "
65
- "to: %s%s."
66
- msgstr ""
67
-
68
- #: inc/Helpers.php:276
69
- msgid ""
70
- "An error occurred while reading a file from your server! Tried reading file "
71
- "from path: %s%s."
72
- msgstr ""
73
-
74
- #: inc/Helpers.php:299
75
- msgid ""
76
- "This WordPress page does not have %sdirect%s write file access. This plugin "
77
- "needs it in order to save the demo import xml file to the upload directory "
78
- "of your site. You can change this setting with these instructions: %s."
79
- msgstr ""
80
-
81
- #. Plugin Name of the plugin/theme
82
- msgid "One Click Demo Import"
83
- msgstr ""
84
-
85
- #: inc/Helpers.php:311 inc/OneClickDemoImport.php:138 views/plugin-page.php:124
86
- #: views/plugin-page.php:136
87
- msgid "Import Demo Data"
88
- msgstr ""
89
-
90
- #: inc/Helpers.php:323
91
- msgid ""
92
- "An error occurred while retrieving reading/writing permissions to your "
93
- "server (could not retrieve WP filesystem credentials)!"
94
- msgstr ""
95
-
96
- #: inc/Helpers.php:331
97
- msgid "Your WordPress login credentials don't allow to use WP_Filesystem!"
98
- msgstr ""
99
-
100
- #: inc/Helpers.php:371
101
- msgid "One Click Demo Import - "
102
- msgstr ""
103
-
104
- #: inc/Helpers.php:405
105
- msgid ""
106
- "%sYour user role isn't high enough. You don't have permission to import "
107
- "demo data.%s"
108
- msgstr ""
109
-
110
- #: inc/Helpers.php:438
111
- msgid "No file provided."
112
- msgstr ""
113
-
114
- #: inc/Helpers.php:467
115
- msgid "Content file was not uploaded. Error: %s"
116
- msgstr ""
117
-
118
- #: inc/Helpers.php:471 inc/Helpers.php:488 inc/Helpers.php:505
119
- #: inc/Helpers.php:516 inc/Helpers.php:536 inc/Helpers.php:544
120
- msgid "Upload files"
121
- msgstr ""
122
-
123
- #: inc/Helpers.php:484
124
- msgid "Widget file was not uploaded. Error: %s"
125
- msgstr ""
126
-
127
- #: inc/Helpers.php:501
128
- msgid "Customizer file was not uploaded. Error: %s"
129
- msgstr ""
130
-
131
- #: inc/Helpers.php:514
132
- msgid "Missing Redux option name! Please also enter the Redux option name!"
133
- msgstr ""
134
-
135
- #: inc/Helpers.php:532
136
- msgid "Redux file was not uploaded. Error: %s"
137
- msgstr ""
138
-
139
- #: inc/Helpers.php:542
140
- msgid "The import files were successfully uploaded!"
141
- msgstr ""
142
-
143
- #: inc/Helpers.php:568
144
- msgid "Initial max execution time = %s"
145
- msgstr ""
146
-
147
- #: inc/Helpers.php:572
148
- msgid ""
149
- "Files info:%1$sSite URL = %2$s%1$sData file = %3$s%1$sWidget file = "
150
- "%4$s%1$sCustomizer file = %5$s%1$sRedux files:%1$s%6$s"
151
- msgstr ""
152
-
153
- #: inc/Helpers.php:575 inc/Helpers.php:576 inc/Helpers.php:577
154
- #: inc/Helpers.php:578
155
- msgid "not defined!"
156
- msgstr ""
157
-
158
- #: inc/Importer.php:174
159
- msgid "New AJAX call!"
160
- msgstr ""
161
-
162
- #: inc/OneClickDemoImport.php:189
163
- msgid "No preview image defined for this import."
164
- msgstr ""
165
-
166
- #: inc/OneClickDemoImport.php:190
167
- msgid "Are you sure?"
168
- msgstr ""
169
-
170
- #: inc/OneClickDemoImport.php:191
171
- msgid "Cancel"
172
- msgstr ""
173
-
174
- #: inc/OneClickDemoImport.php:192
175
- msgid "Yes, import!"
176
- msgstr ""
177
-
178
- #: inc/OneClickDemoImport.php:193
179
- msgid "Selected demo import:"
180
- msgstr ""
181
-
182
- #: inc/OneClickDemoImport.php:240
183
- msgid "Manually uploaded files"
184
- msgstr ""
185
-
186
- #: inc/OneClickDemoImport.php:253 inc/OneClickDemoImport.php:264
187
- msgid "Downloaded files"
188
- msgstr ""
189
-
190
- #: inc/OneClickDemoImport.php:260
191
- msgid "The import files for: %s were successfully downloaded!"
192
- msgstr ""
193
-
194
- #: inc/OneClickDemoImport.php:269
195
- msgid "No import files specified!"
196
- msgstr ""
197
-
198
- #: inc/OneClickDemoImport.php:390
199
- msgid ""
200
- "Just used One Click Demo Import plugin and it was awesome! Thanks "
201
- "@ProteusThemes! #OCDI https://www.proteusthemes.com/"
202
- msgstr ""
203
-
204
- #: inc/OneClickDemoImport.php:393
205
- msgid ""
206
- "%1$s%6$sWasn't this a great One Click Demo Import experience?%7$s Created "
207
- "and maintained by %3$sProteusThemes%4$s. %2$s%5$sClick to Tweet!%4$s%8$s"
208
- msgstr ""
209
-
210
- #: inc/OneClickDemoImport.php:406
211
- msgid ""
212
- "%1$s%3$sThat's it, all done!%4$s%2$sThe demo import has finished. Please "
213
- "check your page and make sure that everything has imported correctly. If it "
214
- "did, you can deactivate the %3$sOne Click Demo Import%4$s plugin, because "
215
- "it has done its job.%5$s"
216
- msgstr ""
217
-
218
- #: inc/OneClickDemoImport.php:417
219
- msgid ""
220
- "%1$sThe demo import has finished, but there were some import "
221
- "errors.%2$sMore details about the errors can be found in this %3$s%5$slog "
222
- "file%6$s%4$s%7$s"
223
- msgstr ""
224
-
225
- #: inc/ReduxImporter.php:23
226
- msgid "The Redux plugin is not activated, so the Redux import was skipped!"
227
- msgstr ""
228
-
229
- #: inc/ReduxImporter.php:32 inc/ReduxImporter.php:53 inc/ReduxImporter.php:66
230
- msgid "Importing Redux settings"
231
- msgstr ""
232
-
233
- #: inc/ReduxImporter.php:51
234
- msgid "Redux settings import for: %s finished successfully!"
235
- msgstr ""
236
-
237
- #: inc/ReduxImporter.php:57
238
- msgid ""
239
- "The Redux option name: %s, was not found in this WP site, so it was not "
240
- "imported!"
241
- msgstr ""
242
-
243
- #: inc/WPCLICommands.php:34
244
- msgid "There are no predefined demo imports for currently active theme!"
245
- msgstr ""
246
-
247
- #: inc/WPCLICommands.php:37
248
- msgid "Here are the predefined demo imports:"
249
- msgstr ""
250
-
251
- #: inc/WPCLICommands.php:71
252
- msgid "At least one of the possible options should be set! Check them with --help"
253
- msgstr ""
254
-
255
- #: inc/WPCLICommands.php:122
256
- msgid ""
257
- "The \"predefined\" parameter should be a number (an index of the OCDI "
258
- "predefined demo import)!"
259
- msgstr ""
260
-
261
- #: inc/WPCLICommands.php:128
262
- msgid ""
263
- "The supplied predefined index does not exist! Please take a look at the "
264
- "available predefined demo imports:"
265
- msgstr ""
266
-
267
- #: inc/WPCLICommands.php:135
268
- msgid "Predefined demo import started! All other parameters will be ignored!"
269
- msgstr ""
270
-
271
- #: inc/WPCLICommands.php:140
272
- msgid "Selected predefined demo import: %s"
273
- msgstr ""
274
-
275
- #: inc/WPCLICommands.php:143
276
- msgid "Preparing the demo import files..."
277
- msgstr ""
278
-
279
- #: inc/WPCLICommands.php:148
280
- msgid "Demo import files could not be retrieved!"
281
- msgstr ""
282
-
283
- #: inc/WPCLICommands.php:151
284
- msgid "Demo import files retrieved successfully!"
285
- msgstr ""
286
-
287
- #: inc/WPCLICommands.php:153
288
- msgid "Importing..."
289
- msgstr ""
290
-
291
- #: inc/WPCLICommands.php:173
292
- msgid "Predefined import finished!"
293
- msgstr ""
294
-
295
- #: inc/WPCLICommands.php:185
296
- msgid "Content import file provided does not exist! Skipping this import!"
297
- msgstr ""
298
-
299
- #: inc/WPCLICommands.php:194
300
- msgid "Importing content (this might take a while)..."
301
- msgstr ""
302
-
303
- #: inc/WPCLICommands.php:196
304
- msgid "Importing content"
305
- msgstr ""
306
-
307
- #: inc/WPCLICommands.php:201
308
- msgid "Content import finished!"
309
- msgstr ""
310
-
311
- #: inc/WPCLICommands.php:204
312
- msgid "There were some issues while importing the content!"
313
- msgstr ""
314
-
315
- #: inc/WPCLICommands.php:223
316
- msgid "Widgets import file provided does not exist! Skipping this import!"
317
- msgstr ""
318
-
319
- #: inc/WPCLICommands.php:227
320
- msgid "Importing widgets..."
321
- msgstr ""
322
-
323
- #: inc/WPCLICommands.php:232
324
- msgid "Widgets imported successfully!"
325
- msgstr ""
326
-
327
- #: inc/WPCLICommands.php:235
328
- msgid "There were some issues while importing widgets!"
329
- msgstr ""
330
-
331
- #: inc/WPCLICommands.php:254
332
- msgid "Customizer import file provided does not exist! Skipping this import!"
333
- msgstr ""
334
-
335
- #: inc/WPCLICommands.php:258
336
- msgid "Importing customizer settings..."
337
- msgstr ""
338
-
339
- #: inc/WPCLICommands.php:263
340
- msgid "Customizer settings imported successfully!"
341
- msgstr ""
342
-
343
- #: inc/WPCLICommands.php:266
344
- msgid "There were some issues while importing customizer settings!"
345
- msgstr ""
346
-
347
- #: inc/WPCLICommands.php:286
348
- msgid "Executing action: %s ..."
349
- msgstr ""
350
-
351
- #: inc/WidgetImporter.php:40 inc/WidgetImporter.php:52
352
- msgid "Importing widgets"
353
- msgstr ""
354
-
355
- #: inc/WidgetImporter.php:88
356
- msgid "Error: Widget import file could not be found."
357
- msgstr ""
358
-
359
- #: inc/WidgetImporter.php:118
360
- msgid "Error: Widget import data could not be read. Please try a different file."
361
- msgstr ""
362
-
363
- #: inc/WidgetImporter.php:157
364
- msgid "Sidebar does not exist in theme (moving widget to Inactive)"
365
- msgstr ""
366
-
367
- #: inc/WidgetImporter.php:178
368
- msgid "Site does not support widget"
369
- msgstr ""
370
-
371
- #: inc/WidgetImporter.php:211
372
- msgid "Widget already exists"
373
- msgstr ""
374
-
375
- #: inc/WidgetImporter.php:276
376
- msgid "Imported"
377
- msgstr ""
378
-
379
- #: inc/WidgetImporter.php:280
380
- msgid "Imported to Inactive"
381
- msgstr ""
382
-
383
- #: inc/WidgetImporter.php:286
384
- msgid "No Title"
385
- msgstr ""
386
-
387
- #: inc/WidgetImporter.php:333
388
- msgid "No results for widget import!"
389
- msgstr ""
390
-
391
- #: one-click-demo-import.php:57
392
- msgid ""
393
- "The %2$sOne Click Demo Import%3$s plugin requires %2$sPHP 5.3.2+%3$s to run "
394
- "properly. Please contact your hosting company and ask them to update the "
395
- "PHP version of your site to at least PHP 5.3.2.%4$s Your current version of "
396
- "PHP: %2$s%1$s%3$s"
397
- msgstr ""
398
-
399
- #: views/plugin-page.php:35
400
- msgid ""
401
- "%sWarning: your server is using %sPHP safe mode%s. This means that you "
402
- "might experience server timeout errors.%s"
403
- msgstr ""
404
-
405
- #: views/plugin-page.php:48
406
- msgid "Before you begin, make sure all the required plugins are activated."
407
- msgstr ""
408
-
409
- #: views/plugin-page.php:53
410
- msgid ""
411
- "Importing demo data (post, pages, images, theme settings, ...) is the "
412
- "easiest way to setup your theme."
413
- msgstr ""
414
-
415
- #: views/plugin-page.php:54
416
- msgid ""
417
- "It will allow you to quickly edit everything instead of creating content "
418
- "from scratch."
419
- msgstr ""
420
-
421
- #: views/plugin-page.php:59
422
- msgid "When you import the data, the following things might happen:"
423
- msgstr ""
424
-
425
- #: views/plugin-page.php:62
426
- msgid ""
427
- "No existing posts, pages, categories, images, custom post types or any "
428
- "other data will be deleted or modified."
429
- msgstr ""
430
-
431
- #: views/plugin-page.php:63
432
- msgid ""
433
- "Posts, pages, images, widgets, menus and other theme settings will get "
434
- "imported."
435
- msgstr ""
436
-
437
- #: views/plugin-page.php:64
438
- msgid ""
439
- "Please click on the Import button only once and wait, it can take a couple "
440
- "of minutes."
441
- msgstr ""
442
-
443
- #: views/plugin-page.php:69
444
- msgid "Switch to manual import!"
445
- msgstr ""
446
-
447
- #: views/plugin-page.php:71
448
- msgid "Switch back to theme predefined imports!"
449
- msgstr ""
450
-
451
- #: views/plugin-page.php:87
452
- msgid ""
453
- "There are no predefined import files available in this theme. Please upload "
454
- "the import files manually!"
455
- msgstr ""
456
-
457
- #: views/plugin-page.php:94
458
- msgid "Manual demo files upload"
459
- msgstr ""
460
-
461
- #: views/plugin-page.php:97
462
- msgid "Choose a XML file for content import:"
463
- msgstr ""
464
-
465
- #: views/plugin-page.php:102
466
- msgid "Choose a WIE or JSON file for widget import:"
467
- msgstr ""
468
-
469
- #: views/plugin-page.php:107
470
- msgid "Choose a DAT file for customizer import:"
471
- msgstr ""
472
-
473
- #: views/plugin-page.php:113
474
- msgid "Choose a JSON file for Redux import:"
475
- msgstr ""
476
-
477
- #: views/plugin-page.php:116
478
- msgid "Enter the Redux option name:"
479
- msgstr ""
480
-
481
- #: views/plugin-page.php:151
482
- msgid "All"
483
- msgstr ""
484
-
485
- #: views/plugin-page.php:158
486
- msgid "Search demos..."
487
- msgstr ""
488
-
489
- #: views/plugin-page.php:179
490
- msgid "No preview image."
491
- msgstr ""
492
-
493
- #: views/plugin-page.php:184
494
- msgid "Import"
495
- msgstr ""
496
-
497
- #: views/plugin-page.php:186
498
- msgid "Preview"
499
- msgstr ""
500
-
501
- #: views/plugin-page.php:199
502
- msgid "Importing, please wait!"
503
- msgstr ""
504
-
505
- #. Plugin URI of the plugin/theme
506
- msgid "https://wordpress.org/plugins/one-click-demo-import/"
507
- msgstr ""
508
-
509
- #. Description of the plugin/theme
510
- msgid ""
511
- "Import your content, widgets and theme settings with one click. Theme "
512
- "authors! Enable simple demo import for your theme demo data."
513
- msgstr ""
514
-
515
- #. Author of the plugin/theme
516
- msgid "ProteusThemes"
517
- msgstr ""
518
-
519
- #. Author URI of the plugin/theme
520
- msgid "http://www.proteusthemes.com"
521
- msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
one-click-demo-import.php CHANGED
@@ -4,12 +4,13 @@
4
  Plugin Name: One Click Demo Import
5
  Plugin URI: https://wordpress.org/plugins/one-click-demo-import/
6
  Description: Import your content, widgets and theme settings with one click. Theme authors! Enable simple demo import for your theme demo data.
7
- Version: 2.6.1
8
- Author: ProteusThemes
9
- Author URI: http://www.proteusthemes.com
10
  License: GPL3
11
  License URI: http://www.gnu.org/licenses/gpl.html
12
- Text Domain: pt-ocdi
 
13
  */
14
 
15
  // Block direct access to the main plugin file.
@@ -24,10 +25,10 @@ class OCDI_Plugin {
24
  */
25
  public function __construct() {
26
  /**
27
- * Display admin error message if PHP version is older than 5.3.2.
28
  * Otherwise execute the main plugin class.
29
  */
30
- if ( version_compare( phpversion(), '5.3.2', '<' ) ) {
31
  add_action( 'admin_notices', array( $this, 'old_php_admin_error_notice' ) );
32
  }
33
  else {
@@ -35,10 +36,10 @@ class OCDI_Plugin {
35
  $this->set_plugin_constants();
36
 
37
  // Composer autoloader.
38
- require_once PT_OCDI_PATH . 'vendor/autoload.php';
39
 
40
  // Instantiate the main plugin class *Singleton*.
41
- $pt_one_click_demo_import = OCDI\OneClickDemoImport::get_instance();
42
 
43
  // Register WP CLI commands
44
  if ( defined( 'WP_CLI' ) && WP_CLI ) {
@@ -50,11 +51,11 @@ class OCDI_Plugin {
50
 
51
 
52
  /**
53
- * Display an admin error notice when PHP is older the version 5.3.2.
54
  * Hook it to the 'admin_notices' action.
55
  */
56
- public function old_php_admin_error_notice() {
57
- $message = sprintf( esc_html__( 'The %2$sOne Click Demo Import%3$s plugin requires %2$sPHP 5.3.2+%3$s to run properly. Please contact your hosting company and ask them to update the PHP version of your site to at least PHP 5.3.2.%4$s Your current version of PHP: %2$s%1$s%3$s', 'pt-ocdi' ), phpversion(), '<strong>', '</strong>', '<br>' );
58
 
59
  printf( '<div class="notice notice-error"><p>%1$s</p></div>', wp_kses_post( $message ) );
60
  }
@@ -67,6 +68,14 @@ class OCDI_Plugin {
67
  */
68
  private function set_plugin_constants() {
69
  // Path/URL to root of this plugin, with trailing slash.
 
 
 
 
 
 
 
 
70
  if ( ! defined( 'PT_OCDI_PATH' ) ) {
71
  define( 'PT_OCDI_PATH', plugin_dir_path( __FILE__ ) );
72
  }
@@ -80,11 +89,17 @@ class OCDI_Plugin {
80
 
81
 
82
  /**
83
- * Set plugin version constant -> PT_OCDI_VERSION.
84
  */
85
  public function set_plugin_version_constant() {
 
 
 
 
 
 
 
86
  if ( ! defined( 'PT_OCDI_VERSION' ) ) {
87
- $plugin_data = get_plugin_data( __FILE__ );
88
  define( 'PT_OCDI_VERSION', $plugin_data['Version'] );
89
  }
90
  }
4
  Plugin Name: One Click Demo Import
5
  Plugin URI: https://wordpress.org/plugins/one-click-demo-import/
6
  Description: Import your content, widgets and theme settings with one click. Theme authors! Enable simple demo import for your theme demo data.
7
+ Version: 3.0.0
8
+ Author: One Click Demo Import
9
+ Author URI: https://profiles.wordpress.org/ocdi/
10
  License: GPL3
11
  License URI: http://www.gnu.org/licenses/gpl.html
12
+ Text Domain: one-click-demo-import
13
+ Domain Path: /languages
14
  */
15
 
16
  // Block direct access to the main plugin file.
25
  */
26
  public function __construct() {
27
  /**
28
+ * Display admin error message if PHP version is older than 5.6.
29
  * Otherwise execute the main plugin class.
30
  */
31
+ if ( version_compare( phpversion(), '5.6', '<' ) ) {
32
  add_action( 'admin_notices', array( $this, 'old_php_admin_error_notice' ) );
33
  }
34
  else {
36
  $this->set_plugin_constants();
37
 
38
  // Composer autoloader.
39
+ require_once OCDI_PATH . 'vendor/autoload.php';
40
 
41
  // Instantiate the main plugin class *Singleton*.
42
+ $one_click_demo_import = OCDI\OneClickDemoImport::get_instance();
43
 
44
  // Register WP CLI commands
45
  if ( defined( 'WP_CLI' ) && WP_CLI ) {
51
 
52
 
53
  /**
54
+ * Display an admin error notice when PHP is older the version 5.6.
55
  * Hook it to the 'admin_notices' action.
56
  */
57
+ public function old_php_admin_error_notice() { /* translators: %1$s - the PHP version, %2$s and %3$s - strong HTML tags, %4$s - br HTMl tag. */
58
+ $message = sprintf( esc_html__( 'The %2$sOne Click Demo Import%3$s plugin requires %2$sPHP 5.6+%3$s to run properly. Please contact your hosting company and ask them to update the PHP version of your site to at least PHP 7.4%4$s Your current version of PHP: %2$s%1$s%3$s', 'one-click-demo-import' ), phpversion(), '<strong>', '</strong>', '<br>' );
59
 
60
  printf( '<div class="notice notice-error"><p>%1$s</p></div>', wp_kses_post( $message ) );
61
  }
68
  */
69
  private function set_plugin_constants() {
70
  // Path/URL to root of this plugin, with trailing slash.
71
+ if ( ! defined( 'OCDI_PATH' ) ) {
72
+ define( 'OCDI_PATH', plugin_dir_path( __FILE__ ) );
73
+ }
74
+ if ( ! defined( 'OCDI_URL' ) ) {
75
+ define( 'OCDI_URL', plugin_dir_url( __FILE__ ) );
76
+ }
77
+
78
+ // Used for backward compatibility.
79
  if ( ! defined( 'PT_OCDI_PATH' ) ) {
80
  define( 'PT_OCDI_PATH', plugin_dir_path( __FILE__ ) );
81
  }
89
 
90
 
91
  /**
92
+ * Set plugin version constant -> OCDI_VERSION.
93
  */
94
  public function set_plugin_version_constant() {
95
+ $plugin_data = get_plugin_data( __FILE__ );
96
+
97
+ if ( ! defined( 'OCDI_VERSION' ) ) {
98
+ define( 'OCDI_VERSION', $plugin_data['Version'] );
99
+ }
100
+
101
+ // Used for backward compatibility.
102
  if ( ! defined( 'PT_OCDI_VERSION' ) ) {
 
103
  define( 'PT_OCDI_VERSION', $plugin_data['Version'] );
104
  }
105
  }
readme.txt CHANGED
@@ -1,13 +1,13 @@
1
  === One Click Demo Import ===
2
- Contributors: smub, proteusthemes
3
  Tags: import, content, demo, data, widgets, settings, redux, theme options
4
- Requires at least: 4.0
5
- Tested up to: 5.4
6
- Requires PHP: 5.3.2
7
- Stable tag: 2.6.1
8
  License: GPLv3 or later
9
 
10
- Import your demo content, widgets and theme settings with one click. Theme authors! Enable simple demo import for your theme demo data.
11
 
12
  == Description ==
13
 
@@ -17,27 +17,23 @@ The best feature of this plugin is, that theme authors can define import files i
17
  >
18
  > Setup One Click Demo Imports for your theme and your users will thank you for it!
19
  >
20
- > [Follow this easy guide on how to setup this plugin for your themes!](http://awesomemotive.github.io/one-click-demo-import/)
21
 
22
  > **Are you a theme user?**
23
  >
24
- > Contact the author of your theme and [let them know about this plugin](http://awesomemotive.github.io/one-click-demo-import/theme-users.html). Theme authors can make any theme compatible with this plugin in 15 minutes and make it much more user-friendly.
25
  >
26
- > "[Where can I find the contact of the theme author?](http://awesomemotive.github.io/one-click-demo-import/theme-users.html)"
27
 
28
- This plugin will create a submenu page under Appearance with the title **Import demo data**.
29
 
30
- If the theme you are using does not have any predefined import files, then you will be presented with three file upload inputs. First one is required and you will have to upload a demo content XML file, for the actual demo import. The second one is optional and will ask you for a WIE or JSON file for widgets import. You create that file using the [Widget Importer & Exporter](https://wordpress.org/plugins/widget-importer-exporter/) plugin. The third one is also optional and will import the customizer settings, select the DAT file which you can generate from [Customizer Export/Import](https://wordpress.org/plugins/customizer-export-import/) plugin (the customizer settings will be imported only if the export file was created from the same theme). The final one is optional as well and will import your Redux framework settings. You can generate the export json file with the [Redux framework](https://wordpress.org/plugins/redux-framework/) plugin.
31
-
32
- This plugin is using the improved WP import 2.0 that is still in development and can be found here: https://github.com/humanmade/WordPress-Importer.
33
-
34
- All progress of this plugin's work is logged in a log file in the default WP upload directory, together with the demo import files used in the importing process.
35
 
36
  NOTE: There is no setting to "connect" authors from the demo import file to the existing users in your WP site (like there is in the original WP Importer plugin). All demo content will be imported under the current user.
37
 
38
  **Do you want to contribute?**
39
 
40
- Please refer to the official [GitHub repository](https://github.com/awesomemotive/one-click-demo-import) of this plugin.
41
 
42
  == Installation ==
43
 
@@ -69,7 +65,7 @@ The log file will also be registered in the *wp-admin -> Media* section, so you
69
 
70
  = How to predefine demo imports? =
71
 
72
- This question is for theme authors. To predefine demo imports, you just have to add the following code structure, with your own values to your theme (using the `pt-ocdi/import_files` filter):
73
 
74
  `
75
  function ocdi_import_files() {
@@ -112,14 +108,14 @@ function ocdi_import_files() {
112
  ),
113
  );
114
  }
115
- add_filter( 'pt-ocdi/import_files', 'ocdi_import_files' );
116
  `
117
 
118
  You can set content import, widgets, customizer and Redux framework import files. You can also define a preview image, which will be used only when multiple demo imports are defined, so that the user will see the difference between imports. Categories can be assigned to each demo import, so that they can be filtered easily. The preview URL will display the "Preview" button in the predefined demo item, which will open this URL in a new tab and user can view how the demo site looks like.
119
 
120
  = How to automatically assign "Front page", "Posts page" and menu locations after the importer is done? =
121
 
122
- You can do that, with the `pt-ocdi/after_import` action hook. The code would look something like this:
123
 
124
  `
125
  function ocdi_after_import_setup() {
@@ -140,7 +136,7 @@ function ocdi_after_import_setup() {
140
  update_option( 'page_for_posts', $blog_page_id->ID );
141
 
142
  }
143
- add_action( 'pt-ocdi/after_import', 'ocdi_after_import_setup' );
144
  `
145
 
146
  = What about using local import files (from theme folder)? =
@@ -188,12 +184,12 @@ function ocdi_import_files() {
188
  ),
189
  );
190
  }
191
- add_filter( 'pt-ocdi/import_files', 'ocdi_import_files' );
192
  `
193
 
194
  = How to handle different "after import setups" depending on which predefined import was selected? =
195
 
196
- This question might be asked by a theme author wanting to implement different after import setups for multiple predefined demo imports. Lets say we have predefined two demo imports with the following names: 'Demo Import 1' and 'Demo Import 2', the code for after import setup would be (using the `pt-ocdi/after_import` filter):
197
 
198
  `
199
  function ocdi_after_import( $selected_import ) {
@@ -212,18 +208,18 @@ function ocdi_after_import( $selected_import ) {
212
  set_theme_mod( 'logo_img', get_template_directory_uri() . '/assets/images/logo2.png' );
213
  }
214
  }
215
- add_action( 'pt-ocdi/after_import', 'ocdi_after_import' );
216
  `
217
 
218
  = Can I add some code before the widgets get imported? =
219
 
220
- Of course you can, use the `pt-ocdi/before_widgets_import` action. You can also target different predefined demo imports like in the example above. Here is a simple example code of the `pt-ocdi/before_widgets_import` action:
221
 
222
  `
223
  function ocdi_before_widgets_import( $selected_import ) {
224
  echo "Add your code here that will be executed before the widgets get imported!";
225
  }
226
- add_action( 'pt-ocdi/before_widgets_import', 'ocdi_before_widgets_import' );
227
  `
228
 
229
  = How can I import via the WP-CLI? =
@@ -246,7 +242,7 @@ The content, widgets and customizer options can be mixed and used at the same ti
246
 
247
  = I'm a theme author and I want to change the plugin intro text, how can I do that? =
248
 
249
- You can change the plugin intro text by using the `pt-ocdi/plugin_intro_text` filter:
250
 
251
  `
252
  function ocdi_plugin_intro_text( $default_text ) {
@@ -254,7 +250,7 @@ function ocdi_plugin_intro_text( $default_text ) {
254
 
255
  return $default_text;
256
  }
257
- add_filter( 'pt-ocdi/plugin_intro_text', 'ocdi_plugin_intro_text' );
258
  `
259
 
260
  To add some text in a separate "box", you should wrap your text in a div with a class of 'ocdi__intro-text', like in the code example above.
@@ -263,7 +259,7 @@ To add some text in a separate "box", you should wrap your text in a div with a
263
 
264
  This will greatly improve the time needed to import the content (images), but only the original sized images will be imported. You can disable it with a filter, so just add this code to your theme function.php file:
265
 
266
- `add_filter( 'pt-ocdi/regenerate_thumbnails_in_content_import', '__return_false' );`
267
 
268
  = How to change the location, title and other parameters of the plugin page? =
269
 
@@ -272,19 +268,19 @@ As a theme author you do not like the location of the "Import Demo Data" plugin
272
  `
273
  function ocdi_plugin_page_setup( $default_settings ) {
274
  $default_settings['parent_slug'] = 'themes.php';
275
- $default_settings['page_title'] = esc_html__( 'One Click Demo Import' , 'pt-ocdi' );
276
- $default_settings['menu_title'] = esc_html__( 'Import Demo Data' , 'pt-ocdi' );
277
  $default_settings['capability'] = 'import';
278
- $default_settings['menu_slug'] = 'pt-one-click-demo-import';
279
 
280
  return $default_settings;
281
  }
282
- add_filter( 'pt-ocdi/plugin_page_setup', 'ocdi_plugin_page_setup' );
283
  `
284
 
285
  = How to do something before the content import executes? =
286
 
287
- In version 2.0.0 there is a new action hook: `pt-ocdi/before_content_import`, which will let you hook before the content import starts. An example of the code would look like this:
288
 
289
  `
290
  function ocdi_before_content_import( $selected_import ) {
@@ -297,53 +293,23 @@ function ocdi_before_content_import( $selected_import ) {
297
  echo "before import 2";
298
  }
299
  }
300
- add_action( 'pt-ocdi/before_content_import', 'ocdi_before_content_import' );
301
  `
302
 
303
  = How can I enable the `customize_save*` wp action hooks in the customizer import? =
304
 
305
  It's easy, just add this to your theme:
306
 
307
- `add_action( 'pt-ocdi/enable_wp_customize_save_hooks', '__return_true' );`
308
 
309
  This will enable the following WP hooks when importing the customizer data: `customize_save`, `customize_save_*`, `customize_save_after`.
310
 
311
-
312
- = How to configure the multi grid layout import popup confirmation? =
313
-
314
- If you want to disable the popup confirmation modal window, use this filter:
315
-
316
- `add_filter( 'pt-ocdi/enable_grid_layout_import_popup_confirmation', '__return_false' );`
317
-
318
- If you want to just change some options for the jQuery modal window we use for the popup confirmation, then use this filter:
319
-
320
- `
321
- function my_theme_ocdi_confirmation_dialog_options ( $options ) {
322
- return array_merge( $options, array(
323
- 'width' => 300,
324
- 'dialogClass' => 'wp-dialog',
325
- 'resizable' => false,
326
- 'height' => 'auto',
327
- 'modal' => true,
328
- ) );
329
- }
330
- add_filter( 'pt-ocdi/confirmation_dialog_options', 'my_theme_ocdi_confirmation_dialog_options', 10, 1 );
331
- `
332
-
333
- = How can I disable the ProteusThemes branding notice after successful demo import? =
334
-
335
- You can disable the branding notice with a WP filter. All you need to do is add this bit of code to your theme:
336
-
337
- `add_filter( 'pt-ocdi/disable_pt_branding', '__return_true' );`
338
-
339
- and the notice will not be displayed.
340
-
341
  = How can I pass Amazon S3 presigned URL's (temporary links) as external files ? =
342
 
343
- If you want to host your import content files on Amazon S3, but you want them to be publicly available, rather through an own API as presigned URL's (which expires) you can use the filter `pt-ocdi/pre_download_import_files` in which you can pass your own URL's, for example:
344
 
345
- ```
346
- add_filter( 'pt-ocdi/pre_download_import_files', function( $import_file_info ){
347
 
348
  // In this example `get_my_custom_urls` is supposedly making a `wp_remote_get` request, getting the urls from an API server where you're creating the presigned urls, [example here](https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/s3-presigned-url.html).
349
  // This request should return an array containing all the 3 links - `import_file_url`, `import_widget_file_url`, `import_customizer_file_url`
@@ -368,7 +334,7 @@ add_filter( 'pt-ocdi/pre_download_import_files', function( $import_file_info ){
368
  return $import_file_info;
369
 
370
  } );
371
- ```
372
 
373
  = I can't activate the plugin, because of a fatal error, what can I do? =
374
 
@@ -389,9 +355,23 @@ Please visit this [docs page](https://github.com/awesomemotive/one-click-demo-im
389
  1. Example of multiple predefined demo imports, that a user can choose from.
390
  2. How the import page looks like, when only one demo import is predefined.
391
  3. Example of how the import page looks like, when no demo imports are predefined a.k.a manual import.
 
392
 
393
  == Changelog ==
394
 
 
 
 
 
 
 
 
 
 
 
 
 
 
395
  = 2.6.1 =
396
 
397
  *Release Date - 21 July 2020*
1
  === One Click Demo Import ===
2
+ Contributors: ocdi, smub, jaredatch, capuderg
3
  Tags: import, content, demo, data, widgets, settings, redux, theme options
4
+ Requires at least: 4.9
5
+ Tested up to: 5.7
6
+ Requires PHP: 5.6
7
+ Stable tag: 3.0.0
8
  License: GPLv3 or later
9
 
10
+ Import your demo content, widgets and theme settings with one click. Theme authors! Enable simple theme demo import for your users.
11
 
12
  == Description ==
13
 
17
  >
18
  > Setup One Click Demo Imports for your theme and your users will thank you for it!
19
  >
20
+ > [Follow this easy guide on how to setup this plugin for your themes!](https://ocdi.com/quick-integration-guide/)
21
 
22
  > **Are you a theme user?**
23
  >
24
+ > Contact the author of your theme and [let them know about this plugin](https://ocdi.com/ask-your-theme-author/). Theme authors can make any theme compatible with this plugin in 15 minutes and make it much more user-friendly.
25
  >
26
+ > "[Where can I find the theme author contact?](https://ocdi.com/ask-your-theme-author/#how-can-you-contact-your-theme-author)"
27
 
28
+ Please take a look at our [plugin documentation](https://ocdi.com/user-guide/) for more information on how to import your demo content.
29
 
30
+ This plugin is using the modified version of the improved WP import 2.0 that is still in development and can be found here: https://github.com/humanmade/WordPress-Importer.
 
 
 
 
31
 
32
  NOTE: There is no setting to "connect" authors from the demo import file to the existing users in your WP site (like there is in the original WP Importer plugin). All demo content will be imported under the current user.
33
 
34
  **Do you want to contribute?**
35
 
36
+ Please refer to our official [GitHub repository](https://github.com/awesomemotive/one-click-demo-import).
37
 
38
  == Installation ==
39
 
65
 
66
  = How to predefine demo imports? =
67
 
68
+ This question is for theme authors. To predefine demo imports, you just have to add the following code structure, with your own values to your theme (using the `ocdi/import_files` filter):
69
 
70
  `
71
  function ocdi_import_files() {
108
  ),
109
  );
110
  }
111
+ add_filter( 'ocdi/import_files', 'ocdi_import_files' );
112
  `
113
 
114
  You can set content import, widgets, customizer and Redux framework import files. You can also define a preview image, which will be used only when multiple demo imports are defined, so that the user will see the difference between imports. Categories can be assigned to each demo import, so that they can be filtered easily. The preview URL will display the "Preview" button in the predefined demo item, which will open this URL in a new tab and user can view how the demo site looks like.
115
 
116
  = How to automatically assign "Front page", "Posts page" and menu locations after the importer is done? =
117
 
118
+ You can do that, with the `ocdi/after_import` action hook. The code would look something like this:
119
 
120
  `
121
  function ocdi_after_import_setup() {
136
  update_option( 'page_for_posts', $blog_page_id->ID );
137
 
138
  }
139
+ add_action( 'ocdi/after_import', 'ocdi_after_import_setup' );
140
  `
141
 
142
  = What about using local import files (from theme folder)? =
184
  ),
185
  );
186
  }
187
+ add_filter( 'ocdi/import_files', 'ocdi_import_files' );
188
  `
189
 
190
  = How to handle different "after import setups" depending on which predefined import was selected? =
191
 
192
+ This question might be asked by a theme author wanting to implement different after import setups for multiple predefined demo imports. Lets say we have predefined two demo imports with the following names: 'Demo Import 1' and 'Demo Import 2', the code for after import setup would be (using the `ocdi/after_import` filter):
193
 
194
  `
195
  function ocdi_after_import( $selected_import ) {
208
  set_theme_mod( 'logo_img', get_template_directory_uri() . '/assets/images/logo2.png' );
209
  }
210
  }
211
+ add_action( 'ocdi/after_import', 'ocdi_after_import' );
212
  `
213
 
214
  = Can I add some code before the widgets get imported? =
215
 
216
+ Of course you can, use the `ocdi/before_widgets_import` action. You can also target different predefined demo imports like in the example above. Here is a simple example code of the `ocdi/before_widgets_import` action:
217
 
218
  `
219
  function ocdi_before_widgets_import( $selected_import ) {
220
  echo "Add your code here that will be executed before the widgets get imported!";
221
  }
222
+ add_action( 'ocdi/before_widgets_import', 'ocdi_before_widgets_import' );
223
  `
224
 
225
  = How can I import via the WP-CLI? =
242
 
243
  = I'm a theme author and I want to change the plugin intro text, how can I do that? =
244
 
245
+ You can change the plugin intro text by using the `ocdi/plugin_intro_text` filter:
246
 
247
  `
248
  function ocdi_plugin_intro_text( $default_text ) {
250
 
251
  return $default_text;
252
  }
253
+ add_filter( 'ocdi/plugin_intro_text', 'ocdi_plugin_intro_text' );
254
  `
255
 
256
  To add some text in a separate "box", you should wrap your text in a div with a class of 'ocdi__intro-text', like in the code example above.
259
 
260
  This will greatly improve the time needed to import the content (images), but only the original sized images will be imported. You can disable it with a filter, so just add this code to your theme function.php file:
261
 
262
+ `add_filter( 'ocdi/regenerate_thumbnails_in_content_import', '__return_false' );`
263
 
264
  = How to change the location, title and other parameters of the plugin page? =
265
 
268
  `
269
  function ocdi_plugin_page_setup( $default_settings ) {
270
  $default_settings['parent_slug'] = 'themes.php';
271
+ $default_settings['page_title'] = esc_html__( 'One Click Demo Import' , 'one-click-demo-import' );
272
+ $default_settings['menu_title'] = esc_html__( 'Import Demo Data' , 'one-click-demo-import' );
273
  $default_settings['capability'] = 'import';
274
+ $default_settings['menu_slug'] = 'one-click-demo-import';
275
 
276
  return $default_settings;
277
  }
278
+ add_filter( 'ocdi/plugin_page_setup', 'ocdi_plugin_page_setup' );
279
  `
280
 
281
  = How to do something before the content import executes? =
282
 
283
+ In version 2.0.0 there is a new action hook: `ocdi/before_content_import`, which will let you hook before the content import starts. An example of the code would look like this:
284
 
285
  `
286
  function ocdi_before_content_import( $selected_import ) {
293
  echo "before import 2";
294
  }
295
  }
296
+ add_action( 'ocdi/before_content_import', 'ocdi_before_content_import' );
297
  `
298
 
299
  = How can I enable the `customize_save*` wp action hooks in the customizer import? =
300
 
301
  It's easy, just add this to your theme:
302
 
303
+ `add_action( 'ocdi/enable_wp_customize_save_hooks', '__return_true' );`
304
 
305
  This will enable the following WP hooks when importing the customizer data: `customize_save`, `customize_save_*`, `customize_save_after`.
306
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
307
  = How can I pass Amazon S3 presigned URL's (temporary links) as external files ? =
308
 
309
+ If you want to host your import content files on Amazon S3, but you want them to be publicly available, rather through an own API as presigned URL's (which expires) you can use the filter `ocdi/pre_download_import_files` in which you can pass your own URL's, for example:
310
 
311
+ `
312
+ add_filter( 'ocdi/pre_download_import_files', function( $import_file_info ){
313
 
314
  // In this example `get_my_custom_urls` is supposedly making a `wp_remote_get` request, getting the urls from an API server where you're creating the presigned urls, [example here](https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/s3-presigned-url.html).
315
  // This request should return an array containing all the 3 links - `import_file_url`, `import_widget_file_url`, `import_customizer_file_url`
334
  return $import_file_info;
335
 
336
  } );
337
+ `
338
 
339
  = I can't activate the plugin, because of a fatal error, what can I do? =
340
 
355
  1. Example of multiple predefined demo imports, that a user can choose from.
356
  2. How the import page looks like, when only one demo import is predefined.
357
  3. Example of how the import page looks like, when no demo imports are predefined a.k.a manual import.
358
+ 4. How the Recommended & Required theme plugins step looks like, just before the import step.
359
 
360
  == Changelog ==
361
 
362
+ = 3.0.0 =
363
+
364
+ *Release Date - 31 March 2021*
365
+
366
+ * IMPORTANT: Support for PHP 5.5 or lower has been discontinued. If you are running one of those versions, you MUST upgrade PHP before installing or upgrading to One Click Demo Import v3.0. Failure to do that will disable One Click Demo Import functionality.
367
+ * IMPORTANT: Support for WordPress core v4.9 or lower has been discontinued. If you are running one of those versions, you MUST upgrade WordPress core before installing or upgrading to One Click Demo Import v3.0. Failure to do that could cause issues with the One Click Demo Import functionality.
368
+ * Added support for recommended theme plugins.
369
+ * Added useful single page demo content imports.
370
+ * Added recommended plugins installer.
371
+ * Updated the UI/UX of the plugin.
372
+ * Fixed PHP8 warning.
373
+ * Fixed deprecated WP function `wp_slash_strings_only`.
374
+
375
  = 2.6.1 =
376
 
377
  *Release Date - 21 July 2020*
vendor/awesomemotive/wp-content-importer-v2/README.md CHANGED
@@ -13,6 +13,9 @@ One click demo import github page: https://github.com/awesomemotive/one-click-de
13
 
14
  ## Changelog
15
 
 
 
 
16
  *July 21st 2020*
17
  - Fixed incorrect post meta import.
18
  - Fixed Elementor import after `wp_slash` updates in this repo.
13
 
14
  ## Changelog
15
 
16
+ *February 12th 2021*
17
+ - Replaced deprecated WP function `wp_slash_strings_only` with `wp_slash`.
18
+
19
  *July 21st 2020*
20
  - Fixed incorrect post meta import.
21
  - Fixed Elementor import after `wp_slash` updates in this repo.
vendor/awesomemotive/wp-content-importer-v2/src/WXRImporter.php CHANGED
@@ -1222,7 +1222,7 @@ class WXRImporter extends \WP_Importer {
1222
  $value = maybe_unserialize( $meta_item['value'] );
1223
  }
1224
 
1225
- add_post_meta( $post_id, wp_slash( $key ), wp_slash_strings_only( $value ) );
1226
  do_action( 'import_post_meta', $post_id, $key, $value );
1227
 
1228
  // if the post has a featured image, take note of this in case of remap
1222
  $value = maybe_unserialize( $meta_item['value'] );
1223
  }
1224
 
1225
+ add_post_meta( $post_id, wp_slash( $key ), wp_slash( $value ) );
1226
  do_action( 'import_post_meta', $post_id, $key, $value );
1227
 
1228
  // if the post has a featured image, take note of this in case of remap
vendor/composer/ClassLoader.php CHANGED
@@ -60,7 +60,7 @@ class ClassLoader
60
  public function getPrefixes()
61
  {
62
  if (!empty($this->prefixesPsr0)) {
63
- return call_user_func_array('array_merge', $this->prefixesPsr0);
64
  }
65
 
66
  return array();
60
  public function getPrefixes()
61
  {
62
  if (!empty($this->prefixesPsr0)) {
63
+ return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
64
  }
65
 
66
  return array();
vendor/composer/installed.json CHANGED
@@ -1,20 +1,20 @@
1
  [
2
  {
3
  "name": "awesomemotive/wp-content-importer-v2",
4
- "version": "v3.0.3",
5
- "version_normalized": "3.0.3.0",
6
  "source": {
7
  "type": "git",
8
  "url": "https://github.com/awesomemotive/WordPress-Importer.git",
9
- "reference": "318c7657f4a4a84cf9e5a0d7f8d6ee2b2d0d0e9e"
10
  },
11
  "dist": {
12
  "type": "zip",
13
- "url": "https://api.github.com/repos/awesomemotive/WordPress-Importer/zipball/318c7657f4a4a84cf9e5a0d7f8d6ee2b2d0d0e9e",
14
- "reference": "318c7657f4a4a84cf9e5a0d7f8d6ee2b2d0d0e9e",
15
  "shasum": ""
16
  },
17
- "time": "2020-07-21T15:06:58+00:00",
18
  "type": "library",
19
  "installation-source": "dist",
20
  "autoload": {
@@ -49,7 +49,7 @@
49
  "wp"
50
  ],
51
  "support": {
52
- "source": "https://github.com/awesomemotive/WordPress-Importer/tree/v3.0.3"
53
  }
54
  }
55
  ]
1
  [
2
  {
3
  "name": "awesomemotive/wp-content-importer-v2",
4
+ "version": "v3.0.4",
5
+ "version_normalized": "3.0.4.0",
6
  "source": {
7
  "type": "git",
8
  "url": "https://github.com/awesomemotive/WordPress-Importer.git",
9
+ "reference": "167d4cf57ddd342af14ab65dfeb41ee406734a3e"
10
  },
11
  "dist": {
12
  "type": "zip",
13
+ "url": "https://api.github.com/repos/awesomemotive/WordPress-Importer/zipball/167d4cf57ddd342af14ab65dfeb41ee406734a3e",
14
+ "reference": "167d4cf57ddd342af14ab65dfeb41ee406734a3e",
15
  "shasum": ""
16
  },
17
+ "time": "2021-02-12T13:54:33+00:00",
18
  "type": "library",
19
  "installation-source": "dist",
20
  "autoload": {
49
  "wp"
50
  ],
51
  "support": {
52
+ "source": "https://github.com/awesomemotive/WordPress-Importer/tree/v3.0.4"
53
  }
54
  }
55
  ]
views/create-content.php ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * The create content page view.
4
+ *
5
+ * @package ocdi
6
+ */
7
+
8
+ namespace OCDI;
9
+
10
+ $demo_content_creator = new CreateDemoContent\DemoContentCreator();
11
+ $content_items = $demo_content_creator->get_default_content();
12
+ ?>
13
+
14
+ <div class="ocdi ocdi--create-content">
15
+
16
+ <?php echo wp_kses_post( ViewHelpers::plugin_header_output() ); ?>
17
+
18
+ <div class="ocdi__content-container">
19
+
20
+ <div class="ocdi__admin-notices js-ocdi-admin-notices-container"></div>
21
+
22
+ <div class="ocdi__content-container-content">
23
+ <div class="ocdi__content-container-content--main">
24
+ <div class="ocdi-create-content">
25
+ <div class="ocdi-create-content-header">
26
+ <h2><?php esc_html_e( 'Create Demo Content', 'one-click-demo-import' ); ?></h2>
27
+ <p>
28
+ <?php esc_html_e( 'Select which pre-built pages you want to import to use on your website. After that, all you need to do is customize the content to fit your needs and your page will be good to go.', 'one-click-demo-import' ); ?>
29
+ </p>
30
+ </div>
31
+ <div class="ocdi-create-content-content">
32
+ <div>
33
+ <?php foreach ( $content_items as $item ) : ?>
34
+ <label class="content-item content-item-<?php echo esc_attr( $item['slug'] ); ?>" for="ocdi-<?php echo esc_attr( $item['slug'] ); ?>-content-item">
35
+ <div class="content-item-content">
36
+ <div class="content-item-content-title">
37
+ <h3><?php echo esc_html( $item['name'] ); ?></h3>
38
+ </div>
39
+ <?php if ( ! empty( $item['description'] ) ) : ?>
40
+ <p>
41
+ <?php echo wp_kses_post( $item['description'] ); ?>
42
+ </p>
43
+ <?php endif; ?>
44
+ <div class="content-item-error js-ocdi-content-item-error"></div>
45
+ <div class="content-item-info js-ocdi-content-item-info"></div>
46
+ </div>
47
+ <span class="content-item-checkbox">
48
+ <input type="checkbox" id="ocdi-<?php echo esc_attr( $item['slug'] ); ?>-content-item" name="<?php echo esc_attr( $item['slug'] ); ?>" data-plugins="<?php echo esc_attr( implode( ',', $item['required_plugins'] ) ); ?>">
49
+ <span class="checkbox">
50
+ <img src="<?php echo esc_url( OCDI_URL . 'assets/images/icons/check-solid-white.svg' ); ?>" class="ocdi-check-icon" alt="<?php esc_attr_e( 'Checkmark icon', 'one-click-demo-import' ); ?>">
51
+ <img src="<?php echo esc_url( OCDI_URL . 'assets/images/loader.svg' ); ?>" class="ocdi-loading ocdi-loading-md" alt="<?php esc_attr_e( 'Loading...', 'one-click-demo-import' ); ?>">
52
+ </span>
53
+ </span>
54
+ </label>
55
+ <?php endforeach; ?>
56
+ </div>
57
+
58
+ <div class="ocdi-create-content-content-notice js-ocdi-create-content-install-plugins-notice">
59
+ <p>
60
+ <?php esc_html_e( 'The following plugins will be installed for free: ', 'one-click-demo-import' ); ?>
61
+ <span class="js-ocdi-create-content-install-plugins-list"></span>
62
+ </p>
63
+ </div>
64
+ </div>
65
+ <div class="ocdi-create-content-footer">
66
+ <a href="<?php echo esc_url( $this->get_plugin_settings_url() ); ?>" class="button"><img src="<?php echo esc_url( OCDI_URL . 'assets/images/icons/long-arrow-alt-left-blue.svg' ); ?>" alt="<?php esc_attr_e( 'Back icon', 'one-click-demo-import' ); ?>"><span><?php esc_html_e( 'Go Back' , 'one-click-demo-import' ); ?></span></a>
67
+ <a href="#" class="button button-primary js-ocdi-create-content"><?php esc_html_e( 'Import' , 'one-click-demo-import' ); ?></a>
68
+ </div>
69
+ </div>
70
+ </div>
71
+ <div class="ocdi__content-container-content--side">
72
+ <?php echo wp_kses_post( ViewHelpers::small_theme_card() ); ?>
73
+ </div>
74
+ </div>
75
+
76
+ </div>
77
+ </div>
views/import.php ADDED
@@ -0,0 +1,126 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * The install plugins page view.
4
+ *
5
+ * @package ocdi
6
+ */
7
+
8
+ namespace OCDI;
9
+
10
+ $plugin_installer = new PluginInstaller();
11
+ $theme_plugins = $plugin_installer->get_theme_plugins();
12
+ ?>
13
+
14
+ <div class="ocdi ocdi--install-plugins">
15
+
16
+ <?php echo wp_kses_post( ViewHelpers::plugin_header_output() ); ?>
17
+
18
+ <div class="ocdi__content-container">
19
+
20
+ <div class="ocdi__admin-notices js-ocdi-admin-notices-container"></div>
21
+
22
+ <div class="ocdi__content-container-content">
23
+ <div class="ocdi__content-container-content--main">
24
+ <?php if ( isset( $_GET['import'] ) ) : ?>
25
+ <div class="ocdi-install-plugins-content js-ocdi-install-plugins-content">
26
+ <div class="ocdi-install-plugins-content-header">
27
+ <h2><?php esc_html_e( 'Before We Import Your Demo', 'one-click-demo-import' ); ?></h2>
28
+ <p>
29
+ <?php esc_html_e( 'To ensure the best experience, installing the following plugins is strongly recommended, and in some cases required.', 'one-click-demo-import' ); ?>
30
+ </p>
31
+
32
+ <?php if ( ! empty( $this->import_files[ $_GET['import'] ]['import_notice'] ) ) : ?>
33
+ <div class="notice notice-info">
34
+ <p><?php echo wp_kses_post( $this->import_files[ $_GET['import'] ]['import_notice'] ); ?></p>
35
+ </div>
36
+ <?php endif; ?>
37
+ </div>
38
+ <div class="ocdi-install-plugins-content-content">
39
+ <?php if ( empty( $theme_plugins ) ) : ?>
40
+ <div class="ocdi-content-notice">
41
+ <p>
42
+ <?php esc_html_e( 'All required/recommended plugins are already installed. You can import your demo content.' , 'one-click-demo-import' ); ?>
43
+ </p>
44
+ </div>
45
+ <?php else : ?>
46
+ <?php foreach ( $theme_plugins as $plugin ) : ?>
47
+ <?php $is_plugin_active = $plugin_installer->is_plugin_active( $plugin['slug'] ); ?>
48
+ <label class="plugin-item plugin-item-<?php echo esc_attr( $plugin['slug'] ); ?><?php echo $is_plugin_active ? ' plugin-item--active' : ''; ?><?php echo ! empty( $plugin['required'] ) ? ' plugin-item--required' : ''; ?>" for="ocdi-<?php echo esc_attr( $plugin['slug'] ); ?>-plugin">
49
+ <div class="plugin-item-content">
50
+ <div class="plugin-item-content-title">
51
+ <h3><?php echo esc_html( $plugin['name'] ); ?></h3>
52
+ <?php if ( in_array( $plugin['slug'], [ 'wpforms-lite', 'all-in-one-seo-pack', 'google-analytics-for-wordpress' ], true ) ) : ?>
53
+ <span>
54
+ <img src="<?php echo esc_url( OCDI_URL . 'assets/images/icons/star.svg' ); ?>" alt="<?php esc_attr_e( 'Star icon', 'one-click-demo-import' ); ?>">
55
+ </span>
56
+ <?php endif; ?>
57
+ </div>
58
+ <?php if ( ! empty( $plugin['description'] ) ) : ?>
59
+ <p>
60
+ <?php echo wp_kses_post( $plugin['description'] ); ?>
61
+ </p>
62
+ <?php endif; ?>
63
+ <div class="plugin-item-error js-ocdi-plugin-item-error"></div>
64
+ <div class="plugin-item-info js-ocdi-plugin-item-info"></div>
65
+ </div>
66
+ <span class="plugin-item-checkbox">
67
+ <input type="checkbox" id="ocdi-<?php echo esc_attr( $plugin['slug'] ); ?>-plugin" name="<?php echo esc_attr( $plugin['slug'] ); ?>" <?php checked( ! empty( $plugin['preselected'] ) || ! empty( $plugin['required'] ) || $is_plugin_active ); ?><?php disabled( $is_plugin_active ); ?>>
68
+ <span class="checkbox">
69
+ <img src="<?php echo esc_url( OCDI_URL . 'assets/images/icons/check-solid-white.svg' ); ?>" class="ocdi-check-icon" alt="<?php esc_attr_e( 'Checkmark icon', 'one-click-demo-import' ); ?>">
70
+ <?php if ( ! empty( $plugin['required'] ) ) : ?>
71
+ <img src="<?php echo esc_url( OCDI_URL . 'assets/images/icons/lock.svg' ); ?>" class="ocdi-lock-icon" alt="<?php esc_attr_e( 'Lock icon', 'one-click-demo-import' ); ?>">
72
+ <?php endif; ?>
73
+ <img src="<?php echo esc_url( OCDI_URL . 'assets/images/loader.svg' ); ?>" class="ocdi-loading ocdi-loading-md" alt="<?php esc_attr_e( 'Loading...', 'one-click-demo-import' ); ?>">
74
+ </span>
75
+ </span>
76
+ </label>
77
+ <?php endforeach; ?>
78
+ <?php endif; ?>
79
+ </div>
80
+ <div class="ocdi-install-plugins-content-footer">
81
+ <a href="<?php echo esc_url( $this->get_plugin_settings_url() ); ?>" class="button"><img src="<?php echo esc_url( OCDI_URL . 'assets/images/icons/long-arrow-alt-left-blue.svg' ); ?>" alt="<?php esc_attr_e( 'Back icon', 'one-click-demo-import' ); ?>"><span><?php esc_html_e( 'Go Back' , 'one-click-demo-import' ); ?></span></a>
82
+ <a href="#" class="button button-primary js-ocdi-install-plugins-before-import"><?php esc_html_e( 'Continue & Import' , 'one-click-demo-import' ); ?></a>
83
+ </div>
84
+ </div>
85
+ <?php else : ?>
86
+ <div class="js-ocdi-auto-start-manual-import"></div>
87
+ <?php endif; ?>
88
+
89
+ <div class="ocdi-importing js-ocdi-importing">
90
+ <div class="ocdi-importing-header">
91
+ <h2><?php esc_html_e( 'Importing Content' , 'one-click-demo-import' ); ?></h2>
92
+ <p><?php esc_html_e( 'Please sit tight while we import your content. Do not refresh the page or hit the back button.' , 'one-click-demo-import' ); ?></p>
93
+ </div>
94
+ <div class="ocdi-importing-content">
95
+ <img class="ocdi-importing-content-importing" src="<?php echo esc_url( OCDI_URL . 'assets/images/importing.svg' ); ?>" alt="<?php esc_attr_e( 'Importing animation', 'one-click-demo-import' ); ?>">
96
+ </div>
97
+ </div>
98
+
99
+ <div class="ocdi-imported js-ocdi-imported">
100
+ <div class="ocdi-imported-header">
101
+ <h2 class="js-ocdi-ajax-response-title"><?php esc_html_e( 'Import Complete!' , 'one-click-demo-import' ); ?></h2>
102
+ <div class="js-ocdi-ajax-response-subtitle">
103
+ <p>
104
+ <?php esc_html_e( 'Congrats, your demo was imported successfully. You can now begin editing your site.' , 'one-click-demo-import' ); ?>
105
+ </p>
106
+ </div>
107
+ </div>
108
+ <div class="ocdi-imported-content">
109
+ <div class="ocdi__response js-ocdi-ajax-response"></div>
110
+ </div>
111
+ <div class="ocdi-imported-footer">
112
+ <a href="<?php echo esc_url( admin_url( 'customize.php' ) ); ?>" class="button button-primary button-hero"><?php esc_html_e( 'Theme Settings' , 'one-click-demo-import' ); ?></a>
113
+ <a href="<?php echo esc_url( get_home_url() ); ?>" class="button button-primary button-hero"><?php esc_html_e( 'Visit Site' , 'one-click-demo-import' ); ?></a>
114
+ </div>
115
+ </div>
116
+ </div>
117
+ <div class="ocdi__content-container-content--side">
118
+ <?php
119
+ $selected = isset( $_GET['import'] ) ? (int) $_GET['import'] : null;
120
+ echo wp_kses_post( ViewHelpers::small_theme_card( $selected ) );
121
+ ?>
122
+ </div>
123
+ </div>
124
+
125
+ </div>
126
+ </div>
views/install-plugins.php ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * The install plugins page view.
4
+ *
5
+ * @package ocdi
6
+ */
7
+
8
+ namespace OCDI;
9
+
10
+ $plugin_installer = new PluginInstaller();
11
+ ?>
12
+
13
+ <div class="ocdi ocdi--install-plugins">
14
+
15
+ <?php echo wp_kses_post( ViewHelpers::plugin_header_output() ); ?>
16
+
17
+ <div class="ocdi__content-container">
18
+
19
+ <div class="ocdi__admin-notices js-ocdi-admin-notices-container"></div>
20
+
21
+ <div class="ocdi__content-container-content">
22
+ <div class="ocdi__content-container-content--main">
23
+ <div class="ocdi-install-plugins-content">
24
+ <div class="ocdi-install-plugins-content-header">
25
+ <h2><?php esc_html_e( 'Install Recommended Plugins', 'one-click-demo-import' ); ?></h2>
26
+ <p>
27
+ <?php esc_html_e( 'Want to use the best plugins for the job? Here is the list of awesome plugins that will help you achieve your goals.', 'one-click-demo-import' ); ?>
28
+ </p>
29
+ </div>
30
+ <div class="ocdi-install-plugins-content-content">
31
+ <?php foreach ( $plugin_installer->get_partner_plugins() as $plugin ) : ?>
32
+ <?php $is_plugin_active = $plugin_installer->is_plugin_active( $plugin['slug'] ); ?>
33
+ <label class="plugin-item plugin-item-<?php echo esc_attr( $plugin['slug'] ); ?><?php echo $is_plugin_active ? ' plugin-item--active' : ''; ?>" for="ocdi-<?php echo esc_attr( $plugin['slug'] ); ?>-plugin">
34
+ <div class="plugin-item-content">
35
+ <div class="plugin-item-content-title">
36
+ <h3><?php echo esc_html( $plugin['name'] ); ?></h3>
37
+ </div>
38
+ <?php if ( ! empty( $plugin['description'] ) ) : ?>
39
+ <p>
40
+ <?php echo wp_kses_post( $plugin['description'] ); ?>
41
+ </p>
42
+ <?php endif; ?>
43
+ <div class="plugin-item-error js-ocdi-plugin-item-error"></div>
44
+ <div class="plugin-item-info js-ocdi-plugin-item-info"></div>
45
+ </div>
46
+ <span class="plugin-item-checkbox">
47
+ <input type="checkbox" id="ocdi-<?php echo esc_attr( $plugin['slug'] ); ?>-plugin" name="<?php echo esc_attr( $plugin['slug'] ); ?>" <?php checked( ! empty( $plugin['preselected'] ) || $is_plugin_active ); ?><?php disabled( $is_plugin_active ) ?>>
48
+ <span class="checkbox">
49
+ <img src="<?php echo esc_url( OCDI_URL . 'assets/images/icons/check-solid-white.svg' ); ?>" class="ocdi-check-icon" alt="<?php esc_attr_e( 'Checkmark icon', 'one-click-demo-import' ); ?>">
50
+ <img src="<?php echo esc_url( OCDI_URL . 'assets/images/loader.svg' ); ?>" class="ocdi-loading ocdi-loading-md" alt="<?php esc_attr_e( 'Loading...', 'one-click-demo-import' ); ?>">
51
+ </span>
52
+ </span>
53
+ </label>
54
+ <?php endforeach; ?>
55
+ </div>
56
+ <div class="ocdi-install-plugins-content-footer">
57
+ <a href="<?php echo esc_url( $this->get_plugin_settings_url() ); ?>" class="button"><img src="<?php echo esc_url( OCDI_URL . 'assets/images/icons/long-arrow-alt-left-blue.svg' ); ?>" alt="<?php esc_attr_e( 'Back icon', 'one-click-demo-import' ); ?>"><span><?php esc_html_e( 'Go Back' , 'one-click-demo-import' ); ?></span></a>
58
+ <a href="#" class="button button-primary js-ocdi-install-plugins"><?php esc_html_e( 'Install & Activate' , 'one-click-demo-import' ); ?></a>
59
+ </div>
60
+ </div>
61
+ </div>
62
+ <div class="ocdi__content-container-content--side">
63
+ <?php echo wp_kses_post( ViewHelpers::small_theme_card() ); ?>
64
+ </div>
65
+ </div>
66
+
67
+ </div>
68
+ </div>
views/plugin-page.php CHANGED
@@ -16,194 +16,350 @@ if ( ! empty( $this->import_files ) && isset( $_GET['import-mode'] ) && 'manual'
16
  /**
17
  * Hook for adding the custom plugin page header
18
  */
19
- do_action( 'pt-ocdi/plugin_page_header' );
20
  ?>
21
 
22
- <div class="ocdi wrap about-wrap">
23
-
24
- <?php ob_start(); ?>
25
- <h1 class="ocdi__title dashicons-before dashicons-upload"><?php esc_html_e( 'One Click Demo Import', 'pt-ocdi' ); ?></h1>
26
- <?php
27
- $plugin_title = ob_get_clean();
28
-
29
- // Display the plugin title (can be replaced with custom title text through the filter below).
30
- echo wp_kses_post( apply_filters( 'pt-ocdi/plugin_page_title', $plugin_title ) );
31
-
32
- // Display warrning if PHP safe mode is enabled, since we wont be able to change the max_execution_time.
33
- if ( ini_get( 'safe_mode' ) ) {
34
- printf(
35
- esc_html__( '%sWarning: your server is using %sPHP safe mode%s. This means that you might experience server timeout errors.%s', 'pt-ocdi' ),
36
- '<div class="notice notice-warning is-dismissible"><p>',
37
- '<strong>',
38
- '</strong>',
39
- '</p></div>'
40
- );
41
- }
42
-
43
- // Start output buffer for displaying the plugin intro text.
44
- ob_start();
45
- ?>
46
-
47
- <div class="ocdi__intro-notice notice notice-warning is-dismissible">
48
- <p><?php esc_html_e( 'Before you begin, make sure all the required plugins are activated.', 'pt-ocdi' ); ?></p>
49
- </div>
50
-
51
- <div class="ocdi__intro-text">
52
- <p class="about-description">
53
- <?php esc_html_e( 'Importing demo data (post, pages, images, theme settings, ...) is the easiest way to setup your theme.', 'pt-ocdi' ); ?>
54
- <?php esc_html_e( 'It will allow you to quickly edit everything instead of creating content from scratch.', 'pt-ocdi' ); ?>
55
- </p>
56
 
57
- <hr>
58
 
59
- <p><?php esc_html_e( 'When you import the data, the following things might happen:', 'pt-ocdi' ); ?></p>
60
 
61
- <ul>
62
- <li><?php esc_html_e( 'No existing posts, pages, categories, images, custom post types or any other data will be deleted or modified.', 'pt-ocdi' ); ?></li>
63
- <li><?php esc_html_e( 'Posts, pages, images, widgets, menus and other theme settings will get imported.', 'pt-ocdi' ); ?></li>
64
- <li><?php esc_html_e( 'Please click on the Import button only once and wait, it can take a couple of minutes.', 'pt-ocdi' ); ?></li>
65
- </ul>
66
-
67
- <?php if ( ! empty( $this->import_files ) ) : ?>
68
- <?php if ( empty( $_GET['import-mode'] ) || 'manual' !== $_GET['import-mode'] ) : ?>
69
- <a href="<?php echo esc_url( add_query_arg( array( 'page' => $this->plugin_page_setup['menu_slug'], 'import-mode' => 'manual' ), menu_page_url( $this->plugin_page_setup['parent_slug'], false ) ) ); ?>" class="ocdi__import-mode-switch"><?php esc_html_e( 'Switch to manual import!', 'pt-ocdi' ); ?></a>
70
- <?php else : ?>
71
- <a href="<?php echo esc_url( add_query_arg( array( 'page' => $this->plugin_page_setup['menu_slug'] ), menu_page_url( $this->plugin_page_setup['parent_slug'], false ) ) ); ?>" class="ocdi__import-mode-switch"><?php esc_html_e( 'Switch back to theme predefined imports!', 'pt-ocdi' ); ?></a>
72
- <?php endif; ?>
73
- <?php endif; ?>
74
-
75
- <hr>
76
- </div>
77
 
78
- <?php
79
- $plugin_intro_text = ob_get_clean();
80
 
81
- // Display the plugin intro text (can be replaced with custom text through the filter below).
82
- echo wp_kses_post( apply_filters( 'pt-ocdi/plugin_intro_text', $plugin_intro_text ) );
83
- ?>
 
84
 
85
- <?php if ( empty( $this->import_files ) ) : ?>
86
- <div class="notice notice-info is-dismissible">
87
- <p><?php esc_html_e( 'There are no predefined import files available in this theme. Please upload the import files manually!', 'pt-ocdi' ); ?></p>
 
 
 
88
  </div>
89
- <?php endif; ?>
90
 
91
- <?php if ( empty( $predefined_themes ) ) : ?>
 
92
 
93
- <div class="ocdi__file-upload-container">
94
- <h2><?php esc_html_e( 'Manual demo files upload', 'pt-ocdi' ); ?></h2>
 
95
 
96
- <div class="ocdi__file-upload">
97
- <h3><label for="content-file-upload"><?php esc_html_e( 'Choose a XML file for content import:', 'pt-ocdi' ); ?></label></h3>
98
- <input id="ocdi__content-file-upload" type="file" name="content-file-upload">
99
  </div>
 
100
 
101
- <div class="ocdi__file-upload">
102
- <h3><label for="widget-file-upload"><?php esc_html_e( 'Choose a WIE or JSON file for widget import:', 'pt-ocdi' ); ?></label></h3>
103
- <input id="ocdi__widget-file-upload" type="file" name="widget-file-upload">
104
- </div>
105
 
106
- <div class="ocdi__file-upload">
107
- <h3><label for="customizer-file-upload"><?php esc_html_e( 'Choose a DAT file for customizer import:', 'pt-ocdi' ); ?></label></h3>
108
- <input id="ocdi__customizer-file-upload" type="file" name="customizer-file-upload">
 
 
 
 
109
  </div>
110
 
111
- <?php if ( class_exists( 'ReduxFramework' ) ) : ?>
112
- <div class="ocdi__file-upload">
113
- <h3><label for="redux-file-upload"><?php esc_html_e( 'Choose a JSON file for Redux import:', 'pt-ocdi' ); ?></label></h3>
114
- <input id="ocdi__redux-file-upload" type="file" name="redux-file-upload">
115
- <div>
116
- <label for="redux-option-name" class="ocdi__redux-option-name-label"><?php esc_html_e( 'Enter the Redux option name:', 'pt-ocdi' ); ?></label>
117
- <input id="ocdi__redux-option-name" type="text" name="redux-option-name">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
118
  </div>
119
  </div>
120
- <?php endif; ?>
121
  </div>
122
 
123
- <p class="ocdi__button-container">
124
- <button class="ocdi__button button button-hero button-primary js-ocdi-import-data"><?php esc_html_e( 'Import Demo Data', 'pt-ocdi' ); ?></button>
125
- </p>
126
 
127
- <?php elseif ( 1 === count( $predefined_themes ) ) : ?>
 
 
 
128
 
129
- <div class="ocdi__demo-import-notice js-ocdi-demo-import-notice"><?php
130
- if ( is_array( $predefined_themes ) && ! empty( $predefined_themes[0]['import_notice'] ) ) {
131
- echo wp_kses_post( $predefined_themes[0]['import_notice'] );
132
- }
133
- ?></div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
134
 
135
- <p class="ocdi__button-container">
136
- <button class="ocdi__button button button-hero button-primary js-ocdi-import-data"><?php esc_html_e( 'Import Demo Data', 'pt-ocdi' ); ?></button>
137
- </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
138
 
139
- <?php else : ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
140
 
141
- <!-- OCDI grid layout -->
142
- <div class="ocdi__gl js-ocdi-gl">
143
- <?php
144
- // Prepare navigation data.
145
- $categories = Helpers::get_all_demo_import_categories( $predefined_themes );
146
- ?>
147
- <?php if ( ! empty( $categories ) ) : ?>
148
- <div class="ocdi__gl-header js-ocdi-gl-header">
149
- <nav class="ocdi__gl-navigation">
150
- <ul>
151
- <li class="active"><a href="#all" class="ocdi__gl-navigation-link js-ocdi-nav-link"><?php esc_html_e( 'All', 'pt-ocdi' ); ?></a></li>
152
- <?php foreach ( $categories as $key => $name ) : ?>
153
- <li><a href="#<?php echo esc_attr( $key ); ?>" class="ocdi__gl-navigation-link js-ocdi-nav-link"><?php echo esc_html( $name ); ?></a></li>
154
- <?php endforeach; ?>
155
- </ul>
156
- </nav>
157
- <div clas="ocdi__gl-search">
158
- <input type="search" class="ocdi__gl-search-input js-ocdi-gl-search" name="ocdi-gl-search" value="" placeholder="<?php esc_html_e( 'Search demos...', 'pt-ocdi' ); ?>">
 
 
 
159
  </div>
 
 
160
  </div>
161
- <?php endif; ?>
162
- <div class="ocdi__gl-item-container wp-clearfix js-ocdi-gl-item-container">
163
- <?php foreach ( $predefined_themes as $index => $import_file ) : ?>
164
- <?php
165
- // Prepare import item display data.
166
- $img_src = isset( $import_file['import_preview_image_url'] ) ? $import_file['import_preview_image_url'] : '';
167
- // Default to the theme screenshot, if a custom preview image is not defined.
168
- if ( empty( $img_src ) ) {
169
- $theme = wp_get_theme();
170
- $img_src = $theme->get_screenshot();
171
- }
172
-
173
- ?>
174
- <div class="ocdi__gl-item js-ocdi-gl-item" data-categories="<?php echo esc_attr( Helpers::get_demo_import_item_categories( $import_file ) ); ?>" data-name="<?php echo esc_attr( strtolower( $import_file['import_file_name'] ) ); ?>">
175
- <div class="ocdi__gl-item-image-container">
176
- <?php if ( ! empty( $img_src ) ) : ?>
177
- <img class="ocdi__gl-item-image" src="<?php echo esc_url( $img_src ) ?>">
178
- <?php else : ?>
179
- <div class="ocdi__gl-item-image ocdi__gl-item-image--no-image"><?php esc_html_e( 'No preview image.', 'pt-ocdi' ); ?></div>
180
- <?php endif; ?>
181
- </div>
182
- <div class="ocdi__gl-item-footer<?php echo ! empty( $import_file['preview_url'] ) ? ' ocdi__gl-item-footer--with-preview' : ''; ?>">
183
- <h4 class="ocdi__gl-item-title" title="<?php echo esc_attr( $import_file['import_file_name'] ); ?>"><?php echo esc_html( $import_file['import_file_name'] ); ?></h4>
184
- <button class="ocdi__gl-item-button button button-primary js-ocdi-gl-import-data" value="<?php echo esc_attr( $index ); ?>"><?php esc_html_e( 'Import', 'pt-ocdi' ); ?></button>
185
- <?php if ( ! empty( $import_file['preview_url'] ) ) : ?>
186
- <a class="ocdi__gl-item-button button" href="<?php echo esc_url( $import_file['preview_url'] ); ?>" target="_blank"><?php esc_html_e( 'Preview', 'pt-ocdi' ); ?></a>
187
- <?php endif; ?>
188
  </div>
189
  </div>
190
- <?php endforeach; ?>
191
- </div>
192
- </div>
193
-
194
- <div id="js-ocdi-modal-content"></div>
195
 
196
- <?php endif; ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
197
 
198
- <p class="ocdi__ajax-loader js-ocdi-ajax-loader">
199
- <span class="spinner"></span> <?php esc_html_e( 'Importing, please wait!', 'pt-ocdi' ); ?>
200
- </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
201
 
202
- <div class="ocdi__response js-ocdi-ajax-response"></div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
203
  </div>
204
 
205
  <?php
206
  /**
207
  * Hook for adding the custom admin page footer
208
  */
209
- do_action( 'pt-ocdi/plugin_page_footer' );
16
  /**
17
  * Hook for adding the custom plugin page header
18
  */
19
+ Helpers::do_action( 'ocdi/plugin_page_header' );
20
  ?>
21
 
22
+ <div class="ocdi">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
 
24
+ <?php echo wp_kses_post( ViewHelpers::plugin_header_output() ); ?>
25
 
26
+ <div class="ocdi__content-container">
27
 
28
+ <?php
29
+ // Display warrning if PHP safe mode is enabled, since we wont be able to change the max_execution_time.
30
+ if ( ini_get( 'safe_mode' ) ) {
31
+ printf( /* translators: %1$s - the opening div and paragraph HTML tags, %2$s and %3$s - strong HTML tags, %4$s - the closing div and paragraph HTML tags. */
32
+ esc_html__( '%1$sWarning: your server is using %2$sPHP safe mode%3$s. This means that you might experience server timeout errors.%4$s', 'one-click-demo-import' ),
33
+ '<div class="notice notice-warning is-dismissible"><p>',
34
+ '<strong>',
35
+ '</strong>',
36
+ '</p></div>'
37
+ );
38
+ }
39
+ ?>
 
 
 
 
40
 
41
+ <div class="ocdi__admin-notices js-ocdi-admin-notices-container"></div>
 
42
 
43
+ <?php
44
+ // Start output buffer for displaying the plugin intro text.
45
+ ob_start();
46
+ ?>
47
 
48
+ <div class="ocdi__intro-text">
49
+ <p class="about-description">
50
+ <?php esc_html_e( 'Importing demo data (post, pages, images, theme settings, etc.) is the quickest and easiest way to set up your new theme.', 'one-click-demo-import' ); ?>
51
+ <?php esc_html_e( 'It allows you to simply edit everything instead of creating content and layouts from scratch.', 'one-click-demo-import' ); ?>
52
+ <a href="https://ocdi.com/user-guide/" target="_blank" rel="noopener noreferrer"><?php esc_html_e( 'Learn more', 'one-click-demo-import' ); ?></a>.
53
+ </p>
54
  </div>
 
55
 
56
+ <?php
57
+ $plugin_intro_text = ob_get_clean();
58
 
59
+ // Display the plugin intro text (can be replaced with custom text through the filter below).
60
+ echo wp_kses_post( Helpers::apply_filters( 'ocdi/plugin_intro_text', $plugin_intro_text ) );
61
+ ?>
62
 
63
+ <?php if ( empty( $this->import_files ) ) : ?>
64
+ <div class="notice notice-info">
65
+ <p><?php esc_html_e( 'There are no predefined import files available for this theme. Please upload the import files manually below.', 'one-click-demo-import' ); ?></p>
66
  </div>
67
+ <?php endif; ?>
68
 
69
+ <?php $theme = wp_get_theme(); ?>
 
 
 
70
 
71
+ <div class="ocdi__theme-about">
72
+ <div class="ocdi__theme-about-screenshots">
73
+ <?php if ( $theme->get_screenshot() ) : ?>
74
+ <div class="screenshot"><img src="<?php echo esc_url( $theme->get_screenshot() ); ?>" alt="<?php esc_attr_e( 'Theme screenshot', 'one-click-demo-import' ); ?>" /></div>
75
+ <?php else : ?>
76
+ <div class="screenshot blank"></div>
77
+ <?php endif; ?>
78
  </div>
79
 
80
+ <div class="ocdi__theme-about-info">
81
+ <div class="top-content">
82
+ <div class="theme-title">
83
+ <h2 class="theme-name"><?php echo esc_html( $theme->name ); ?></h2>
84
+ <span class="theme-version">
85
+ <?php
86
+ /* translators: %s: Theme version. */
87
+ printf( __( 'Version: %s' ), esc_html( $theme->version ) );
88
+ ?>
89
+ </span>
90
+ </div>
91
+ <p class="theme-author">
92
+ <?php
93
+ /* translators: %s: Theme author link. */
94
+ printf( __( 'By %s' ), wp_kses_post( $theme->author ) );
95
+ ?>
96
+ </p>
97
+
98
+ <p class="theme-description"><?php echo wp_kses_post( $theme->description ); ?></p>
99
+
100
+ <?php if ( ! empty( $theme->tags ) ) : ?>
101
+ <hr>
102
+ <p class="theme-tags"><span><?php esc_html_e( 'Tags:' ); ?></span> <?php echo esc_html( implode( ', ', $theme->tags ) ); ?></p>
103
+ <?php endif; ?>
104
+ </div>
105
+ <div class="bottom-content">
106
+ <?php if ( ! empty( $this->import_files ) ) : ?>
107
+ <?php if ( empty( $_GET['import-mode'] ) || 'manual' !== $_GET['import-mode'] ) : ?>
108
+ <a href="<?php echo esc_url( $this->get_plugin_settings_url( array( 'import-mode' => 'manual' ) ) ); ?>" class="ocdi-import-mode-switch"><?php esc_html_e( 'Switch to Manual Import', 'one-click-demo-import' ); ?></a>
109
+ <?php else : ?>
110
+ <a href="<?php echo esc_url( $this->get_plugin_settings_url() ); ?>" class="ocdi-import-mode-switch"><?php esc_html_e( 'Switch back to Theme Predefined Imports', 'one-click-demo-import' ); ?></a>
111
+ <?php endif; ?>
112
+ <?php endif; ?>
113
  </div>
114
  </div>
 
115
  </div>
116
 
117
+ <?php if ( empty( $predefined_themes ) ) : ?>
 
 
118
 
119
+ <div class="ocdi__file-upload-container">
120
+ <div class="ocdi__file-upload-container--header">
121
+ <h2><?php esc_html_e( 'Manual Demo File Import', 'one-click-demo-import' ); ?></h2>
122
+ </div>
123
 
124
+ <div class="ocdi__file-upload-container-items">
125
+ <?php $first_row_class = class_exists( 'ReduxFramework' ) ? 'four' : 'three'; ?>
126
+ <div class="ocdi__file-upload ocdi__card ocdi__card--<?php echo esc_attr( $first_row_class ); ?>">
127
+ <div class="ocdi__card-content">
128
+ <label for="ocdi__content-file-upload">
129
+ <div class="ocdi-icon-container">
130
+ <img src="<?php echo esc_url( OCDI_URL . 'assets/images/icons/content.svg' ); ?>" class="ocdi-icon--content" alt="<?php esc_attr_e( 'Content import icon', 'one-click-demo-import' ); ?>">
131
+ </div>
132
+ <h3><?php esc_html_e( 'Import Content', 'one-click-demo-import' ); ?></h3>
133
+ <p><?php esc_html_e( 'Select an XML file to import.', 'one-click-demo-import' ); ?></p>
134
+ </label>
135
+ <a href="https://ocdi.com/user-guide/#import-content" target="_blank" rel="noopener noreferrer" class="ocdi__card-content-info">
136
+ <img src="<?php echo esc_url( OCDI_URL . 'assets/images/icons/info-circle.svg' ); ?>" alt="<?php esc_attr_e( 'Info icon', 'one-click-demo-import' ); ?>">
137
+ </a>
138
+ </div>
139
+ <div class="ocdi__card-footer">
140
+ <label for="ocdi__content-file-upload" class="button button-primary custom-file-upload-button">
141
+ <?php esc_html_e( 'Select a File', 'one-click-demo-import' ); ?>
142
+ </label>
143
+ <input id="ocdi__content-file-upload" type="file" class="ocdi-hide-input" name="content-file-upload">
144
+ </div>
145
+ </div>
146
 
147
+ <div class="ocdi__file-upload ocdi__card ocdi__card--<?php echo esc_attr( $first_row_class ); ?>">
148
+ <div class="ocdi__card-content">
149
+ <label for="ocdi__widget-file-upload">
150
+ <div class="ocdi-icon-container">
151
+ <img src="<?php echo esc_url( OCDI_URL . 'assets/images/icons/widgets.svg' ); ?>" class="ocdi-icon--widgets" alt="<?php esc_attr_e( 'Widgets import icon', 'one-click-demo-import' ); ?>">
152
+ </div>
153
+ <h3><?php esc_html_e( 'Import Widgets', 'one-click-demo-import' ); ?></h3>
154
+ <p><?php esc_html_e( 'Select a JSON/WIE file to import.', 'one-click-demo-import' ); ?></p>
155
+ </label>
156
+ <a href="https://ocdi.com/user-guide/#import-widgets" target="_blank" rel="noopener noreferrer" class="ocdi__card-content-info">
157
+ <img src="<?php echo esc_url( OCDI_URL . 'assets/images/icons/info-circle.svg' ); ?>" alt="<?php esc_attr_e( 'Info icon', 'one-click-demo-import' ); ?>">
158
+ </a>
159
+ </div>
160
+ <div class="ocdi__card-footer">
161
+ <label for="ocdi__widget-file-upload" class="button button-primary custom-file-upload-button">
162
+ <?php esc_html_e( 'Select a File', 'one-click-demo-import' ); ?>
163
+ </label>
164
+ <input id="ocdi__widget-file-upload" type="file" class="ocdi-hide-input" name="widget-file-upload">
165
+ </div>
166
+ </div>
167
 
168
+ <div class="ocdi__file-upload ocdi__card ocdi__card--<?php echo esc_attr( $first_row_class ); ?>">
169
+ <div class="ocdi__card-content">
170
+ <label for="ocdi__customizer-file-upload">
171
+ <div class="ocdi-icon-container">
172
+ <img src="<?php echo esc_url( OCDI_URL . 'assets/images/icons/brush.svg' ); ?>" class="ocdi-icon--brush" alt="<?php esc_attr_e( 'Customizer import icon', 'one-click-demo-import' ); ?>">
173
+ </div>
174
+ <h3><?php esc_html_e( 'Import Customizer', 'one-click-demo-import' ); ?></h3>
175
+ <p><?php esc_html_e( 'Select a DAT file to import.', 'one-click-demo-import' ); ?></p>
176
+ </label>
177
+ <a href="https://ocdi.com/user-guide/#import-customizer" target="_blank" rel="noopener noreferrer" class="ocdi__card-content-info">
178
+ <img src="<?php echo esc_url( OCDI_URL . 'assets/images/icons/info-circle.svg' ); ?>" alt="<?php esc_attr_e( 'Info icon', 'one-click-demo-import' ); ?>">
179
+ </a>
180
+ </div>
181
+ <div class="ocdi__card-footer">
182
+ <label for="ocdi__customizer-file-upload" class="button button-primary custom-file-upload-button">
183
+ <?php esc_html_e( 'Select a File', 'one-click-demo-import' ); ?>
184
+ </label>
185
+ <input id="ocdi__customizer-file-upload" type="file" class="ocdi-hide-input" name="customizer-file-upload">
186
+ </div>
187
+ </div>
188
 
189
+ <?php if ( class_exists( 'ReduxFramework' ) ) : ?>
190
+ <div class="ocdi__file-upload ocdi__card ocdi__card--<?php echo esc_attr( $first_row_class ); ?>">
191
+ <div class="ocdi__card-content">
192
+ <label for="ocdi__redux-file-upload">
193
+ <div class="ocdi-icon-container">
194
+ <img src="<?php echo esc_url( OCDI_URL . 'assets/images/icons/redux.svg' ); ?>" class="ocdi-icon--redux" alt="<?php esc_attr_e( 'Redux import icon', 'one-click-demo-import' ); ?>">
195
+ </div>
196
+ <h3><?php esc_html_e( 'Import Redux', 'one-click-demo-import' ); ?></h3>
197
+ <p><?php esc_html_e( 'Select a JSON file and enter Redux option name.', 'one-click-demo-import' ); ?></p>
198
+ </label>
199
+ <a href="https://ocdi.com/user-guide/#import-redux" target="_blank" rel="noopener noreferrer" class="ocdi__card-content-info">
200
+ <img src="<?php echo esc_url( OCDI_URL . 'assets/images/icons/info-circle.svg' ); ?>" alt="<?php esc_attr_e( 'Info icon', 'one-click-demo-import' ); ?>">
201
+ </a>
202
+ </div>
203
+ <div class="ocdi__card-footer">
204
+ <label for="ocdi__redux-file-upload" class="button button-primary custom-file-upload-button">
205
+ <?php esc_html_e( 'Select a File', 'one-click-demo-import' ); ?>
206
+ </label>
207
+ <input id="ocdi__redux-file-upload" type="file" class="ocdi-hide-input" name="redux-file-upload">
208
+ <input id="ocdi__redux-option-name" class="ocdi__redux-option-name-input" type="text" name="redux-option-name" placeholder="<?php esc_attr_e( 'Enter Option Name', 'one-click-demo-import' ); ?>">
209
+ </div>
210
  </div>
211
+ <?php endif; ?>
212
+
213
  </div>
214
+ <div class="ocdi__file-upload-container-items ocdi__file-upload-container-items--second-row">
215
+ <div class="ocdi__recommended-plugins ocdi__card ocdi__card--three">
216
+ <div class="ocdi__card-content">
217
+ <label>
218
+ <div class="ocdi-icon-container">
219
+ <img src="<?php echo esc_url( OCDI_URL . 'assets/images/icons/plugins.svg' ); ?>" class="ocdi-icon--plugins" alt="<?php esc_attr_e( 'Recommended plugins icon', 'one-click-demo-import' ); ?>">
220
+ </div>
221
+ <h3><?php esc_html_e( 'Recommended Plugins', 'one-click-demo-import' ); ?></h3>
222
+ <p><?php esc_html_e( 'Install our recommended plugins.', 'one-click-demo-import' ); ?></p>
223
+ </label>
224
+ <a href="https://ocdi.com/user-guide/#recommended-plugins" target="_blank" rel="noopener noreferrer" class="ocdi__card-content-info">
225
+ <img src="<?php echo esc_url( OCDI_URL . 'assets/images/icons/info-circle.svg' ); ?>" alt="<?php esc_attr_e( 'Info icon', 'one-click-demo-import' ); ?>">
226
+ </a>
227
+ </div>
228
+ <div class="ocdi__card-footer">
229
+ <a href="<?php echo esc_url( $this->get_plugin_settings_url( array( 'step' => 'install-plugins' ) ) ); ?>" class="button button-secondary"><?php esc_html_e( 'Install Plugins', 'one-click-demo-import' ); ?></a>
 
 
 
 
 
 
 
 
 
 
 
230
  </div>
231
  </div>
 
 
 
 
 
232
 
233
+ <div class="ocdi__create-demo-content ocdi__card ocdi__card--three">
234
+ <div class="ocdi__card-content">
235
+ <label>
236
+ <div class="ocdi-icon-container">
237
+ <img src="<?php echo esc_url( OCDI_URL . 'assets/images/icons/copy.svg' ); ?>" class="ocdi-icon--copy" alt="<?php esc_attr_e( 'Create demo content icon', 'one-click-demo-import' ); ?>">
238
+ </div>
239
+ <h3><?php esc_html_e( 'Create Demo Content', 'one-click-demo-import' ); ?></h3>
240
+ <p><?php esc_html_e( 'Create useful content with a few clicks.', 'one-click-demo-import' ); ?></p>
241
+ </label>
242
+ <a href="https://ocdi.com/user-guide/#create-demo-content" target="_blank" rel="noopener noreferrer" class="ocdi__card-content-info">
243
+ <img src="<?php echo esc_url( OCDI_URL . 'assets/images/icons/info-circle.svg' ); ?>" alt="<?php esc_attr_e( 'Info icon', 'one-click-demo-import' ); ?>">
244
+ </a>
245
+ </div>
246
+ <div class="ocdi__card-footer">
247
+ <a href="<?php echo esc_url( $this->get_plugin_settings_url( array( 'step' => 'create-content' ) ) ); ?>" class="button button-secondary"><?php esc_html_e( 'Create Content', 'one-click-demo-import' ); ?></a>
248
+ </div>
249
+ </div>
250
 
251
+ <div class="ocdi__create-landing-pages ocdi__card ocdi__card--three">
252
+ <div class="ocdi__card-content">
253
+ <label>
254
+ <div class="ocdi-icon-container">
255
+ <img src="<?php echo esc_url( OCDI_URL . 'assets/images/icons/layout.svg' ); ?>" class="ocdi-icon--layout" alt="<?php esc_attr_e( 'Create landing pages icon', 'one-click-demo-import' ); ?>">
256
+ </div>
257
+ <h3><?php esc_html_e( 'Create Landing Pages', 'one-click-demo-import' ); ?></h3>
258
+ <p><?php esc_html_e( 'Create beautiful converting pages.', 'one-click-demo-import' ); ?></p>
259
+ </label>
260
+ <a href="https://ocdi.com/user-guide/#create-landing-pages" target="_blank" rel="noopener noreferrer" class="ocdi__card-content-info">
261
+ <img src="<?php echo esc_url( OCDI_URL . 'assets/images/icons/info-circle.svg' ); ?>" alt="<?php esc_attr_e( 'Info icon', 'one-click-demo-import' ); ?>">
262
+ </a>
263
+ </div>
264
+ <div class="ocdi__card-footer">
265
+ <?php
266
+ $plugin_installer = new PluginInstaller();
267
+ $seedprod_active = $plugin_installer->is_plugin_active( 'coming-soon' );
268
+ ?>
269
+ <a href="#" class="button button-secondary js-ocdi-install-coming-soon-plugin<?php echo empty( $seedprod_active ) ? '' : ' button-disabled'; ?>">
270
+ <?php echo empty( $seedprod_active ) ? esc_html__( 'Install Plugin', 'one-click-demo-import' ) : esc_html__( 'Installed', 'one-click-demo-import' ); ?>
271
+ </a>
272
+ </div>
273
+ </div>
274
+ </div>
275
+ <div class="ocdi__file-upload-container--footer">
276
+ <button class="ocdi__button button button-hero js-ocdi-cancel-manual-import" disabled><?php esc_html_e( 'Cancel', 'one-click-demo-import' ); ?></button>
277
+ <button class="ocdi__button button button-hero button-primary js-ocdi-start-manual-import" disabled><?php esc_html_e( 'Continue & Import', 'one-click-demo-import' ); ?></button>
278
+ </div>
279
+ </div>
280
 
281
+ <?php elseif ( 1 === count( $predefined_themes ) ) : ?>
282
+
283
+ <div class="ocdi__demo-import-notice js-ocdi-demo-import-notice"><?php
284
+ if ( is_array( $predefined_themes ) && ! empty( $predefined_themes[0]['import_notice'] ) ) {
285
+ echo wp_kses_post( $predefined_themes[0]['import_notice'] );
286
+ }
287
+ ?></div>
288
+
289
+ <p class="ocdi__button-container">
290
+ <a href="<?php echo esc_url( $this->get_plugin_settings_url( [ 'step' => 'import', 'import' => 0 ] ) ); ?>" class="ocdi__button button button-hero button-primary"><?php esc_html_e( 'Import Demo Data', 'one-click-demo-import' ); ?></a>
291
+ </p>
292
+
293
+ <?php else : ?>
294
+
295
+ <!-- OCDI grid layout -->
296
+ <div class="ocdi__gl js-ocdi-gl">
297
+ <?php
298
+ // Prepare navigation data.
299
+ $categories = Helpers::get_all_demo_import_categories( $predefined_themes );
300
+ ?>
301
+ <?php if ( ! empty( $categories ) ) : ?>
302
+ <div class="ocdi__gl-header js-ocdi-gl-header">
303
+ <nav class="ocdi__gl-navigation">
304
+ <ul>
305
+ <li class="active"><a href="#all" class="ocdi__gl-navigation-link js-ocdi-nav-link"><span><?php esc_html_e( 'All Demos', 'one-click-demo-import' ); ?></span></a></li>
306
+ <?php foreach ( $categories as $key => $name ) : ?>
307
+ <li>
308
+ <a href="#<?php echo esc_attr( $key ); ?>" class="ocdi__gl-navigation-link js-ocdi-nav-link">
309
+ <span>
310
+ <?php echo esc_html( $name ); ?>
311
+ </span>
312
+ </a>
313
+ </li>
314
+ <?php endforeach; ?>
315
+ </ul>
316
+ </nav>
317
+ <div clas="ocdi__gl-search">
318
+ <input type="search" class="ocdi__gl-search-input js-ocdi-gl-search" name="ocdi-gl-search" value="" placeholder="<?php esc_html_e( 'Search Demos...', 'one-click-demo-import' ); ?>">
319
+ </div>
320
+ </div>
321
+ <?php else : ?>
322
+ <hr>
323
+ <?php endif; ?>
324
+ <div class="ocdi__gl-item-container js-ocdi-gl-item-container">
325
+ <?php foreach ( $predefined_themes as $index => $import_file ) : ?>
326
+ <?php
327
+ // Prepare import item display data.
328
+ $img_src = isset( $import_file['import_preview_image_url'] ) ? $import_file['import_preview_image_url'] : '';
329
+ // Default to the theme screenshot, if a custom preview image is not defined.
330
+ if ( empty( $img_src ) ) {
331
+ $theme = wp_get_theme();
332
+ $img_src = $theme->get_screenshot();
333
+ }
334
+
335
+ ?>
336
+ <div class="ocdi__gl-item js-ocdi-gl-item" data-categories="<?php echo esc_attr( Helpers::get_demo_import_item_categories( $import_file ) ); ?>" data-name="<?php echo esc_attr( strtolower( $import_file['import_file_name'] ) ); ?>">
337
+ <div class="ocdi__gl-item-image-container">
338
+ <?php if ( ! empty( $img_src ) ) : ?>
339
+ <img class="ocdi__gl-item-image" src="<?php echo esc_url( $img_src ) ?>">
340
+ <?php else : ?>
341
+ <div class="ocdi__gl-item-image ocdi__gl-item-image--no-image"><?php esc_html_e( 'No preview image.', 'one-click-demo-import' ); ?></div>
342
+ <?php endif; ?>
343
+ </div>
344
+ <div class="ocdi__gl-item-footer<?php echo ! empty( $import_file['preview_url'] ) ? ' ocdi__gl-item-footer--with-preview' : ''; ?>">
345
+ <h4 class="ocdi__gl-item-title" title="<?php echo esc_attr( $import_file['import_file_name'] ); ?>"><?php echo esc_html( $import_file['import_file_name'] ); ?></h4>
346
+ <span class="ocdi__gl-item-buttons">
347
+ <?php if ( ! empty( $import_file['preview_url'] ) ) : ?>
348
+ <a class="ocdi__gl-item-button button" href="<?php echo esc_url( $import_file['preview_url'] ); ?>" target="_blank"><?php esc_html_e( 'Preview Demo', 'one-click-demo-import' ); ?></a>
349
+ <?php endif; ?>
350
+ <a class="ocdi__gl-item-button button button-primary" href="<?php echo $this->get_plugin_settings_url( [ 'step' => 'import', 'import' => esc_attr( $index ) ] ); ?>"><?php esc_html_e( 'Import Demo', 'one-click-demo-import' ); ?></a>
351
+ </span>
352
+ </div>
353
+ </div>
354
+ <?php endforeach; ?>
355
+ </div>
356
+ </div>
357
+ <?php endif; ?>
358
+ </div>
359
  </div>
360
 
361
  <?php
362
  /**
363
  * Hook for adding the custom admin page footer
364
  */
365
+ Helpers::do_action( 'ocdi/plugin_page_footer' );