tango-app-api-trax 1.0.0-alpha-task.130

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/.eslintrc.cjs +41 -0
  2. package/README.md +29 -0
  3. package/fir-51e77-firebase-adminsdk-x3sdp-fd902b74ae.json +14 -0
  4. package/index.js +12 -0
  5. package/package.json +43 -0
  6. package/src/controllers/download.controller.js +544 -0
  7. package/src/controllers/gallery.controller.js +457 -0
  8. package/src/controllers/internalTrax.controller.js +989 -0
  9. package/src/controllers/locus.controller.js +214 -0
  10. package/src/controllers/mobileTrax.controller.js +2327 -0
  11. package/src/controllers/teaxFlag.controller.js +2699 -0
  12. package/src/controllers/trax.controller.js +2214 -0
  13. package/src/controllers/traxDashboard.controllers.js +3523 -0
  14. package/src/dtos/dashboardValidation.dtos.js +143 -0
  15. package/src/dtos/downloadValidation.dtos.js +44 -0
  16. package/src/dtos/validation.dtos.js +138 -0
  17. package/src/hbs/login-otp.hbs +944 -0
  18. package/src/routes/download.router.js +23 -0
  19. package/src/routes/gallery.routes.js +28 -0
  20. package/src/routes/internalTraxApi.router.js +19 -0
  21. package/src/routes/locus.router.js +16 -0
  22. package/src/routes/mobileTrax.routes.js +25 -0
  23. package/src/routes/trax.routes.js +24 -0
  24. package/src/routes/traxDashboard.routes.js +59 -0
  25. package/src/routes/traxFlag.router.js +74 -0
  26. package/src/services/app.service.js +10 -0
  27. package/src/services/approver.service.js +20 -0
  28. package/src/services/authentication.service.js +6 -0
  29. package/src/services/checklist.service.js +31 -0
  30. package/src/services/checklistAssign.service.js +31 -0
  31. package/src/services/checklistQuestion.service.js +31 -0
  32. package/src/services/checklistlog.service.js +35 -0
  33. package/src/services/clientRequest.service.js +5 -0
  34. package/src/services/clients.services.js +23 -0
  35. package/src/services/domain.service.js +28 -0
  36. package/src/services/download.services.js +38 -0
  37. package/src/services/group.service.js +22 -0
  38. package/src/services/lenskartEmployeeMapping.service.js +15 -0
  39. package/src/services/locus.service.js +34 -0
  40. package/src/services/otp.service.js +14 -0
  41. package/src/services/processedTaskConfig.service.js +32 -0
  42. package/src/services/processedTaskList.service.js +30 -0
  43. package/src/services/processedchecklist.services.js +36 -0
  44. package/src/services/processedchecklistconfig.services.js +35 -0
  45. package/src/services/store.service.js +31 -0
  46. package/src/services/tagging.service.js +5 -0
  47. package/src/services/ticket.service.js +15 -0
  48. package/src/services/user.service.js +25 -0
  49. package/src/services/userAssignedstores.service.js +10 -0
@@ -0,0 +1,944 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta charset="utf-8">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
7
+ <meta name="x-apple-disable-message-reformatting">
8
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
9
+ <title></title>
10
+ <style type="text/css">
11
+ .o_sans,
12
+ .o_heading {
13
+ font-family: Helvetica, Arial, sans-serif;
14
+ }
15
+
16
+ .o_heading {
17
+ font-weight: bold;
18
+ }
19
+
20
+ .o_sans,
21
+ .o_heading,
22
+ p,
23
+ li {
24
+ margin-top: 0px;
25
+ margin-bottom: 0px;
26
+ }
27
+
28
+ a {
29
+ text-decoration: none;
30
+ outline: none;
31
+ }
32
+
33
+ .o_underline {
34
+ text-decoration: underline;
35
+ }
36
+
37
+ .o_linethrough {
38
+ text-decoration: line-through;
39
+ }
40
+
41
+ .o_nowrap {
42
+ white-space: nowrap;
43
+ }
44
+
45
+ .o_caps {
46
+ text-transform: uppercase;
47
+ letter-spacing: 1px;
48
+ }
49
+
50
+ .o_nowrap {
51
+ white-space: nowrap;
52
+ }
53
+
54
+ .o_text-xxs {
55
+ font-size: 12px;
56
+ line-height: 19px;
57
+ }
58
+
59
+ .o_text-xs {
60
+ font-size: 14px;
61
+ line-height: 21px;
62
+ }
63
+
64
+ .o_text {
65
+ font-size: 16px;
66
+ line-height: 24px;
67
+ }
68
+
69
+ .o_text-md {
70
+ font-size: 19px;
71
+ line-height: 28px;
72
+ }
73
+
74
+ .o_text-lg {
75
+ font-size: 24px;
76
+ line-height: 30px;
77
+ }
78
+
79
+ h1.o_heading {
80
+ font-size: 36px;
81
+ line-height: 47px;
82
+ }
83
+
84
+ h2.o_heading {
85
+ font-size: 30px;
86
+ line-height: 39px;
87
+ }
88
+
89
+ h3.o_heading {
90
+ font-size: 24px;
91
+ line-height: 31px;
92
+ }
93
+
94
+ h4.o_heading {
95
+ font-size: 18px;
96
+ line-height: 23px;
97
+ }
98
+
99
+ body,
100
+ .e_body {
101
+ width: 100%;
102
+ margin: 0px;
103
+ padding: 0px;
104
+ -webkit-text-size-adjust: 100%;
105
+ -ms-text-size-adjust: 100%;
106
+ }
107
+
108
+ .o_re {
109
+ font-size: 0;
110
+ vertical-align: top;
111
+ }
112
+
113
+ .o_block {
114
+ max-width: 632px;
115
+ margin: 0 auto;
116
+ }
117
+
118
+ .o_block-lg {
119
+ max-width: 800px;
120
+ margin: 0 auto;
121
+ }
122
+
123
+ .o_block-xs {
124
+ max-width: 432px;
125
+ margin: 0 auto;
126
+ }
127
+
128
+ .o_col,
129
+ .o_col_i {
130
+ display: inline-block;
131
+ vertical-align: top;
132
+ }
133
+
134
+ .o_col {
135
+ width: 100%;
136
+ }
137
+
138
+ .o_col-1 {
139
+ max-width: 100px;
140
+ }
141
+
142
+ .o_col-o {
143
+ max-width: 132px;
144
+ }
145
+
146
+ .o_col-2 {
147
+ max-width: 200px;
148
+ }
149
+
150
+ .o_col-3 {
151
+ max-width: 300px;
152
+ }
153
+
154
+ .o_col-4 {
155
+ max-width: 400px;
156
+ }
157
+
158
+ .o_col-oo {
159
+ max-width: 468px;
160
+ }
161
+
162
+ .o_col-5 {
163
+ max-width: 500px;
164
+ }
165
+
166
+ .o_col-6s {
167
+ max-width: 584px;
168
+ }
169
+
170
+ .o_col-6 {
171
+ max-width: 600px;
172
+ }
173
+
174
+ img {
175
+ -ms-interpolation-mode: bicubic;
176
+ vertical-align: middle;
177
+ border: 0;
178
+ line-height: 100%;
179
+ height: auto;
180
+ outline: none;
181
+ text-decoration: none;
182
+ }
183
+
184
+ .o_img-full {
185
+ width: 100%;
186
+ }
187
+
188
+ .o_inline {
189
+ display: inline-block;
190
+ }
191
+
192
+ .o_btn {
193
+ mso-padding-alt: 12px 24px;
194
+ }
195
+
196
+ .o_btn a {
197
+ display: block;
198
+ padding: 12px 24px;
199
+ mso-text-raise: 3px;
200
+ }
201
+
202
+ .o_btn-o {
203
+ mso-padding-alt: 8px 20px;
204
+ }
205
+
206
+ .o_btn-o a {
207
+ display: block;
208
+ padding: 8px 20px;
209
+ mso-text-raise: 3px;
210
+ }
211
+
212
+ .o_btn-xs {
213
+ mso-padding-alt: 7px 16px;
214
+ }
215
+
216
+ .o_btn-xs a {
217
+ display: block;
218
+ padding: 7px 16px;
219
+ mso-text-raise: 3px;
220
+ }
221
+
222
+ .o_btn-b {
223
+ mso-padding-alt: 7px 8px;
224
+ }
225
+
226
+ .o_btn-b a {
227
+ display: block;
228
+ padding: 7px 8px;
229
+ font-weight: bold;
230
+ }
231
+
232
+ .o_btn-b span {
233
+ mso-text-raise: 6px;
234
+ display: inline;
235
+ }
236
+
237
+ .img_fix {
238
+ mso-text-raise: 6px;
239
+ display: inline;
240
+ }
241
+
242
+ .o_bg-light {
243
+ background-color: #dbe5ea;
244
+ }
245
+
246
+ .o_bg-ultra_light {
247
+ background-color: #ebf5fa;
248
+ }
249
+
250
+ .o_bg-white {
251
+ background-color: #ffffff;
252
+ }
253
+
254
+ .o_bg-dark {
255
+ background-color: #242b3d;
256
+ }
257
+
258
+ .o_bg-primary {
259
+ background-color: #126de5;
260
+ }
261
+
262
+ .o_bg-secondary {
263
+ background-color: #424651;
264
+ }
265
+
266
+ .o_bg-success {
267
+ background-color: #0ec06e;
268
+ }
269
+
270
+ .o_text-primary,
271
+ a.o_text-primary span,
272
+ a.o_text-primary strong,
273
+ .o_text-primary.o_link a {
274
+ color: #126de5;
275
+ }
276
+
277
+ .o_text-secondary,
278
+ a.o_text-secondary span,
279
+ a.o_text-secondary strong,
280
+ .o_text-secondary.o_link a {
281
+ color: #424651;
282
+ }
283
+
284
+ .o_text-dark,
285
+ a.o_text-dark span,
286
+ a.o_text-dark strong,
287
+ .o_text-dark.o_link a {
288
+ color: #242b3d;
289
+ }
290
+
291
+ .o_text-dark_light,
292
+ a.o_text-dark_light span,
293
+ a.o_text-dark_light strong,
294
+ .o_text-dark_light.o_link a {
295
+ color: #a0a3ab;
296
+ }
297
+
298
+ .o_text-white,
299
+ a.o_text-white span,
300
+ a.o_text-white strong,
301
+ .o_text-white.o_link a {
302
+ color: #ffffff;
303
+ }
304
+
305
+ .o_text-light,
306
+ a.o_text-light span,
307
+ a.o_text-light strong,
308
+ .o_text-light.o_link a {
309
+ color: #82899a;
310
+ }
311
+
312
+ .o_text-success,
313
+ a.o_text-success span,
314
+ a.o_text-success strong,
315
+ .o_text-success.o_link a {
316
+ color: #0ec06e;
317
+ }
318
+
319
+ .o_b-primary {
320
+ border: 2px solid #126de5;
321
+ }
322
+
323
+ .o_bb-primary {
324
+ border-bottom: 1px solid #126de5;
325
+ }
326
+
327
+ .o_b-secondary {
328
+ border: 2px solid #424651;
329
+ }
330
+
331
+ .o_bx-secondary {
332
+ border: 1px solid #424651;
333
+ }
334
+
335
+ .o_bb-secondary {
336
+ border-bottom: 1px solid #424651;
337
+ }
338
+
339
+ .o_b-dark {
340
+ border: 2px solid #242b3d;
341
+ }
342
+
343
+ .o_b-light {
344
+ border: 1px solid #d3dce0;
345
+ }
346
+
347
+ .o_bb-light {
348
+ border-bottom: 1px solid #d3dce0;
349
+ }
350
+
351
+ .o_bt-light {
352
+ border-top: 1px solid #d3dce0;
353
+ }
354
+
355
+ .o_br-light {
356
+ border-right: 4px solid #d3dce0;
357
+ }
358
+
359
+ .o_bb-ultra_light {
360
+ border-bottom: 1px solid #b6c0c7;
361
+ }
362
+
363
+ .o_bb-dark_light {
364
+ border-bottom: 1px solid #4a5267;
365
+ }
366
+
367
+ .o_bt-dark_light {
368
+ border-top: 1px solid #4a5267;
369
+ }
370
+
371
+ .o_b-white {
372
+ border: 2px solid #ffffff;
373
+ }
374
+
375
+ .o_bb-white {
376
+ border-bottom: 1px solid #ffffff;
377
+ }
378
+
379
+ .o_br {
380
+ border-radius: 4px;
381
+ }
382
+
383
+ .o_br-t {
384
+ border-radius: 4px 4px 0px 0px;
385
+ }
386
+
387
+ .o_br-b {
388
+ border-radius: 0px 0px 4px 4px;
389
+ }
390
+
391
+ .o_br-l {
392
+ border-radius: 4px 0px 0px 4px;
393
+ }
394
+
395
+ .o_br-r {
396
+ border-radius: 0px 4px 4px 0px;
397
+ }
398
+
399
+ .o_br-max {
400
+ border-radius: 96px;
401
+ }
402
+
403
+ .o_hide,
404
+ .o_hide-lg {
405
+ display: none;
406
+ font-size: 0;
407
+ max-height: 0;
408
+ width: 0;
409
+ line-height: 0;
410
+ overflow: hidden;
411
+ mso-hide: all;
412
+ visibility: hidden;
413
+ }
414
+
415
+ .o_center {
416
+ text-align: center;
417
+ }
418
+
419
+ table.o_center {
420
+ margin-left: auto;
421
+ margin-right: auto;
422
+ }
423
+
424
+ .o_left {
425
+ text-align: left;
426
+ }
427
+
428
+ table.o_left {
429
+ margin-left: 0;
430
+ margin-right: auto;
431
+ }
432
+
433
+ .o_right {
434
+ text-align: right;
435
+ }
436
+
437
+ table.o_right {
438
+ margin-left: auto;
439
+ margin-right: 0;
440
+ }
441
+
442
+ .o_px {
443
+ padding-left: 16px;
444
+ padding-right: 16px;
445
+ }
446
+
447
+ .o_px-xs {
448
+ padding-left: 8px;
449
+ padding-right: 8px;
450
+ }
451
+
452
+ .o_px-md {
453
+ padding-left: 24px;
454
+ padding-right: 24px;
455
+ }
456
+
457
+ .o_px-lg {
458
+ padding-left: 32px;
459
+ padding-right: 32px;
460
+ }
461
+
462
+ .o_py {
463
+ padding-top: 16px;
464
+ padding-bottom: 16px;
465
+ }
466
+
467
+ .o_py-xs {
468
+ padding-top: 8px;
469
+ padding-bottom: 8px;
470
+ }
471
+
472
+ .o_py-md {
473
+ padding-top: 24px;
474
+ padding-bottom: 24px;
475
+ }
476
+
477
+ .o_py-lg {
478
+ padding-top: 32px;
479
+ padding-bottom: 32px;
480
+ }
481
+
482
+ .o_py-xl {
483
+ padding-top: 64px;
484
+ padding-bottom: 64px;
485
+ }
486
+
487
+ .o_pt-xs {
488
+ padding-top: 8px;
489
+ }
490
+
491
+ .o_pt {
492
+ padding-top: 16px;
493
+ }
494
+
495
+ .o_pt-md {
496
+ padding-top: 24px;
497
+ }
498
+
499
+ .o_pt-lg {
500
+ padding-top: 32px;
501
+ }
502
+
503
+ .o_pb-xs {
504
+ padding-bottom: 8px;
505
+ }
506
+
507
+ .o_pb {
508
+ padding-bottom: 16px;
509
+ }
510
+
511
+ .o_pb-md {
512
+ padding-bottom: 24px;
513
+ }
514
+
515
+ .o_pb-lg {
516
+ padding-bottom: 32px;
517
+ }
518
+
519
+ .o_p-icon {
520
+ padding: 12px;
521
+ }
522
+
523
+ .o_body .o_mb-xxs {
524
+ margin-bottom: 4px;
525
+ }
526
+
527
+ .o_body .o_mb-xs {
528
+ margin-bottom: 8px;
529
+ }
530
+
531
+ .o_body .o_mb {
532
+ margin-bottom: 16px;
533
+ }
534
+
535
+ .o_body .o_mb-md {
536
+ margin-bottom: 24px;
537
+ }
538
+
539
+ .o_body .o_mb-lg {
540
+ margin-bottom: 32px;
541
+ }
542
+
543
+ .o_body .o_mt {
544
+ margin-top: 16px;
545
+ }
546
+
547
+ .o_body .o_mt-md {
548
+ margin-top: 24px;
549
+ }
550
+
551
+ .o_bg-center {
552
+ background-position: 50% 0;
553
+ background-repeat: no-repeat;
554
+ }
555
+
556
+ .o_bg-left {
557
+ background-position: 0 0;
558
+ background-repeat: no-repeat;
559
+ }
560
+
561
+ @media (max-width: 649px) {
562
+ .o_col-full {
563
+ max-width: 100% !important;
564
+ }
565
+
566
+ .o_col-half {
567
+ max-width: 50% !important;
568
+ }
569
+
570
+ .o_hide-lg {
571
+ display: inline-block !important;
572
+ font-size: inherit !important;
573
+ max-height: none !important;
574
+ line-height: inherit !important;
575
+ overflow: visible !important;
576
+ width: auto !important;
577
+ visibility: visible !important;
578
+ }
579
+
580
+ .o_hide-xs,
581
+ .o_hide-xs.o_col_i {
582
+ display: none !important;
583
+ font-size: 0 !important;
584
+ max-height: 0 !important;
585
+ width: 0 !important;
586
+ line-height: 0 !important;
587
+ overflow: hidden !important;
588
+ visibility: hidden !important;
589
+ height: 0 !important;
590
+ }
591
+
592
+ .o_xs-center {
593
+ text-align: center !important;
594
+ }
595
+
596
+ .o_xs-left {
597
+ text-align: left !important;
598
+ }
599
+
600
+ .o_xs-right {
601
+ text-align: left !important;
602
+ }
603
+
604
+ table.o_xs-left {
605
+ margin-left: 0 !important;
606
+ margin-right: auto !important;
607
+ float: none !important;
608
+ }
609
+
610
+ table.o_xs-right {
611
+ margin-left: auto !important;
612
+ margin-right: 0 !important;
613
+ float: none !important;
614
+ }
615
+
616
+ table.o_xs-center {
617
+ margin-left: auto !important;
618
+ margin-right: auto !important;
619
+ float: none !important;
620
+ }
621
+
622
+ h1.o_heading {
623
+ font-size: 32px !important;
624
+ line-height: 41px !important;
625
+ }
626
+
627
+ h2.o_heading {
628
+ font-size: 26px !important;
629
+ line-height: 37px !important;
630
+ }
631
+
632
+ h3.o_heading {
633
+ font-size: 20px !important;
634
+ line-height: 30px !important;
635
+ }
636
+
637
+ .o_xs-py-md {
638
+ padding-top: 24px !important;
639
+ padding-bottom: 24px !important;
640
+ }
641
+
642
+ .o_xs-pt-xs {
643
+ padding-top: 8px !important;
644
+ }
645
+
646
+ .o_xs-pb-xs {
647
+ padding-bottom: 8px !important;
648
+ }
649
+ }
650
+
651
+ @media screen {
652
+ @font-face {
653
+ font-family: 'Roboto';
654
+ font-style: normal;
655
+ font-weight: 400;
656
+ src: local("Roboto"), local("Roboto-Regular"), url(https://fonts.gstatic.com/s/roboto/v18/KFOmCnqEu92Fr1Mu7GxKOzY.woff2) format("woff2");
657
+ unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
658
+ }
659
+
660
+ @font-face {
661
+ font-family: 'Roboto';
662
+ font-style: normal;
663
+ font-weight: 400;
664
+ src: local("Roboto"), local("Roboto-Regular"), url(https://fonts.gstatic.com/s/roboto/v18/KFOmCnqEu92Fr1Mu4mxK.woff2) format("woff2");
665
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
666
+ }
667
+
668
+ @font-face {
669
+ font-family: 'Roboto';
670
+ font-style: normal;
671
+ font-weight: 700;
672
+ src: local("Roboto Bold"), local("Roboto-Bold"), url(https://fonts.gstatic.com/s/roboto/v18/KFOlCnqEu92Fr1MmWUlfChc4EsA.woff2) format("woff2");
673
+ unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
674
+ }
675
+
676
+ @font-face {
677
+ font-family: 'Roboto';
678
+ font-style: normal;
679
+ font-weight: 700;
680
+ src: local("Roboto Bold"), local("Roboto-Bold"), url(https://fonts.gstatic.com/s/roboto/v18/KFOlCnqEu92Fr1MmWUlfBBc4.woff2) format("woff2");
681
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
682
+ }
683
+
684
+ .o_sans,
685
+ .o_heading {
686
+ font-family: "Roboto", sans-serif !important;
687
+ }
688
+
689
+ .o_heading,
690
+ strong,
691
+ b {
692
+ font-weight: 700 !important;
693
+ }
694
+
695
+ a[x-apple-data-detectors] {
696
+ color: inherit !important;
697
+ text-decoration: none !important;
698
+ }
699
+ }
700
+
701
+ .js .o_hide,
702
+ .js .o_hide-lg {
703
+ font-size: inherit !important;
704
+ max-height: none !important;
705
+ width: auto !important;
706
+ line-height: inherit !important;
707
+ visibility: visible !important;
708
+ }
709
+
710
+ .js td.o_hide {
711
+ display: block !important;
712
+ font-family: "Roboto", sans-serif;
713
+ font-size: 16px !important;
714
+ color: #000;
715
+ }
716
+
717
+ .js span.o_hide-lg {
718
+ display: inline-block !important;
719
+ }
720
+ </style>
721
+ <!--[if mso]>
722
+ <style>
723
+ table { border-collapse: collapse; }
724
+ .o_col { float: left; }
725
+ </style>
726
+ <xml>
727
+ <o:OfficeDocumentSettings>
728
+ <o:PixelsPerInch>96</o:PixelsPerInch>
729
+ </o:OfficeDocumentSettings>
730
+ </xml>
731
+ <![endif]-->
732
+ </head>
733
+
734
+ <body class="o_body o_bg-light">
735
+ <table width="100%" cellspacing="0" cellpadding="0" border="0" role="presentation">
736
+ <tbody>
737
+ <tr>
738
+ <td class="o_hide" align="center">
739
+ <singleline label="Preview Text">Email Summary (Hidden)</singleline>
740
+ </td>
741
+ </tr>
742
+ </tbody>
743
+ </table>
744
+ <table width="100%" cellspacing="0" cellpadding="0" border="0" role="presentation">
745
+ <tbody>
746
+ <tr>
747
+ <td class="o_bg-light o_px-xs o_pt-lg o_xs-pt-xs" align="center">
748
+ <!--[if mso]><table width="632" cellspacing="0" cellpadding="0" border="0" role="presentation"><tbody><tr><td><![endif]-->
749
+ <table class="o_block" width="100%" cellspacing="0" cellpadding="0" border="0" role="presentation">
750
+ <tbody>
751
+ <tr>
752
+ <td class="o_bg-white o_px o_py-md o_br-t o_sans o_text" align="left">
753
+ <p class="o_text-white o_link"><img editable src="{{domain}}/logo.png" width="136"
754
+ height="36" alt="SimpleApp" style="max-width: 136px;"></p>
755
+ </td>
756
+ </tr>
757
+ </tbody>
758
+ </table>
759
+ <!--[if mso]></td></tr></table><![endif]-->
760
+ </td>
761
+ </tr>
762
+ </tbody>
763
+ </table>
764
+ <table width="100%" cellspacing="0" cellpadding="0" border="0" role="presentation">
765
+ <tbody>
766
+ <tr>
767
+ <td class="o_bg-light o_px-xs" align="center">
768
+ <!--[if mso]><table width="632" cellspacing="0" cellpadding="0" border="0" role="presentation"><tbody><tr><td><![endif]-->
769
+ <table class="o_block" width="100%" cellspacing="0" cellpadding="0" border="0" role="presentation">
770
+ <tbody>
771
+ <tr>
772
+ <td class="o_bg-ultra_light o_px-md o_py-xl o_xs-py-md o_sans o_text-md o_text-light"
773
+ align="center">
774
+ <h2 class="o_heading o_text-dark o_mb-xxs">
775
+ <singleline label="Title">Hi, {{name}}</singleline>
776
+ </h2>
777
+ <multiline label="Content">
778
+ <p>Please use the below code to complete your login</p>
779
+ </multiline>
780
+ </td>
781
+ </tr>
782
+ </tbody>
783
+ </table>
784
+ <!--[if mso]></td></tr></table><![endif]-->
785
+ </td>
786
+ </tr>
787
+ </tbody>
788
+ </table>
789
+ <table width="100%" cellspacing="0" cellpadding="0" border="0" role="presentation">
790
+ <tbody>
791
+ <tr>
792
+ <td class="o_bg-light o_px-xs" align="center">
793
+ <!--[if mso]><table width="632" cellspacing="0" cellpadding="0" border="0" role="presentation"><tbody><tr><td><![endif]-->
794
+ <table class="o_block" width="100%" cellspacing="0" cellpadding="0" border="0" role="presentation">
795
+ <tbody>
796
+ <tr>
797
+ <td class="o_bg-white" style="font-size: 24px; line-height: 24px; height: 24px;">&nbsp;
798
+ <singleline label="Blank">&nbsp; </singleline>
799
+ </td>
800
+ </tr>
801
+ </tbody>
802
+ </table>
803
+ <!--[if mso]></td></tr></table><![endif]-->
804
+ </td>
805
+ </tr>
806
+ </tbody>
807
+ </table>
808
+ <repeater>
809
+ <layout label="label-xs">
810
+ <table width="100%" cellspacing="0" cellpadding="0" border="0" role="presentation">
811
+ <tbody>
812
+ <tr>
813
+ <td class="o_bg-light o_px-xs" align="center">
814
+ <!--[if mso]><table width="632" cellspacing="0" cellpadding="0" border="0" role="presentation"><tbody><tr><td><![endif]-->
815
+ <table class="o_block" width="100%" cellspacing="0" cellpadding="0" border="0"
816
+ role="presentation">
817
+ <tbody>
818
+ <tr>
819
+ <td class="o_bg-white o_px-md o_py o_sans o_text-xs o_text-light"
820
+ align="center">
821
+ <p class="o_mb"><strong>
822
+ <singleline label="Label">Here's your one time validation code.
823
+ </singleline>
824
+ </strong></p>
825
+ <table role="presentation" cellspacing="0" cellpadding="0" border="0">
826
+ <tbody>
827
+ <tr>
828
+ <td width="284"
829
+ class="o_bg-ultra_light o_br o_text-xs o_sans o_px-xs o_py"
830
+ align="center">
831
+ <p style="font-size: 30px;" class="o_text-dark"><strong>
832
+ <singleline label="Content">{{otp}}</singleline>
833
+ </strong></p>
834
+ </td>
835
+ </tr>
836
+ </tbody>
837
+ </table>
838
+ </td>
839
+ </tr>
840
+ </tbody>
841
+ </table>
842
+ <!--[if mso]></td></tr></table><![endif]-->
843
+ </td>
844
+ </tr>
845
+ </tbody>
846
+ </table>
847
+ </layout>
848
+ <layout label="spacer">
849
+ <table width="100%" cellspacing="0" cellpadding="0" border="0" role="presentation">
850
+ <tbody>
851
+ <tr>
852
+ <td class="o_bg-light o_px-xs" align="center">
853
+ <!--[if mso]><table width="632" cellspacing="0" cellpadding="0" border="0" role="presentation"><tbody><tr><td><![endif]-->
854
+ <table class="o_block" width="100%" cellspacing="0" cellpadding="0" border="0"
855
+ role="presentation">
856
+ <tbody>
857
+ <tr>
858
+ <td class="o_bg-white"
859
+ style="font-size: 24px; line-height: 24px; height: 24px;">&nbsp; <singleline
860
+ label="Blank">&nbsp; </singleline>
861
+ </td>
862
+ </tr>
863
+ </tbody>
864
+ </table>
865
+ <!--[if mso]></td></tr></table><![endif]-->
866
+ </td>
867
+ </tr>
868
+ </tbody>
869
+ </table>
870
+ </layout>
871
+ <layout label="content">
872
+ <table width="100%" cellspacing="0" cellpadding="0" border="0" role="presentation">
873
+ <tbody>
874
+ <tr>
875
+ <td class="o_bg-light o_px-xs" align="center">
876
+ <!--[if mso]><table width="632" cellspacing="0" cellpadding="0" border="0" role="presentation"><tbody><tr><td><![endif]-->
877
+ <table class="o_block" width="100%" cellspacing="0" cellpadding="0" border="0"
878
+ role="presentation">
879
+ <tbody>
880
+ <tr>
881
+ <td class="o_bg-white o_px-md o_py o_sans o_text o_text-secondary"
882
+ align="center">
883
+ <multiline label="Content">
884
+ <p>Please do not share the OTP with anyone.</p>
885
+ </multiline>
886
+ </td>
887
+ </tr>
888
+ </tbody>
889
+ </table>
890
+ <!--[if mso]></td></tr></table><![endif]-->
891
+ </td>
892
+ </tr>
893
+ </tbody>
894
+ </table>
895
+ </layout>
896
+ </repeater>
897
+ <table width="100%" cellspacing="0" cellpadding="0" border="0" role="presentation">
898
+ <tbody>
899
+ <tr>
900
+ <td class="o_bg-light o_px-xs" align="center">
901
+ <!--[if mso]><table width="632" cellspacing="0" cellpadding="0" border="0" role="presentation"><tbody><tr><td><![endif]-->
902
+ <table class="o_block" width="100%" cellspacing="0" cellpadding="0" border="0" role="presentation">
903
+ <tbody>
904
+ <tr>
905
+ <td class="o_bg-white" style="font-size: 48px; line-height: 48px; height: 48px;">&nbsp;
906
+ <singleline label="Blank">&nbsp; </singleline>
907
+ </td>
908
+ </tr>
909
+ </tbody>
910
+ </table>
911
+ <!--[if mso]></td></tr></table><![endif]-->
912
+ </td>
913
+ </tr>
914
+ </tbody>
915
+ </table>
916
+ <table width="100%" cellspacing="0" cellpadding="0" border="0" role="presentation">
917
+ <tbody>
918
+ <tr>
919
+ <td class="o_bg-light o_px-xs o_pb-lg o_xs-pb-xs" align="center">
920
+ <!--[if mso]><table width="632" cellspacing="0" cellpadding="0" border="0" role="presentation"><tbody><tr><td><![endif]-->
921
+ <table class="o_block" width="100%" cellspacing="0" cellpadding="0" border="0" role="presentation">
922
+ <tbody>
923
+ <tr>
924
+ <td class="o_bg-white o_px-md o_py-lg o_bt-light o_br-b o_sans o_text-xs o_text-light"
925
+ align="center">
926
+ <multiline label="Content">
927
+ <p class="o_mb">©<currentyear> Tango Eye. All rights reserved.</p>
928
+ </multiline>
929
+ </td>
930
+ </tr>
931
+ </tbody>
932
+ </table>
933
+ <!--[if mso]></td></tr></table><![endif]-->
934
+ <div class="o_hide-xs" style="font-size: 64px; line-height: 64px; height: 64px;">&nbsp; </div>
935
+ </td>
936
+ </tr>
937
+ </tbody>
938
+ </table>
939
+ <div class="o_hide">
940
+ <unsubscribe>Unsubscribe</unsubscribe>
941
+ </div>
942
+ </body>
943
+
944
+ </html>