{"id":2649,"date":"2019-08-26T15:49:44","date_gmt":"2019-08-26T15:49:44","guid":{"rendered":"https:\/\/learnbrite.com\/academy\/chatmapper-cookbook\/"},"modified":"2022-01-14T12:50:29","modified_gmt":"2022-01-14T12:50:29","slug":"chatmapper-cookbook","status":"publish","type":"page","link":"https:\/\/hyperspace.mv\/academy\/chatmapper-cookbook\/","title":{"rendered":"ChatMapper Cookbook"},"content":{"rendered":"<html><head><meta content=\"text\/html; charset=UTF-8\" http-equiv=\"content-type\"><style type=\"text\/css\">@import url('https:\/\/themes.googleusercontent.com\/fonts\/css?kit=cGvuclDC_Z1vE_cnVEU6Ae_NZQ7StBcqH_vXVqoPMX0');ul.lst-kix_kkrhwvcem69f-0{list-style-type:none}ul.lst-kix_kkrhwvcem69f-1{list-style-type:none}ul.lst-kix_kkrhwvcem69f-2{list-style-type:none}ul.lst-kix_kkrhwvcem69f-3{list-style-type:none}.lst-kix_ohab9vf72sam-4>li{counter-increment:lst-ctn-kix_ohab9vf72sam-4}ul.lst-kix_kkrhwvcem69f-4{list-style-type:none}ul.lst-kix_kkrhwvcem69f-5{list-style-type:none}ul.lst-kix_kkrhwvcem69f-6{list-style-type:none}ul.lst-kix_kkrhwvcem69f-7{list-style-type:none}ul.lst-kix_kkrhwvcem69f-8{list-style-type:none}ol.lst-kix_ohab9vf72sam-1.start{counter-reset:lst-ctn-kix_ohab9vf72sam-1 0}.lst-kix_epwdw4jvok0v-2>li{counter-increment:lst-ctn-kix_epwdw4jvok0v-2}.lst-kix_kemf987rc70g-4>li{counter-increment:lst-ctn-kix_kemf987rc70g-4}ol.lst-kix_6ma6f2xy3e3g-1.start{counter-reset:lst-ctn-kix_6ma6f2xy3e3g-1 0}.lst-kix_7723domhz6s-3>li{counter-increment:lst-ctn-kix_7723domhz6s-3}.lst-kix_1d4tfyrm45z-0>li:before{content:\"\" counter(lst-ctn-kix_1d4tfyrm45z-0,decimal) \". \"}.lst-kix_1d4tfyrm45z-2>li:before{content:\"\\0025a0  \"}.lst-kix_1d4tfyrm45z-1>li:before{content:\"\\0025cb  \"}.lst-kix_1d4tfyrm45z-4>li:before{content:\"\\0025cb  \"}.lst-kix_1d4tfyrm45z-6>li:before{content:\"\\0025cf  \"}.lst-kix_1d4tfyrm45z-7>li:before{content:\"\\0025cb  \"}.lst-kix_1d4tfyrm45z-3>li:before{content:\"\\0025cf  \"}.lst-kix_1d4tfyrm45z-5>li:before{content:\"\\0025a0  \"}.lst-kix_3ijtgab9c43t-0>li{counter-increment:lst-ctn-kix_3ijtgab9c43t-0}.lst-kix_vncqob20gy09-1>li:before{content:\"\\0025cb  \"}.lst-kix_vncqob20gy09-3>li:before{content:\"\\0025cf  \"}.lst-kix_8dfnd83tlbfx-0>li:before{content:\"\\0025cf  \"}ol.lst-kix_kemf987rc70g-4.start{counter-reset:lst-ctn-kix_kemf987rc70g-4 0}.lst-kix_n9ratbukspsc-8>li:before{content:\"\\0025a0  \"}.lst-kix_8dfnd83tlbfx-2>li:before{content:\"\\0025a0  \"}.lst-kix_8dfnd83tlbfx-4>li:before{content:\"\\0025cb  \"}.lst-kix_8dfnd83tlbfx-6>li:before{content:\"\\0025cf  \"}ol.lst-kix_7723domhz6s-2.start{counter-reset:lst-ctn-kix_7723domhz6s-2 0}.lst-kix_8dfnd83tlbfx-8>li:before{content:\"\\0025a0  \"}ol.lst-kix_6ma6f2xy3e3g-6.start{counter-reset:lst-ctn-kix_6ma6f2xy3e3g-6 0}.lst-kix_kemf987rc70g-7>li:before{content:\"\" counter(lst-ctn-kix_kemf987rc70g-7,lower-latin) \". \"}.lst-kix_kggs8ld7pwdp-5>li:before{content:\"\\0025a0  \"}.lst-kix_kemf987rc70g-5>li:before{content:\"\" counter(lst-ctn-kix_kemf987rc70g-5,lower-roman) \". \"}.lst-kix_kggs8ld7pwdp-3>li:before{content:\"\\0025cf  \"}.lst-kix_kggs8ld7pwdp-7>li:before{content:\"\\0025cb  \"}.lst-kix_kemf987rc70g-3>li:before{content:\"\" counter(lst-ctn-kix_kemf987rc70g-3,decimal) \". \"}.lst-kix_7723domhz6s-4>li{counter-increment:lst-ctn-kix_7723domhz6s-4}.lst-kix_kggs8ld7pwdp-1>li:before{content:\"\\0025cb  \"}ol.lst-kix_3ijtgab9c43t-7.start{counter-reset:lst-ctn-kix_3ijtgab9c43t-7 0}ol.lst-kix_ohab9vf72sam-6.start{counter-reset:lst-ctn-kix_ohab9vf72sam-6 0}.lst-kix_eocx2mafq4hg-3>li:before{content:\"\\0025cf  \"}.lst-kix_eocx2mafq4hg-7>li:before{content:\"\\0025cb  \"}.lst-kix_eocx2mafq4hg-5>li:before{content:\"\\0025a0  \"}ol.lst-kix_epwdw4jvok0v-6.start{counter-reset:lst-ctn-kix_epwdw4jvok0v-6 0}.lst-kix_eocx2mafq4hg-1>li:before{content:\"\\0025cb  \"}ol.lst-kix_kemf987rc70g-8.start{counter-reset:lst-ctn-kix_kemf987rc70g-8 0}.lst-kix_kemf987rc70g-3>li{counter-increment:lst-ctn-kix_kemf987rc70g-3}.lst-kix_xwgnvks8cx4b-6>li:before{content:\"\\0025cf  \"}.lst-kix_xwgnvks8cx4b-7>li:before{content:\"\\0025cb  \"}.lst-kix_ohab9vf72sam-3>li{counter-increment:lst-ctn-kix_ohab9vf72sam-3}ol.lst-kix_7723domhz6s-3.start{counter-reset:lst-ctn-kix_7723domhz6s-3 0}.lst-kix_ohab9vf72sam-5>li{counter-increment:lst-ctn-kix_ohab9vf72sam-5}ul.lst-kix_oru11f5mqn90-8{list-style-type:none}ul.lst-kix_oru11f5mqn90-7{list-style-type:none}ul.lst-kix_oru11f5mqn90-6{list-style-type:none}ul.lst-kix_oru11f5mqn90-5{list-style-type:none}ul.lst-kix_oru11f5mqn90-4{list-style-type:none}ul.lst-kix_oru11f5mqn90-3{list-style-type:none}ul.lst-kix_oru11f5mqn90-2{list-style-type:none}ul.lst-kix_oru11f5mqn90-1{list-style-type:none}.lst-kix_kemf987rc70g-0>li:before{content:\"\" counter(lst-ctn-kix_kemf987rc70g-0,decimal) \". \"}.lst-kix_kemf987rc70g-1>li:before{content:\"\" counter(lst-ctn-kix_kemf987rc70g-1,lower-latin) \". \"}ol.lst-kix_epwdw4jvok0v-2.start{counter-reset:lst-ctn-kix_epwdw4jvok0v-2 0}ul.lst-kix_oru11f5mqn90-0{list-style-type:none}ul.lst-kix_1d4tfyrm45z-6{list-style-type:none}ul.lst-kix_1d4tfyrm45z-5{list-style-type:none}ul.lst-kix_1d4tfyrm45z-8{list-style-type:none}ul.lst-kix_1d4tfyrm45z-7{list-style-type:none}ul.lst-kix_1d4tfyrm45z-2{list-style-type:none}ul.lst-kix_1d4tfyrm45z-1{list-style-type:none}ul.lst-kix_1d4tfyrm45z-4{list-style-type:none}ul.lst-kix_1d4tfyrm45z-3{list-style-type:none}ol.lst-kix_3ijtgab9c43t-3.start{counter-reset:lst-ctn-kix_3ijtgab9c43t-3 0}.lst-kix_vncqob20gy09-5>li:before{content:\"\\0025a0  \"}.lst-kix_3ijtgab9c43t-7>li{counter-increment:lst-ctn-kix_3ijtgab9c43t-7}.lst-kix_n9ratbukspsc-4>li:before{content:\"\\0025cb  \"}ul.lst-kix_5pxwmqfzpcl1-0{list-style-type:none}.lst-kix_xwgnvks8cx4b-2>li:before{content:\"\\0025a0  \"}.lst-kix_xwgnvks8cx4b-3>li:before{content:\"\\0025cf  \"}ul.lst-kix_5pxwmqfzpcl1-1{list-style-type:none}ul.lst-kix_5pxwmqfzpcl1-2{list-style-type:none}.lst-kix_n9ratbukspsc-3>li:before{content:\"\\0025cf  \"}ul.lst-kix_5pxwmqfzpcl1-3{list-style-type:none}.lst-kix_vncqob20gy09-6>li:before{content:\"\\0025cf  \"}.lst-kix_rj882oy1yb27-1>li:before{content:\"\\0025cb  \"}ul.lst-kix_5pxwmqfzpcl1-4{list-style-type:none}ul.lst-kix_5pxwmqfzpcl1-5{list-style-type:none}.lst-kix_rj882oy1yb27-2>li:before{content:\"\\0025a0  \"}ul.lst-kix_5pxwmqfzpcl1-6{list-style-type:none}ul.lst-kix_5pxwmqfzpcl1-7{list-style-type:none}.lst-kix_n9ratbukspsc-0>li:before{content:\"\\0025cf  \"}ul.lst-kix_5pxwmqfzpcl1-8{list-style-type:none}.lst-kix_rj882oy1yb27-5>li:before{content:\"\\0025a0  \"}.lst-kix_rj882oy1yb27-6>li:before{content:\"\\0025cf  \"}.lst-kix_dn2s4tujbodr-1>li:before{content:\"\\0025cb  \"}.lst-kix_dn2s4tujbodr-5>li:before{content:\"\\0025a0  \"}.lst-kix_epwdw4jvok0v-0>li:before{content:\"\" counter(lst-ctn-kix_epwdw4jvok0v-0,decimal) \". \"}ol.lst-kix_ohab9vf72sam-2.start{counter-reset:lst-ctn-kix_ohab9vf72sam-2 0}.lst-kix_eocx2mafq4hg-8>li:before{content:\"\\0025a0  \"}.lst-kix_vncqob20gy09-2>li:before{content:\"\\0025a0  \"}ol.lst-kix_3ijtgab9c43t-2.start{counter-reset:lst-ctn-kix_3ijtgab9c43t-2 0}.lst-kix_n9ratbukspsc-7>li:before{content:\"\\0025cb  \"}.lst-kix_8dfnd83tlbfx-1>li:before{content:\"\\0025cb  \"}.lst-kix_2fb970x3axzy-1>li:before{content:\"\\0025cb  \"}ol.lst-kix_6ma6f2xy3e3g-0.start{counter-reset:lst-ctn-kix_6ma6f2xy3e3g-0 0}.lst-kix_2fb970x3axzy-5>li:before{content:\"\\0025a0  \"}.lst-kix_8dfnd83tlbfx-5>li:before{content:\"\\0025a0  \"}ol.lst-kix_epwdw4jvok0v-1.start{counter-reset:lst-ctn-kix_epwdw4jvok0v-1 0}.lst-kix_6ma6f2xy3e3g-8>li{counter-increment:lst-ctn-kix_6ma6f2xy3e3g-8}.lst-kix_kemf987rc70g-8>li:before{content:\"\" counter(lst-ctn-kix_kemf987rc70g-8,lower-roman) \". \"}.lst-kix_kggs8ld7pwdp-4>li:before{content:\"\\0025cb  \"}ol.lst-kix_ohab9vf72sam-0.start{counter-reset:lst-ctn-kix_ohab9vf72sam-0 0}.lst-kix_kemf987rc70g-4>li:before{content:\"\" counter(lst-ctn-kix_kemf987rc70g-4,lower-latin) \". \"}ol.lst-kix_1d4tfyrm45z-0.start{counter-reset:lst-ctn-kix_1d4tfyrm45z-0 0}ul.lst-kix_kggs8ld7pwdp-6{list-style-type:none}ul.lst-kix_kggs8ld7pwdp-5{list-style-type:none}ul.lst-kix_kggs8ld7pwdp-4{list-style-type:none}ul.lst-kix_kggs8ld7pwdp-3{list-style-type:none}ol.lst-kix_7723domhz6s-8.start{counter-reset:lst-ctn-kix_7723domhz6s-8 0}ul.lst-kix_kggs8ld7pwdp-2{list-style-type:none}ul.lst-kix_kggs8ld7pwdp-1{list-style-type:none}ul.lst-kix_kggs8ld7pwdp-0{list-style-type:none}ul.lst-kix_bxdrj678weu5-4{list-style-type:none}ul.lst-kix_bxdrj678weu5-5{list-style-type:none}ul.lst-kix_bxdrj678weu5-2{list-style-type:none}.lst-kix_kggs8ld7pwdp-0>li:before{content:\"\\0025cf  \"}ul.lst-kix_bxdrj678weu5-3{list-style-type:none}ul.lst-kix_bxdrj678weu5-8{list-style-type:none}ul.lst-kix_bxdrj678weu5-6{list-style-type:none}ul.lst-kix_kggs8ld7pwdp-8{list-style-type:none}ul.lst-kix_bxdrj678weu5-7{list-style-type:none}ul.lst-kix_kggs8ld7pwdp-7{list-style-type:none}.lst-kix_6ma6f2xy3e3g-1>li{counter-increment:lst-ctn-kix_6ma6f2xy3e3g-1}.lst-kix_eocx2mafq4hg-4>li:before{content:\"\\0025cb  \"}ul.lst-kix_bxdrj678weu5-0{list-style-type:none}ul.lst-kix_bxdrj678weu5-1{list-style-type:none}.lst-kix_epwdw4jvok0v-8>li:before{content:\"\" counter(lst-ctn-kix_epwdw4jvok0v-8,lower-roman) \". \"}.lst-kix_epwdw4jvok0v-4>li:before{content:\"\" counter(lst-ctn-kix_epwdw4jvok0v-4,lower-latin) \". \"}.lst-kix_3ijtgab9c43t-2>li{counter-increment:lst-ctn-kix_3ijtgab9c43t-2}.lst-kix_kggs8ld7pwdp-8>li:before{content:\"\\0025a0  \"}.lst-kix_eocx2mafq4hg-0>li:before{content:\"\\0025cf  \"}ol.lst-kix_7723domhz6s-7.start{counter-reset:lst-ctn-kix_7723domhz6s-7 0}.lst-kix_kemf987rc70g-2>li{counter-increment:lst-ctn-kix_kemf987rc70g-2}ul.lst-kix_jgz87z6a20i1-0{list-style-type:none}ul.lst-kix_jgz87z6a20i1-1{list-style-type:none}ul.lst-kix_jgz87z6a20i1-6{list-style-type:none}ul.lst-kix_jgz87z6a20i1-7{list-style-type:none}ol.lst-kix_1d4tfyrm45z-0{list-style-type:none}ul.lst-kix_jgz87z6a20i1-8{list-style-type:none}ul.lst-kix_jgz87z6a20i1-2{list-style-type:none}ul.lst-kix_jgz87z6a20i1-3{list-style-type:none}ul.lst-kix_jgz87z6a20i1-4{list-style-type:none}ul.lst-kix_jgz87z6a20i1-5{list-style-type:none}ol.lst-kix_7723domhz6s-6.start{counter-reset:lst-ctn-kix_7723domhz6s-6 0}ol.lst-kix_kemf987rc70g-5.start{counter-reset:lst-ctn-kix_kemf987rc70g-5 0}ul.lst-kix_rj882oy1yb27-0{list-style-type:none}ol.lst-kix_6ma6f2xy3e3g-7.start{counter-reset:lst-ctn-kix_6ma6f2xy3e3g-7 0}ul.lst-kix_rj882oy1yb27-1{list-style-type:none}ul.lst-kix_rj882oy1yb27-4{list-style-type:none}ul.lst-kix_rj882oy1yb27-5{list-style-type:none}ul.lst-kix_rj882oy1yb27-2{list-style-type:none}ul.lst-kix_rj882oy1yb27-3{list-style-type:none}.lst-kix_teoycm92f2n8-0>li:before{content:\"\\0025cf  \"}.lst-kix_ohab9vf72sam-2>li{counter-increment:lst-ctn-kix_ohab9vf72sam-2}.lst-kix_teoycm92f2n8-3>li:before{content:\"\\0025cf  \"}.lst-kix_teoycm92f2n8-1>li:before{content:\"\\0025cb  \"}.lst-kix_teoycm92f2n8-8>li:before{content:\"\\0025a0  \"}.lst-kix_teoycm92f2n8-6>li:before{content:\"\\0025cf  \"}ol.lst-kix_6ma6f2xy3e3g-2.start{counter-reset:lst-ctn-kix_6ma6f2xy3e3g-2 0}.lst-kix_7c0yesl7385o-4>li:before{content:\"\\0025cb  \"}.lst-kix_7c0yesl7385o-5>li:before{content:\"\\0025a0  \"}.lst-kix_7c0yesl7385o-7>li:before{content:\"\\0025cb  \"}.lst-kix_kemf987rc70g-6>li{counter-increment:lst-ctn-kix_kemf987rc70g-6}ol.lst-kix_kemf987rc70g-0.start{counter-reset:lst-ctn-kix_kemf987rc70g-0 0}ul.lst-kix_xwgnvks8cx4b-7{list-style-type:none}ul.lst-kix_xwgnvks8cx4b-6{list-style-type:none}ul.lst-kix_xwgnvks8cx4b-8{list-style-type:none}ul.lst-kix_xwgnvks8cx4b-1{list-style-type:none}ul.lst-kix_xwgnvks8cx4b-0{list-style-type:none}ul.lst-kix_xwgnvks8cx4b-3{list-style-type:none}ul.lst-kix_xwgnvks8cx4b-2{list-style-type:none}ul.lst-kix_xwgnvks8cx4b-5{list-style-type:none}ul.lst-kix_xwgnvks8cx4b-4{list-style-type:none}ol.lst-kix_ohab9vf72sam-5.start{counter-reset:lst-ctn-kix_ohab9vf72sam-5 0}.lst-kix_dn2s4tujbodr-6>li:before{content:\"\\0025cf  \"}.lst-kix_epwdw4jvok0v-1>li:before{content:\"\" counter(lst-ctn-kix_epwdw4jvok0v-1,lower-latin) \". \"}ul.lst-kix_pnoktiooohwx-8{list-style-type:none}.lst-kix_dn2s4tujbodr-0>li:before{content:\"\\0025cf  \"}.lst-kix_dn2s4tujbodr-8>li:before{content:\"\\0025a0  \"}ul.lst-kix_pnoktiooohwx-5{list-style-type:none}ul.lst-kix_pnoktiooohwx-4{list-style-type:none}ul.lst-kix_pnoktiooohwx-7{list-style-type:none}ul.lst-kix_pnoktiooohwx-6{list-style-type:none}ul.lst-kix_pnoktiooohwx-1{list-style-type:none}ul.lst-kix_pnoktiooohwx-0{list-style-type:none}ul.lst-kix_pnoktiooohwx-3{list-style-type:none}ul.lst-kix_pnoktiooohwx-2{list-style-type:none}.lst-kix_5pxwmqfzpcl1-5>li:before{content:\"\\0025a0  \"}.lst-kix_2fb970x3axzy-2>li:before{content:\"\\0025a0  \"}.lst-kix_7c0yesl7385o-2>li:before{content:\"\\0025a0  \"}.lst-kix_a00nrl7rzl2d-2>li:before{content:\"\\0025a0  \"}.lst-kix_2fb970x3axzy-4>li:before{content:\"\\0025cb  \"}.lst-kix_a00nrl7rzl2d-4>li:before{content:\"\\0025cb  \"}.lst-kix_kemf987rc70g-5>li{counter-increment:lst-ctn-kix_kemf987rc70g-5}.lst-kix_7723domhz6s-5>li{counter-increment:lst-ctn-kix_7723domhz6s-5}ol.lst-kix_kemf987rc70g-3.start{counter-reset:lst-ctn-kix_kemf987rc70g-3 0}.lst-kix_ohab9vf72sam-6>li{counter-increment:lst-ctn-kix_ohab9vf72sam-6}ol.lst-kix_7723domhz6s-1.start{counter-reset:lst-ctn-kix_7723domhz6s-1 0}.lst-kix_epwdw4jvok0v-4>li{counter-increment:lst-ctn-kix_epwdw4jvok0v-4}ol.lst-kix_ohab9vf72sam-7.start{counter-reset:lst-ctn-kix_ohab9vf72sam-7 0}ol.lst-kix_6ma6f2xy3e3g-5.start{counter-reset:lst-ctn-kix_6ma6f2xy3e3g-5 0}.lst-kix_epwdw4jvok0v-3>li:before{content:\"\" counter(lst-ctn-kix_epwdw4jvok0v-3,decimal) \". \"}.lst-kix_usvepcn8dumr-1>li:before{content:\"\\0025cb  \"}.lst-kix_6ma6f2xy3e3g-2>li{counter-increment:lst-ctn-kix_6ma6f2xy3e3g-2}.lst-kix_opqti3yfm868-5>li:before{content:\"\\0025a0  \"}ul.lst-kix_35prcsubei-5{list-style-type:none}.lst-kix_ohab9vf72sam-6>li:before{content:\"\" counter(lst-ctn-kix_ohab9vf72sam-6,decimal) \". \"}ul.lst-kix_35prcsubei-4{list-style-type:none}ul.lst-kix_35prcsubei-7{list-style-type:none}.lst-kix_7723domhz6s-6>li:before{content:\"\" counter(lst-ctn-kix_7723domhz6s-6,decimal) \". \"}ul.lst-kix_35prcsubei-6{list-style-type:none}.lst-kix_xwgnvks8cx4b-4>li:before{content:\"\\0025cb  \"}ul.lst-kix_35prcsubei-8{list-style-type:none}ol.lst-kix_kemf987rc70g-2.start{counter-reset:lst-ctn-kix_kemf987rc70g-2 0}.lst-kix_epwdw4jvok0v-1>li{counter-increment:lst-ctn-kix_epwdw4jvok0v-1}.lst-kix_ohab9vf72sam-3>li:before{content:\"\" counter(lst-ctn-kix_ohab9vf72sam-3,decimal) \". \"}.lst-kix_opqti3yfm868-0>li:before{content:\"\\0025cf  \"}ul.lst-kix_35prcsubei-1{list-style-type:none}ul.lst-kix_35prcsubei-0{list-style-type:none}ul.lst-kix_35prcsubei-3{list-style-type:none}ul.lst-kix_35prcsubei-2{list-style-type:none}ul.lst-kix_8dfnd83tlbfx-7{list-style-type:none}ul.lst-kix_8dfnd83tlbfx-6{list-style-type:none}ul.lst-kix_8dfnd83tlbfx-5{list-style-type:none}.lst-kix_eyfwt34ig0rx-8>li:before{content:\"\\0025a0  \"}ul.lst-kix_8dfnd83tlbfx-4{list-style-type:none}ul.lst-kix_8dfnd83tlbfx-3{list-style-type:none}ul.lst-kix_r4elz4xy30bx-0{list-style-type:none}ul.lst-kix_a00nrl7rzl2d-1{list-style-type:none}ul.lst-kix_8dfnd83tlbfx-2{list-style-type:none}ul.lst-kix_r4elz4xy30bx-1{list-style-type:none}ul.lst-kix_a00nrl7rzl2d-2{list-style-type:none}ul.lst-kix_8dfnd83tlbfx-1{list-style-type:none}ul.lst-kix_8dfnd83tlbfx-0{list-style-type:none}ul.lst-kix_a00nrl7rzl2d-0{list-style-type:none}ul.lst-kix_r4elz4xy30bx-4{list-style-type:none}ul.lst-kix_a00nrl7rzl2d-5{list-style-type:none}ul.lst-kix_r4elz4xy30bx-5{list-style-type:none}ul.lst-kix_a00nrl7rzl2d-6{list-style-type:none}ul.lst-kix_r4elz4xy30bx-2{list-style-type:none}ul.lst-kix_a00nrl7rzl2d-3{list-style-type:none}ul.lst-kix_r4elz4xy30bx-3{list-style-type:none}ul.lst-kix_a00nrl7rzl2d-4{list-style-type:none}ul.lst-kix_r4elz4xy30bx-8{list-style-type:none}ul.lst-kix_r4elz4xy30bx-6{list-style-type:none}ul.lst-kix_a00nrl7rzl2d-7{list-style-type:none}ul.lst-kix_8dfnd83tlbfx-8{list-style-type:none}ul.lst-kix_r4elz4xy30bx-7{list-style-type:none}ul.lst-kix_a00nrl7rzl2d-8{list-style-type:none}.lst-kix_kemf987rc70g-2>li:before{content:\"\" counter(lst-ctn-kix_kemf987rc70g-2,lower-roman) \". \"}.lst-kix_opqti3yfm868-8>li:before{content:\"\\0025a0  \"}.lst-kix_rj882oy1yb27-0>li:before{content:\"\\0025cf  \"}.lst-kix_u6xgsexoo9sy-7>li:before{content:\"\\0025cb  \"}.lst-kix_n9ratbukspsc-6>li:before{content:\"\\0025cf  \"}.lst-kix_eyfwt34ig0rx-5>li:before{content:\"\\0025a0  \"}.lst-kix_rj882oy1yb27-8>li:before{content:\"\\0025a0  \"}.lst-kix_rj882oy1yb27-3>li:before{content:\"\\0025cf  \"}.lst-kix_xwgnvks8cx4b-1>li:before{content:\"\\0025cb  \"}.lst-kix_vncqob20gy09-7>li:before{content:\"\\0025cb  \"}.lst-kix_eyfwt34ig0rx-0>li:before{content:\"\\0025cf  \"}.lst-kix_n9ratbukspsc-1>li:before{content:\"\\0025cb  \"}.lst-kix_u6xgsexoo9sy-2>li:before{content:\"\\0025a0  \"}.lst-kix_7723domhz6s-1>li:before{content:\"\" counter(lst-ctn-kix_7723domhz6s-1,lower-latin) \". \"}.lst-kix_dn2s4tujbodr-3>li:before{content:\"\\0025cf  \"}.lst-kix_1d4tfyrm45z-8>li:before{content:\"\\0025a0  \"}ul.lst-kix_dn2s4tujbodr-0{list-style-type:none}.lst-kix_oru11f5mqn90-7>li:before{content:\"\\0025cb  \"}ul.lst-kix_dn2s4tujbodr-1{list-style-type:none}ul.lst-kix_dn2s4tujbodr-2{list-style-type:none}ul.lst-kix_dn2s4tujbodr-3{list-style-type:none}.lst-kix_3ijtgab9c43t-6>li:before{content:\"\" counter(lst-ctn-kix_3ijtgab9c43t-6,decimal) \". \"}ul.lst-kix_dn2s4tujbodr-4{list-style-type:none}ul.lst-kix_dn2s4tujbodr-5{list-style-type:none}.lst-kix_35prcsubei-3>li:before{content:\"\\0025cf  \"}.lst-kix_vncqob20gy09-4>li:before{content:\"\\0025cb  \"}.lst-kix_3ijtgab9c43t-1>li{counter-increment:lst-ctn-kix_3ijtgab9c43t-1}.lst-kix_5pxwmqfzpcl1-2>li:before{content:\"\\0025a0  \"}.lst-kix_6ma6f2xy3e3g-3>li:before{content:\"\" counter(lst-ctn-kix_6ma6f2xy3e3g-3,decimal) \". \"}.lst-kix_ic892s5mka4i-4>li:before{content:\"\\0025cb  \"}.lst-kix_8dfnd83tlbfx-3>li:before{content:\"\\0025cf  \"}ul.lst-kix_dn2s4tujbodr-6{list-style-type:none}ul.lst-kix_dn2s4tujbodr-7{list-style-type:none}.lst-kix_2fb970x3axzy-7>li:before{content:\"\\0025cb  \"}.lst-kix_a00nrl7rzl2d-7>li:before{content:\"\\0025cb  \"}ul.lst-kix_dn2s4tujbodr-8{list-style-type:none}.lst-kix_7723domhz6s-2>li{counter-increment:lst-ctn-kix_7723domhz6s-2}.lst-kix_kggs8ld7pwdp-6>li:before{content:\"\\0025cf  \"}.lst-kix_o78sdnvfmv87-8>li:before{content:\"\\0025a0  \"}ul.lst-kix_ea7vdfpy17y5-0{list-style-type:none}.lst-kix_pnoktiooohwx-6>li:before{content:\"\\0025cf  \"}ul.lst-kix_ea7vdfpy17y5-2{list-style-type:none}ul.lst-kix_ea7vdfpy17y5-1{list-style-type:none}ul.lst-kix_ea7vdfpy17y5-4{list-style-type:none}ul.lst-kix_ea7vdfpy17y5-3{list-style-type:none}ul.lst-kix_ea7vdfpy17y5-6{list-style-type:none}.lst-kix_kkrhwvcem69f-2>li:before{content:\"\\0025a0  \"}ul.lst-kix_ea7vdfpy17y5-5{list-style-type:none}ul.lst-kix_ea7vdfpy17y5-8{list-style-type:none}ul.lst-kix_ea7vdfpy17y5-7{list-style-type:none}.lst-kix_epwdw4jvok0v-8>li{counter-increment:lst-ctn-kix_epwdw4jvok0v-8}.lst-kix_3ijtgab9c43t-8>li{counter-increment:lst-ctn-kix_3ijtgab9c43t-8}.lst-kix_o78sdnvfmv87-0>li:before{content:\"\\0025cf  \"}.lst-kix_bxdrj678weu5-3>li:before{content:\"\\0025cf  \"}.lst-kix_2neq6elh5tfy-6>li:before{content:\"\\0025cf  \"}.lst-kix_eocx2mafq4hg-6>li:before{content:\"\\0025cf  \"}li.li-bullet-0:before{margin-left:-18pt;white-space:nowrap;display:inline-block;min-width:18pt}.lst-kix_r4elz4xy30bx-6>li:before{content:\"\\0025cf  \"}.lst-kix_epwdw4jvok0v-6>li:before{content:\"\" counter(lst-ctn-kix_epwdw4jvok0v-6,decimal) \". \"}.lst-kix_jgz87z6a20i1-6>li:before{content:\"\\0025cf  \"}.lst-kix_ea7vdfpy17y5-2>li:before{content:\"\\0025a0  \"}ol.lst-kix_7723domhz6s-0.start{counter-reset:lst-ctn-kix_7723domhz6s-0 0}.lst-kix_1d4tfyrm45z-0>li{counter-increment:lst-ctn-kix_1d4tfyrm45z-0}.lst-kix_7723domhz6s-7>li{counter-increment:lst-ctn-kix_7723domhz6s-7}.lst-kix_6b681imm0qj5-0>li:before{content:\"\\0025cf  \"}.lst-kix_6b681imm0qj5-2>li:before{content:\"\\0025a0  \"}.lst-kix_xqp0dwytfsdc-0>li:before{content:\"\\0025cf  \"}.lst-kix_6b681imm0qj5-1>li:before{content:\"\\0025cb  \"}.lst-kix_xqp0dwytfsdc-2>li:before{content:\"\\0025a0  \"}.lst-kix_6b681imm0qj5-4>li:before{content:\"\\0025cb  \"}.lst-kix_xqp0dwytfsdc-1>li:before{content:\"\\0025cb  \"}.lst-kix_6b681imm0qj5-3>li:before{content:\"\\0025cf  \"}ul.lst-kix_xqp0dwytfsdc-7{list-style-type:none}ul.lst-kix_xqp0dwytfsdc-6{list-style-type:none}ul.lst-kix_xqp0dwytfsdc-8{list-style-type:none}ul.lst-kix_xqp0dwytfsdc-1{list-style-type:none}ul.lst-kix_xqp0dwytfsdc-0{list-style-type:none}ul.lst-kix_xqp0dwytfsdc-3{list-style-type:none}ul.lst-kix_xqp0dwytfsdc-2{list-style-type:none}ul.lst-kix_xqp0dwytfsdc-5{list-style-type:none}ul.lst-kix_xqp0dwytfsdc-4{list-style-type:none}.lst-kix_6ma6f2xy3e3g-5>li{counter-increment:lst-ctn-kix_6ma6f2xy3e3g-5}.lst-kix_rzd9z1dxv51l-7>li:before{content:\"\\0025cb  \"}.lst-kix_rzd9z1dxv51l-8>li:before{content:\"\\0025a0  \"}.lst-kix_kkrhwvcem69f-8>li:before{content:\"\\0025a0  \"}.lst-kix_rzd9z1dxv51l-1>li:before{content:\"\\0025cb  \"}.lst-kix_rzd9z1dxv51l-3>li:before{content:\"\\0025cf  \"}.lst-kix_kkrhwvcem69f-7>li:before{content:\"\\0025cb  \"}.lst-kix_rzd9z1dxv51l-2>li:before{content:\"\\0025a0  \"}.lst-kix_rzd9z1dxv51l-6>li:before{content:\"\\0025cf  \"}.lst-kix_rzd9z1dxv51l-5>li:before{content:\"\\0025a0  \"}ol.lst-kix_7723domhz6s-5.start{counter-reset:lst-ctn-kix_7723domhz6s-5 0}.lst-kix_rzd9z1dxv51l-4>li:before{content:\"\\0025cb  \"}.lst-kix_3ijtgab9c43t-4>li{counter-increment:lst-ctn-kix_3ijtgab9c43t-4}.lst-kix_rzd9z1dxv51l-0>li:before{content:\"\\0025cf  \"}.lst-kix_xqp0dwytfsdc-6>li:before{content:\"\\0025cf  \"}.lst-kix_6b681imm0qj5-8>li:before{content:\"\\0025a0  \"}.lst-kix_xqp0dwytfsdc-4>li:before{content:\"\\0025cb  \"}.lst-kix_xqp0dwytfsdc-8>li:before{content:\"\\0025a0  \"}ol.lst-kix_6ma6f2xy3e3g-8.start{counter-reset:lst-ctn-kix_6ma6f2xy3e3g-8 0}.lst-kix_xqp0dwytfsdc-3>li:before{content:\"\\0025cf  \"}.lst-kix_xqp0dwytfsdc-7>li:before{content:\"\\0025cb  \"}.lst-kix_6b681imm0qj5-5>li:before{content:\"\\0025a0  \"}.lst-kix_7723domhz6s-0>li{counter-increment:lst-ctn-kix_7723domhz6s-0}.lst-kix_6b681imm0qj5-6>li:before{content:\"\\0025cf  \"}.lst-kix_xqp0dwytfsdc-5>li:before{content:\"\\0025a0  \"}.lst-kix_6b681imm0qj5-7>li:before{content:\"\\0025cb  \"}.lst-kix_kemf987rc70g-0>li{counter-increment:lst-ctn-kix_kemf987rc70g-0}ol.lst-kix_kemf987rc70g-6.start{counter-reset:lst-ctn-kix_kemf987rc70g-6 0}.lst-kix_3ijtgab9c43t-7>li:before{content:\"\" counter(lst-ctn-kix_3ijtgab9c43t-7,lower-latin) \". \"}.lst-kix_35prcsubei-6>li:before{content:\"\\0025cf  \"}.lst-kix_35prcsubei-8>li:before{content:\"\\0025a0  \"}.lst-kix_oru11f5mqn90-4>li:before{content:\"\\0025cb  \"}.lst-kix_oru11f5mqn90-8>li:before{content:\"\\0025a0  \"}ol.lst-kix_epwdw4jvok0v-4.start{counter-reset:lst-ctn-kix_epwdw4jvok0v-4 0}.lst-kix_35prcsubei-4>li:before{content:\"\\0025cb  \"}.lst-kix_3ijtgab9c43t-5>li:before{content:\"\" counter(lst-ctn-kix_3ijtgab9c43t-5,lower-roman) \". \"}.lst-kix_oru11f5mqn90-6>li:before{content:\"\\0025cf  \"}.lst-kix_35prcsubei-0>li:before{content:\"\\0025cf  \"}.lst-kix_oru11f5mqn90-0>li:before{content:\"\\0025cf  \"}.lst-kix_3ijtgab9c43t-3>li:before{content:\"\" counter(lst-ctn-kix_3ijtgab9c43t-3,decimal) \". \"}.lst-kix_35prcsubei-2>li:before{content:\"\\0025a0  \"}.lst-kix_3ijtgab9c43t-1>li:before{content:\"\" counter(lst-ctn-kix_3ijtgab9c43t-1,lower-latin) \". \"}.lst-kix_oru11f5mqn90-2>li:before{content:\"\\0025a0  \"}.lst-kix_6ma6f2xy3e3g-2>li:before{content:\"\" counter(lst-ctn-kix_6ma6f2xy3e3g-2,lower-roman) \". \"}.lst-kix_ic892s5mka4i-3>li:before{content:\"\\0025cf  \"}.lst-kix_ic892s5mka4i-5>li:before{content:\"\\0025a0  \"}.lst-kix_6ma6f2xy3e3g-0>li:before{content:\"\" counter(lst-ctn-kix_6ma6f2xy3e3g-0,decimal) \". \"}.lst-kix_ic892s5mka4i-7>li:before{content:\"\\0025cb  \"}ol.lst-kix_3ijtgab9c43t-5.start{counter-reset:lst-ctn-kix_3ijtgab9c43t-5 0}.lst-kix_6ma6f2xy3e3g-4>li:before{content:\"\" counter(lst-ctn-kix_6ma6f2xy3e3g-4,lower-latin) \". \"}.lst-kix_6ma6f2xy3e3g-6>li:before{content:\"\" counter(lst-ctn-kix_6ma6f2xy3e3g-6,decimal) \". \"}ol.lst-kix_3ijtgab9c43t-1{list-style-type:none}ol.lst-kix_3ijtgab9c43t-0{list-style-type:none}ol.lst-kix_3ijtgab9c43t-3{list-style-type:none}ol.lst-kix_3ijtgab9c43t-2{list-style-type:none}.lst-kix_epwdw4jvok0v-5>li{counter-increment:lst-ctn-kix_epwdw4jvok0v-5}ol.lst-kix_ohab9vf72sam-8.start{counter-reset:lst-ctn-kix_ohab9vf72sam-8 0}.lst-kix_kkrhwvcem69f-3>li:before{content:\"\\0025cf  \"}.lst-kix_ic892s5mka4i-1>li:before{content:\"\\0025cb  \"}ol.lst-kix_6ma6f2xy3e3g-3.start{counter-reset:lst-ctn-kix_6ma6f2xy3e3g-3 0}.lst-kix_kkrhwvcem69f-5>li:before{content:\"\\0025a0  \"}ol.lst-kix_kemf987rc70g-1.start{counter-reset:lst-ctn-kix_kemf987rc70g-1 0}.lst-kix_bxdrj678weu5-8>li:before{content:\"\\0025a0  \"}.lst-kix_bxdrj678weu5-6>li:before{content:\"\\0025cf  \"}.lst-kix_pnoktiooohwx-5>li:before{content:\"\\0025a0  \"}.lst-kix_o78sdnvfmv87-7>li:before{content:\"\\0025cb  \"}.lst-kix_pnoktiooohwx-3>li:before{content:\"\\0025cf  \"}.lst-kix_kkrhwvcem69f-1>li:before{content:\"\\0025cb  \"}ol.lst-kix_6ma6f2xy3e3g-5{list-style-type:none}.lst-kix_pnoktiooohwx-1>li:before{content:\"\\0025cb  \"}ol.lst-kix_6ma6f2xy3e3g-4{list-style-type:none}.lst-kix_o78sdnvfmv87-3>li:before{content:\"\\0025cf  \"}.lst-kix_ohab9vf72sam-0>li{counter-increment:lst-ctn-kix_ohab9vf72sam-0}ol.lst-kix_6ma6f2xy3e3g-7{list-style-type:none}ol.lst-kix_6ma6f2xy3e3g-6{list-style-type:none}.lst-kix_6ma6f2xy3e3g-8>li:before{content:\"\" counter(lst-ctn-kix_6ma6f2xy3e3g-8,lower-roman) \". \"}ol.lst-kix_6ma6f2xy3e3g-1{list-style-type:none}.lst-kix_bxdrj678weu5-2>li:before{content:\"\\0025a0  \"}ol.lst-kix_6ma6f2xy3e3g-0{list-style-type:none}.lst-kix_o78sdnvfmv87-1>li:before{content:\"\\0025cb  \"}.lst-kix_o78sdnvfmv87-5>li:before{content:\"\\0025a0  \"}ol.lst-kix_6ma6f2xy3e3g-3{list-style-type:none}ol.lst-kix_6ma6f2xy3e3g-2{list-style-type:none}.lst-kix_bxdrj678weu5-4>li:before{content:\"\\0025cb  \"}.lst-kix_jgz87z6a20i1-1>li:before{content:\"\\0025cb  \"}.lst-kix_ea7vdfpy17y5-7>li:before{content:\"\\0025cb  \"}.lst-kix_jgz87z6a20i1-3>li:before{content:\"\\0025cf  \"}.lst-kix_ea7vdfpy17y5-5>li:before{content:\"\\0025a0  \"}.lst-kix_r4elz4xy30bx-1>li:before{content:\"\\0025cb  \"}.lst-kix_2neq6elh5tfy-7>li:before{content:\"\\0025cb  \"}.lst-kix_jgz87z6a20i1-5>li:before{content:\"\\0025a0  \"}.lst-kix_ea7vdfpy17y5-3>li:before{content:\"\\0025cf  \"}.lst-kix_6ma6f2xy3e3g-4>li{counter-increment:lst-ctn-kix_6ma6f2xy3e3g-4}.lst-kix_3ijtgab9c43t-5>li{counter-increment:lst-ctn-kix_3ijtgab9c43t-5}.lst-kix_2neq6elh5tfy-3>li:before{content:\"\\0025cf  \"}.lst-kix_usvepcn8dumr-6>li:before{content:\"\\0025cf  \"}.lst-kix_bxdrj678weu5-0>li:before{content:\"\\0025cf  \"}.lst-kix_r4elz4xy30bx-7>li:before{content:\"\\0025cb  \"}ol.lst-kix_kemf987rc70g-8{list-style-type:none}.lst-kix_2neq6elh5tfy-1>li:before{content:\"\\0025cb  \"}.lst-kix_2neq6elh5tfy-5>li:before{content:\"\\0025a0  \"}.lst-kix_usvepcn8dumr-4>li:before{content:\"\\0025cb  \"}.lst-kix_usvepcn8dumr-8>li:before{content:\"\\0025a0  \"}ol.lst-kix_kemf987rc70g-7{list-style-type:none}.lst-kix_jgz87z6a20i1-7>li:before{content:\"\\0025cb  \"}.lst-kix_ea7vdfpy17y5-1>li:before{content:\"\\0025cb  \"}.lst-kix_r4elz4xy30bx-5>li:before{content:\"\\0025a0  \"}ol.lst-kix_kemf987rc70g-4{list-style-type:none}ol.lst-kix_kemf987rc70g-3{list-style-type:none}.lst-kix_r4elz4xy30bx-3>li:before{content:\"\\0025cf  \"}ol.lst-kix_kemf987rc70g-6{list-style-type:none}ol.lst-kix_kemf987rc70g-5{list-style-type:none}ol.lst-kix_kemf987rc70g-0{list-style-type:none}.lst-kix_pnoktiooohwx-7>li:before{content:\"\\0025cb  \"}ol.lst-kix_kemf987rc70g-2{list-style-type:none}ol.lst-kix_kemf987rc70g-1{list-style-type:none}.lst-kix_usvepcn8dumr-0>li:before{content:\"\\0025cf  \"}ol.lst-kix_6ma6f2xy3e3g-4.start{counter-reset:lst-ctn-kix_6ma6f2xy3e3g-4 0}.lst-kix_opqti3yfm868-7>li:before{content:\"\\0025cb  \"}.lst-kix_7723domhz6s-8>li{counter-increment:lst-ctn-kix_7723domhz6s-8}.lst-kix_2neq6elh5tfy-0>li:before{content:\"\\0025cf  \"}ul.lst-kix_usvepcn8dumr-0{list-style-type:none}.lst-kix_ohab9vf72sam-0>li:before{content:\"\" counter(lst-ctn-kix_ohab9vf72sam-0,decimal) \". \"}.lst-kix_ohab9vf72sam-1>li:before{content:\"\" counter(lst-ctn-kix_ohab9vf72sam-1,lower-latin) \". \"}.lst-kix_opqti3yfm868-6>li:before{content:\"\\0025cf  \"}.lst-kix_usvepcn8dumr-3>li:before{content:\"\\0025cf  \"}.lst-kix_opqti3yfm868-3>li:before{content:\"\\0025cf  \"}.lst-kix_7723domhz6s-7>li:before{content:\"\" counter(lst-ctn-kix_7723domhz6s-7,lower-latin) \". \"}.lst-kix_7723domhz6s-8>li:before{content:\"\" counter(lst-ctn-kix_7723domhz6s-8,lower-roman) \". \"}.lst-kix_ohab9vf72sam-4>li:before{content:\"\" counter(lst-ctn-kix_ohab9vf72sam-4,lower-latin) \". \"}.lst-kix_ohab9vf72sam-5>li:before{content:\"\" counter(lst-ctn-kix_ohab9vf72sam-5,lower-roman) \". \"}.lst-kix_opqti3yfm868-2>li:before{content:\"\\0025a0  \"}.lst-kix_kemf987rc70g-1>li{counter-increment:lst-ctn-kix_kemf987rc70g-1}ol.lst-kix_ohab9vf72sam-4.start{counter-reset:lst-ctn-kix_ohab9vf72sam-4 0}.lst-kix_ohab9vf72sam-8>li:before{content:\"\" counter(lst-ctn-kix_ohab9vf72sam-8,lower-roman) \". \"}ol.lst-kix_6ma6f2xy3e3g-8{list-style-type:none}ul.lst-kix_usvepcn8dumr-6{list-style-type:none}ul.lst-kix_usvepcn8dumr-5{list-style-type:none}ul.lst-kix_usvepcn8dumr-8{list-style-type:none}ul.lst-kix_usvepcn8dumr-7{list-style-type:none}ul.lst-kix_usvepcn8dumr-2{list-style-type:none}ul.lst-kix_usvepcn8dumr-1{list-style-type:none}ul.lst-kix_rzd9z1dxv51l-7{list-style-type:none}ul.lst-kix_usvepcn8dumr-4{list-style-type:none}ul.lst-kix_rzd9z1dxv51l-8{list-style-type:none}ul.lst-kix_usvepcn8dumr-3{list-style-type:none}ul.lst-kix_rzd9z1dxv51l-5{list-style-type:none}ul.lst-kix_rzd9z1dxv51l-6{list-style-type:none}ul.lst-kix_rzd9z1dxv51l-3{list-style-type:none}ul.lst-kix_rzd9z1dxv51l-4{list-style-type:none}ul.lst-kix_rzd9z1dxv51l-1{list-style-type:none}ul.lst-kix_rzd9z1dxv51l-2{list-style-type:none}ul.lst-kix_rzd9z1dxv51l-0{list-style-type:none}.lst-kix_ohab9vf72sam-1>li{counter-increment:lst-ctn-kix_ohab9vf72sam-1}ul.lst-kix_ic892s5mka4i-7{list-style-type:none}ul.lst-kix_ic892s5mka4i-6{list-style-type:none}ul.lst-kix_ic892s5mka4i-8{list-style-type:none}ul.lst-kix_ic892s5mka4i-3{list-style-type:none}ol.lst-kix_3ijtgab9c43t-4.start{counter-reset:lst-ctn-kix_3ijtgab9c43t-4 0}ul.lst-kix_ic892s5mka4i-2{list-style-type:none}ul.lst-kix_ic892s5mka4i-5{list-style-type:none}ul.lst-kix_ic892s5mka4i-4{list-style-type:none}ol.lst-kix_3ijtgab9c43t-5{list-style-type:none}ol.lst-kix_3ijtgab9c43t-4{list-style-type:none}ol.lst-kix_3ijtgab9c43t-7{list-style-type:none}ol.lst-kix_kemf987rc70g-7.start{counter-reset:lst-ctn-kix_kemf987rc70g-7 0}ol.lst-kix_3ijtgab9c43t-6{list-style-type:none}ol.lst-kix_3ijtgab9c43t-8{list-style-type:none}.lst-kix_6ma6f2xy3e3g-6>li{counter-increment:lst-ctn-kix_6ma6f2xy3e3g-6}.lst-kix_eyfwt34ig0rx-7>li:before{content:\"\\0025cb  \"}ol.lst-kix_7723domhz6s-4.start{counter-reset:lst-ctn-kix_7723domhz6s-4 0}.lst-kix_eyfwt34ig0rx-6>li:before{content:\"\\0025cf  \"}ol.lst-kix_epwdw4jvok0v-3.start{counter-reset:lst-ctn-kix_epwdw4jvok0v-3 0}.lst-kix_eyfwt34ig0rx-3>li:before{content:\"\\0025cf  \"}.lst-kix_u6xgsexoo9sy-4>li:before{content:\"\\0025cb  \"}.lst-kix_u6xgsexoo9sy-5>li:before{content:\"\\0025a0  \"}.lst-kix_5pxwmqfzpcl1-7>li:before{content:\"\\0025cb  \"}.lst-kix_eyfwt34ig0rx-2>li:before{content:\"\\0025a0  \"}.lst-kix_5pxwmqfzpcl1-8>li:before{content:\"\\0025a0  \"}.lst-kix_7723domhz6s-6>li{counter-increment:lst-ctn-kix_7723domhz6s-6}.lst-kix_u6xgsexoo9sy-0>li:before{content:\"\\0025cf  \"}.lst-kix_u6xgsexoo9sy-1>li:before{content:\"\\0025cb  \"}ul.lst-kix_ic892s5mka4i-1{list-style-type:none}.lst-kix_7723domhz6s-4>li:before{content:\"\" counter(lst-ctn-kix_7723domhz6s-4,lower-latin) \". \"}ul.lst-kix_ic892s5mka4i-0{list-style-type:none}.lst-kix_7723domhz6s-3>li:before{content:\"\" counter(lst-ctn-kix_7723domhz6s-3,decimal) \". \"}.lst-kix_7723domhz6s-0>li:before{content:\"\" counter(lst-ctn-kix_7723domhz6s-0,decimal) \". \"}ol.lst-kix_ohab9vf72sam-3.start{counter-reset:lst-ctn-kix_ohab9vf72sam-3 0}.lst-kix_oru11f5mqn90-5>li:before{content:\"\\0025a0  \"}.lst-kix_3ijtgab9c43t-4>li:before{content:\"\" counter(lst-ctn-kix_3ijtgab9c43t-4,lower-latin) \". \"}.lst-kix_3ijtgab9c43t-8>li:before{content:\"\" counter(lst-ctn-kix_3ijtgab9c43t-8,lower-roman) \". \"}.lst-kix_a00nrl7rzl2d-1>li:before{content:\"\\0025cb  \"}.lst-kix_r4elz4xy30bx-8>li:before{content:\"\\0025a0  \"}.lst-kix_kemf987rc70g-8>li{counter-increment:lst-ctn-kix_kemf987rc70g-8}.lst-kix_35prcsubei-5>li:before{content:\"\\0025a0  \"}.lst-kix_7723domhz6s-1>li{counter-increment:lst-ctn-kix_7723domhz6s-1}.lst-kix_3ijtgab9c43t-0>li:before{content:\"\" counter(lst-ctn-kix_3ijtgab9c43t-0,decimal) \". \"}.lst-kix_oru11f5mqn90-1>li:before{content:\"\\0025cb  \"}.lst-kix_5pxwmqfzpcl1-4>li:before{content:\"\\0025cb  \"}.lst-kix_35prcsubei-1>li:before{content:\"\\0025cb  \"}.lst-kix_u6xgsexoo9sy-8>li:before{content:\"\\0025a0  \"}.lst-kix_jgz87z6a20i1-0>li:before{content:\"\\0025cf  \"}.lst-kix_ohab9vf72sam-8>li{counter-increment:lst-ctn-kix_ohab9vf72sam-8}.lst-kix_ea7vdfpy17y5-8>li:before{content:\"\\0025a0  \"}.lst-kix_epwdw4jvok0v-7>li{counter-increment:lst-ctn-kix_epwdw4jvok0v-7}.lst-kix_5pxwmqfzpcl1-0>li:before{content:\"\\0025cf  \"}.lst-kix_ic892s5mka4i-6>li:before{content:\"\\0025cf  \"}.lst-kix_6ma6f2xy3e3g-5>li:before{content:\"\" counter(lst-ctn-kix_6ma6f2xy3e3g-5,lower-roman) \". \"}ul.lst-kix_vncqob20gy09-0{list-style-type:none}ul.lst-kix_vncqob20gy09-2{list-style-type:none}.lst-kix_a00nrl7rzl2d-5>li:before{content:\"\\0025a0  \"}ul.lst-kix_vncqob20gy09-1{list-style-type:none}ul.lst-kix_vncqob20gy09-4{list-style-type:none}ul.lst-kix_vncqob20gy09-3{list-style-type:none}ul.lst-kix_vncqob20gy09-6{list-style-type:none}ul.lst-kix_vncqob20gy09-5{list-style-type:none}ul.lst-kix_vncqob20gy09-8{list-style-type:none}.lst-kix_kkrhwvcem69f-4>li:before{content:\"\\0025cb  \"}ul.lst-kix_vncqob20gy09-7{list-style-type:none}.lst-kix_7c0yesl7385o-1>li:before{content:\"\\0025cb  \"}.lst-kix_6ma6f2xy3e3g-1>li:before{content:\"\" counter(lst-ctn-kix_6ma6f2xy3e3g-1,lower-latin) \". \"}.lst-kix_ic892s5mka4i-2>li:before{content:\"\\0025a0  \"}.lst-kix_pnoktiooohwx-8>li:before{content:\"\\0025a0  \"}.lst-kix_o78sdnvfmv87-6>li:before{content:\"\\0025cf  \"}.lst-kix_pnoktiooohwx-4>li:before{content:\"\\0025cb  \"}ol.lst-kix_3ijtgab9c43t-0.start{counter-reset:lst-ctn-kix_3ijtgab9c43t-0 0}.lst-kix_kkrhwvcem69f-0>li:before{content:\"\\0025cf  \"}.lst-kix_o78sdnvfmv87-2>li:before{content:\"\\0025a0  \"}.lst-kix_bxdrj678weu5-1>li:before{content:\"\\0025cb  \"}.lst-kix_bxdrj678weu5-5>li:before{content:\"\\0025a0  \"}.lst-kix_pnoktiooohwx-0>li:before{content:\"\\0025cf  \"}ul.lst-kix_rj882oy1yb27-8{list-style-type:none}ul.lst-kix_rj882oy1yb27-6{list-style-type:none}ul.lst-kix_rj882oy1yb27-7{list-style-type:none}ol.lst-kix_ohab9vf72sam-0{list-style-type:none}ol.lst-kix_ohab9vf72sam-1{list-style-type:none}.lst-kix_jgz87z6a20i1-4>li:before{content:\"\\0025cb  \"}.lst-kix_ea7vdfpy17y5-4>li:before{content:\"\\0025cb  \"}.lst-kix_2neq6elh5tfy-8>li:before{content:\"\\0025a0  \"}.lst-kix_r4elz4xy30bx-0>li:before{content:\"\\0025cf  \"}.lst-kix_jgz87z6a20i1-8>li:before{content:\"\\0025a0  \"}.lst-kix_ea7vdfpy17y5-0>li:before{content:\"\\0025cf  \"}.lst-kix_2neq6elh5tfy-4>li:before{content:\"\\0025cb  \"}ol.lst-kix_ohab9vf72sam-2{list-style-type:none}ol.lst-kix_ohab9vf72sam-3{list-style-type:none}ol.lst-kix_ohab9vf72sam-4{list-style-type:none}ol.lst-kix_ohab9vf72sam-5{list-style-type:none}ol.lst-kix_ohab9vf72sam-6{list-style-type:none}ol.lst-kix_ohab9vf72sam-7{list-style-type:none}.lst-kix_r4elz4xy30bx-4>li:before{content:\"\\0025cb  \"}ol.lst-kix_ohab9vf72sam-8{list-style-type:none}.lst-kix_usvepcn8dumr-7>li:before{content:\"\\0025cb  \"}.lst-kix_3ijtgab9c43t-6>li{counter-increment:lst-ctn-kix_3ijtgab9c43t-6}ul.lst-kix_o78sdnvfmv87-1{list-style-type:none}ul.lst-kix_o78sdnvfmv87-0{list-style-type:none}ul.lst-kix_o78sdnvfmv87-3{list-style-type:none}ul.lst-kix_o78sdnvfmv87-2{list-style-type:none}ul.lst-kix_o78sdnvfmv87-5{list-style-type:none}ul.lst-kix_o78sdnvfmv87-4{list-style-type:none}ul.lst-kix_o78sdnvfmv87-7{list-style-type:none}ul.lst-kix_o78sdnvfmv87-6{list-style-type:none}ul.lst-kix_o78sdnvfmv87-8{list-style-type:none}.lst-kix_epwdw4jvok0v-0>li{counter-increment:lst-ctn-kix_epwdw4jvok0v-0}.lst-kix_6ma6f2xy3e3g-3>li{counter-increment:lst-ctn-kix_6ma6f2xy3e3g-3}ol.lst-kix_epwdw4jvok0v-0.start{counter-reset:lst-ctn-kix_epwdw4jvok0v-0 0}ul.lst-kix_opqti3yfm868-0{list-style-type:none}ul.lst-kix_opqti3yfm868-3{list-style-type:none}ul.lst-kix_opqti3yfm868-4{list-style-type:none}ul.lst-kix_opqti3yfm868-1{list-style-type:none}ul.lst-kix_opqti3yfm868-2{list-style-type:none}ul.lst-kix_opqti3yfm868-7{list-style-type:none}ul.lst-kix_opqti3yfm868-8{list-style-type:none}.lst-kix_teoycm92f2n8-2>li:before{content:\"\\0025a0  \"}ul.lst-kix_opqti3yfm868-5{list-style-type:none}ul.lst-kix_opqti3yfm868-6{list-style-type:none}.lst-kix_teoycm92f2n8-7>li:before{content:\"\\0025cb  \"}ol.lst-kix_3ijtgab9c43t-1.start{counter-reset:lst-ctn-kix_3ijtgab9c43t-1 0}.lst-kix_teoycm92f2n8-4>li:before{content:\"\\0025cb  \"}.lst-kix_teoycm92f2n8-5>li:before{content:\"\\0025a0  \"}.lst-kix_7c0yesl7385o-3>li:before{content:\"\\0025cf  \"}.lst-kix_2fb970x3axzy-8>li:before{content:\"\\0025a0  \"}.lst-kix_7c0yesl7385o-6>li:before{content:\"\\0025cf  \"}ul.lst-kix_6b681imm0qj5-7{list-style-type:none}ul.lst-kix_6b681imm0qj5-8{list-style-type:none}ul.lst-kix_6b681imm0qj5-1{list-style-type:none}ul.lst-kix_6b681imm0qj5-2{list-style-type:none}ul.lst-kix_6b681imm0qj5-0{list-style-type:none}.lst-kix_7c0yesl7385o-8>li:before{content:\"\\0025a0  \"}ul.lst-kix_6b681imm0qj5-5{list-style-type:none}ul.lst-kix_6b681imm0qj5-6{list-style-type:none}ul.lst-kix_6b681imm0qj5-3{list-style-type:none}ul.lst-kix_6b681imm0qj5-4{list-style-type:none}ul.lst-kix_u6xgsexoo9sy-3{list-style-type:none}ul.lst-kix_eocx2mafq4hg-1{list-style-type:none}ul.lst-kix_2fb970x3axzy-0{list-style-type:none}ul.lst-kix_u6xgsexoo9sy-2{list-style-type:none}ul.lst-kix_eocx2mafq4hg-0{list-style-type:none}ul.lst-kix_2fb970x3axzy-1{list-style-type:none}ul.lst-kix_u6xgsexoo9sy-1{list-style-type:none}ul.lst-kix_eocx2mafq4hg-3{list-style-type:none}ul.lst-kix_2fb970x3axzy-2{list-style-type:none}ul.lst-kix_u6xgsexoo9sy-0{list-style-type:none}ul.lst-kix_eocx2mafq4hg-2{list-style-type:none}ul.lst-kix_2fb970x3axzy-3{list-style-type:none}ul.lst-kix_u6xgsexoo9sy-7{list-style-type:none}ul.lst-kix_eocx2mafq4hg-5{list-style-type:none}ul.lst-kix_u6xgsexoo9sy-6{list-style-type:none}ul.lst-kix_eocx2mafq4hg-4{list-style-type:none}ul.lst-kix_u6xgsexoo9sy-5{list-style-type:none}ul.lst-kix_eocx2mafq4hg-7{list-style-type:none}ul.lst-kix_u6xgsexoo9sy-4{list-style-type:none}ul.lst-kix_eocx2mafq4hg-6{list-style-type:none}ul.lst-kix_2fb970x3axzy-8{list-style-type:none}ul.lst-kix_eocx2mafq4hg-8{list-style-type:none}ul.lst-kix_2fb970x3axzy-4{list-style-type:none}ul.lst-kix_2fb970x3axzy-5{list-style-type:none}ul.lst-kix_2fb970x3axzy-6{list-style-type:none}ul.lst-kix_2fb970x3axzy-7{list-style-type:none}ul.lst-kix_u6xgsexoo9sy-8{list-style-type:none}.lst-kix_dn2s4tujbodr-2>li:before{content:\"\\0025a0  \"}ol.lst-kix_epwdw4jvok0v-7.start{counter-reset:lst-ctn-kix_epwdw4jvok0v-7 0}.lst-kix_a00nrl7rzl2d-0>li:before{content:\"\\0025cf  \"}.lst-kix_dn2s4tujbodr-4>li:before{content:\"\\0025cb  \"}.lst-kix_5pxwmqfzpcl1-1>li:before{content:\"\\0025cb  \"}.lst-kix_5pxwmqfzpcl1-3>li:before{content:\"\\0025cf  \"}ol.lst-kix_3ijtgab9c43t-8.start{counter-reset:lst-ctn-kix_3ijtgab9c43t-8 0}.lst-kix_2fb970x3axzy-0>li:before{content:\"\\0025cf  \"}.lst-kix_a00nrl7rzl2d-8>li:before{content:\"\\0025a0  \"}.lst-kix_2fb970x3axzy-6>li:before{content:\"\\0025cf  \"}.lst-kix_a00nrl7rzl2d-6>li:before{content:\"\\0025cf  \"}.lst-kix_7c0yesl7385o-0>li:before{content:\"\\0025cf  \"}ol.lst-kix_epwdw4jvok0v-8{list-style-type:none}ul.lst-kix_2neq6elh5tfy-8{list-style-type:none}ul.lst-kix_2neq6elh5tfy-7{list-style-type:none}ol.lst-kix_epwdw4jvok0v-6{list-style-type:none}ul.lst-kix_2neq6elh5tfy-6{list-style-type:none}ol.lst-kix_epwdw4jvok0v-7{list-style-type:none}ul.lst-kix_2neq6elh5tfy-5{list-style-type:none}ol.lst-kix_epwdw4jvok0v-4{list-style-type:none}ul.lst-kix_2neq6elh5tfy-4{list-style-type:none}ol.lst-kix_epwdw4jvok0v-5{list-style-type:none}ul.lst-kix_2neq6elh5tfy-3{list-style-type:none}ul.lst-kix_2neq6elh5tfy-2{list-style-type:none}ul.lst-kix_2neq6elh5tfy-1{list-style-type:none}ul.lst-kix_2neq6elh5tfy-0{list-style-type:none}ol.lst-kix_epwdw4jvok0v-5.start{counter-reset:lst-ctn-kix_epwdw4jvok0v-5 0}ul.lst-kix_teoycm92f2n8-3{list-style-type:none}ul.lst-kix_teoycm92f2n8-4{list-style-type:none}ul.lst-kix_teoycm92f2n8-1{list-style-type:none}ul.lst-kix_teoycm92f2n8-2{list-style-type:none}ul.lst-kix_teoycm92f2n8-0{list-style-type:none}ul.lst-kix_n9ratbukspsc-6{list-style-type:none}ul.lst-kix_n9ratbukspsc-7{list-style-type:none}ul.lst-kix_n9ratbukspsc-8{list-style-type:none}.lst-kix_epwdw4jvok0v-7>li:before{content:\"\" counter(lst-ctn-kix_epwdw4jvok0v-7,lower-latin) \". \"}ul.lst-kix_teoycm92f2n8-7{list-style-type:none}ul.lst-kix_teoycm92f2n8-8{list-style-type:none}ul.lst-kix_teoycm92f2n8-5{list-style-type:none}ul.lst-kix_teoycm92f2n8-6{list-style-type:none}ul.lst-kix_n9ratbukspsc-0{list-style-type:none}.lst-kix_epwdw4jvok0v-5>li:before{content:\"\" counter(lst-ctn-kix_epwdw4jvok0v-5,lower-roman) \". \"}ol.lst-kix_3ijtgab9c43t-6.start{counter-reset:lst-ctn-kix_3ijtgab9c43t-6 0}ul.lst-kix_n9ratbukspsc-1{list-style-type:none}ul.lst-kix_n9ratbukspsc-2{list-style-type:none}ul.lst-kix_n9ratbukspsc-3{list-style-type:none}ul.lst-kix_n9ratbukspsc-4{list-style-type:none}ul.lst-kix_n9ratbukspsc-5{list-style-type:none}ol.lst-kix_epwdw4jvok0v-2{list-style-type:none}ol.lst-kix_epwdw4jvok0v-3{list-style-type:none}ol.lst-kix_epwdw4jvok0v-0{list-style-type:none}ol.lst-kix_epwdw4jvok0v-1{list-style-type:none}.lst-kix_usvepcn8dumr-2>li:before{content:\"\\0025a0  \"}.lst-kix_ohab9vf72sam-2>li:before{content:\"\" counter(lst-ctn-kix_ohab9vf72sam-2,lower-roman) \". \"}.lst-kix_ohab9vf72sam-7>li:before{content:\"\" counter(lst-ctn-kix_ohab9vf72sam-7,lower-latin) \". \"}.lst-kix_opqti3yfm868-4>li:before{content:\"\\0025cb  \"}.lst-kix_xwgnvks8cx4b-8>li:before{content:\"\\0025a0  \"}.lst-kix_xwgnvks8cx4b-5>li:before{content:\"\\0025a0  \"}.lst-kix_opqti3yfm868-1>li:before{content:\"\\0025cb  \"}ol.lst-kix_epwdw4jvok0v-8.start{counter-reset:lst-ctn-kix_epwdw4jvok0v-8 0}.lst-kix_epwdw4jvok0v-3>li{counter-increment:lst-ctn-kix_epwdw4jvok0v-3}.lst-kix_3ijtgab9c43t-3>li{counter-increment:lst-ctn-kix_3ijtgab9c43t-3}.lst-kix_ohab9vf72sam-7>li{counter-increment:lst-ctn-kix_ohab9vf72sam-7}.lst-kix_n9ratbukspsc-5>li:before{content:\"\\0025a0  \"}.lst-kix_6ma6f2xy3e3g-0>li{counter-increment:lst-ctn-kix_6ma6f2xy3e3g-0}.lst-kix_vncqob20gy09-8>li:before{content:\"\\0025a0  \"}.lst-kix_rj882oy1yb27-7>li:before{content:\"\\0025cb  \"}.lst-kix_u6xgsexoo9sy-6>li:before{content:\"\\0025cf  \"}.lst-kix_xwgnvks8cx4b-0>li:before{content:\"\\0025cf  \"}.lst-kix_rj882oy1yb27-4>li:before{content:\"\\0025cb  \"}.lst-kix_5pxwmqfzpcl1-6>li:before{content:\"\\0025cf  \"}ul.lst-kix_7c0yesl7385o-8{list-style-type:none}.lst-kix_eyfwt34ig0rx-4>li:before{content:\"\\0025cb  \"}ul.lst-kix_7c0yesl7385o-4{list-style-type:none}.lst-kix_u6xgsexoo9sy-3>li:before{content:\"\\0025cf  \"}ul.lst-kix_7c0yesl7385o-5{list-style-type:none}ul.lst-kix_7c0yesl7385o-6{list-style-type:none}.lst-kix_n9ratbukspsc-2>li:before{content:\"\\0025a0  \"}ul.lst-kix_7c0yesl7385o-7{list-style-type:none}.lst-kix_7723domhz6s-5>li:before{content:\"\" counter(lst-ctn-kix_7723domhz6s-5,lower-roman) \". \"}ul.lst-kix_7c0yesl7385o-0{list-style-type:none}ul.lst-kix_7c0yesl7385o-1{list-style-type:none}ul.lst-kix_7c0yesl7385o-2{list-style-type:none}ul.lst-kix_7c0yesl7385o-3{list-style-type:none}.lst-kix_eyfwt34ig0rx-1>li:before{content:\"\\0025cb  \"}.lst-kix_7723domhz6s-2>li:before{content:\"\" counter(lst-ctn-kix_7723domhz6s-2,lower-roman) \". \"}.lst-kix_oru11f5mqn90-3>li:before{content:\"\\0025cf  \"}.lst-kix_epwdw4jvok0v-6>li{counter-increment:lst-ctn-kix_epwdw4jvok0v-6}.lst-kix_35prcsubei-7>li:before{content:\"\\0025cb  \"}.lst-kix_dn2s4tujbodr-7>li:before{content:\"\\0025cb  \"}.lst-kix_vncqob20gy09-0>li:before{content:\"\\0025cf  \"}.lst-kix_ic892s5mka4i-8>li:before{content:\"\\0025a0  \"}.lst-kix_3ijtgab9c43t-2>li:before{content:\"\" counter(lst-ctn-kix_3ijtgab9c43t-2,lower-roman) \". \"}.lst-kix_ic892s5mka4i-0>li:before{content:\"\\0025cf  \"}.lst-kix_8dfnd83tlbfx-7>li:before{content:\"\\0025cb  \"}.lst-kix_kemf987rc70g-7>li{counter-increment:lst-ctn-kix_kemf987rc70g-7}ol.lst-kix_7723domhz6s-7{list-style-type:none}ol.lst-kix_7723domhz6s-8{list-style-type:none}.lst-kix_2fb970x3axzy-3>li:before{content:\"\\0025cf  \"}.lst-kix_a00nrl7rzl2d-3>li:before{content:\"\\0025cf  \"}ol.lst-kix_7723domhz6s-3{list-style-type:none}.lst-kix_kkrhwvcem69f-6>li:before{content:\"\\0025cf  \"}ol.lst-kix_7723domhz6s-4{list-style-type:none}ol.lst-kix_7723domhz6s-5{list-style-type:none}ol.lst-kix_7723domhz6s-6{list-style-type:none}ol.lst-kix_7723domhz6s-0{list-style-type:none}.lst-kix_kemf987rc70g-6>li:before{content:\"\" counter(lst-ctn-kix_kemf987rc70g-6,decimal) \". \"}ol.lst-kix_7723domhz6s-1{list-style-type:none}.lst-kix_bxdrj678weu5-7>li:before{content:\"\\0025cb  \"}ol.lst-kix_7723domhz6s-2{list-style-type:none}.lst-kix_o78sdnvfmv87-4>li:before{content:\"\\0025cb  \"}.lst-kix_pnoktiooohwx-2>li:before{content:\"\\0025a0  \"}.lst-kix_6ma6f2xy3e3g-7>li:before{content:\"\" counter(lst-ctn-kix_6ma6f2xy3e3g-7,lower-latin) \". \"}.lst-kix_kggs8ld7pwdp-2>li:before{content:\"\\0025a0  \"}.lst-kix_eocx2mafq4hg-2>li:before{content:\"\\0025a0  \"}.lst-kix_jgz87z6a20i1-2>li:before{content:\"\\0025a0  \"}.lst-kix_ea7vdfpy17y5-6>li:before{content:\"\\0025cf  \"}.lst-kix_6ma6f2xy3e3g-7>li{counter-increment:lst-ctn-kix_6ma6f2xy3e3g-7}ul.lst-kix_eyfwt34ig0rx-0{list-style-type:none}.lst-kix_2neq6elh5tfy-2>li:before{content:\"\\0025a0  \"}.lst-kix_epwdw4jvok0v-2>li:before{content:\"\" counter(lst-ctn-kix_epwdw4jvok0v-2,lower-roman) \". \"}.lst-kix_usvepcn8dumr-5>li:before{content:\"\\0025a0  \"}ul.lst-kix_eyfwt34ig0rx-8{list-style-type:none}ul.lst-kix_eyfwt34ig0rx-7{list-style-type:none}.lst-kix_r4elz4xy30bx-2>li:before{content:\"\\0025a0  \"}ul.lst-kix_eyfwt34ig0rx-6{list-style-type:none}ul.lst-kix_eyfwt34ig0rx-5{list-style-type:none}ul.lst-kix_eyfwt34ig0rx-4{list-style-type:none}ul.lst-kix_eyfwt34ig0rx-3{list-style-type:none}ul.lst-kix_eyfwt34ig0rx-2{list-style-type:none}ul.lst-kix_eyfwt34ig0rx-1{list-style-type:none}ol{margin:0;padding:0}table td,table th{padding:0}.c19{margin-left:36pt;padding-top:3pt;padding-bottom:0pt;line-height:1.0;orphans:2;widows:2;text-align:justify}.c27{margin-left:18pt;padding-top:3pt;padding-bottom:0pt;line-height:1.0;orphans:2;widows:2;text-align:justify}.c1{color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:10pt;font-family:\"Arial\";font-style:normal}.c38{margin-left:18pt;padding-top:3pt;padding-bottom:4pt;line-height:1.0;orphans:2;widows:2;text-align:justify}.c18{padding-top:8pt;padding-bottom:0pt;line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:justify}.c28{padding-top:10pt;padding-bottom:0pt;line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:justify}.c10{padding-top:0pt;padding-bottom:0pt;line-height:1.15;orphans:2;widows:2;text-align:center}.c40{padding-top:10pt;padding-bottom:0pt;line-height:1.0;orphans:2;widows:2;text-align:justify}.c13{padding-top:0pt;padding-bottom:0pt;line-height:1.15;orphans:2;widows:2;text-align:left}.c0{padding-top:0pt;padding-bottom:0pt;line-height:1.15;orphans:2;widows:2;text-align:justify}.c30{padding-top:4pt;padding-bottom:0pt;line-height:1.0;orphans:2;widows:2;text-align:justify}.c4{color:#ffffff;font-weight:700;text-decoration:none;vertical-align:baseline;font-family:\"Arial\";font-style:normal}.c8{text-decoration-skip-ink:none;-webkit-text-decoration-skip:none;color:#1155cc;text-decoration:underline}.c9{font-weight:400;vertical-align:baseline;font-family:\"Arial\";font-style:normal}.c15{text-decoration:none;vertical-align:baseline;font-style:normal}.c24{color:#000000;font-size:13pt;font-family:\"Trebuchet MS\"}.c20{color:#666666;font-size:12pt;font-family:\"Trebuchet MS\"}.c39{color:#000000;font-size:16pt;font-family:\"Trebuchet MS\"}.c37{margin-left:72pt;padding-left:0pt}.c5{color:#0000ff;font-weight:700}.c22{padding:0;margin:0}.c11{color:inherit;text-decoration:inherit}.c36{max-width:511.2pt;padding:50.4pt 50.4pt 50.4pt 50.4pt}.c14{color:#0000ff;font-weight:400}.c17{margin-left:36pt;padding-left:0pt}.c29{color:#000000;font-family:\"Arial\"}.c25{color:#b7b7b7;font-size:9pt}.c33{font-weight:400;vertical-align:baseline}.c31{background-color:#ffffff}.c6{font-family:\"Consolas\"}.c23{text-decoration:none}.c35{font-weight:400}.c34{vertical-align:baseline}.c26{color:#183247}.c3{font-size:10pt}.c32{font-family:\"Arial\"}.c16{color:#0000ff}.c21{color:#ffffff}.c12{font-style:italic}.c2{height:10pt}.c7{font-weight:700}.title{padding-top:0pt;color:#000000;font-size:21pt;padding-bottom:0pt;font-family:\"Trebuchet MS\";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:justify}.subtitle{padding-top:0pt;color:#666666;font-size:13pt;padding-bottom:10pt;font-family:\"Trebuchet MS\";line-height:1.15;page-break-after:avoid;font-style:italic;orphans:2;widows:2;text-align:justify}li{color:#000000;font-size:10pt;font-family:\"Arial\"}p{margin:0;color:#000000;font-size:10pt;font-family:\"Arial\"}h1{padding-top:10pt;color:#000000;font-size:16pt;padding-bottom:0pt;font-family:\"Trebuchet MS\";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:justify}h2{padding-top:10pt;color:#000000;font-weight:700;font-size:13pt;padding-bottom:0pt;font-family:\"Trebuchet MS\";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:justify}h3{padding-top:8pt;color:#666666;font-weight:700;font-size:12pt;padding-bottom:0pt;font-family:\"Trebuchet MS\";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:justify}h4{padding-top:8pt;-webkit-text-decoration-skip:none;color:#666666;text-decoration:underline;font-size:11pt;padding-bottom:0pt;line-height:1.15;page-break-after:avoid;text-decoration-skip-ink:none;font-family:\"Trebuchet MS\";orphans:2;widows:2;text-align:justify}h5{padding-top:8pt;color:#666666;font-size:11pt;padding-bottom:0pt;font-family:\"Trebuchet MS\";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:justify}h6{padding-top:8pt;color:#666666;font-size:11pt;padding-bottom:0pt;font-family:\"Trebuchet MS\";line-height:1.15;page-break-after:avoid;font-style:italic;orphans:2;widows:2;text-align:justify}<\/style><\/head><body class=\"c31 c36\"><p class=\"c0\"><span class=\"c7\">Jump to:<\/span><\/p><p class=\"c30\"><span class=\"c8 c9 c3\"><a class=\"c11\" href=\"#hp43ovfsvgw6l\">Part 1. Introduction<\/a><\/span><\/p><p class=\"c27\"><span class=\"c8 c9 c3\"><a class=\"c11\" href=\"#hft2t7dqplfhj\">1.1. An overview of scripting<\/a><\/span><\/p><p class=\"c19\"><span class=\"c8 c9 c3\"><a class=\"c11\" href=\"#hl3mziqly9rin\">1.1.1. Boolean operations<\/a><\/span><\/p><p class=\"c19\"><span class=\"c8 c9 c3\"><a class=\"c11\" href=\"#hy20c3osdp6m8\">1.1.2. Variables and operations<\/a><\/span><\/p><p class=\"c19\"><span class=\"c8 c9 c3\"><a class=\"c11\" href=\"#hxkkfewstie94\">1.1.3. Special variables<\/a><\/span><\/p><p class=\"c27\"><span class=\"c8 c9 c3\"><a class=\"c11\" href=\"#hi6cc0pcnoqsg\">1.2. Dialogue and Group nodes<\/a><\/span><\/p><p class=\"c19\"><span class=\"c8 c9 c3\"><a class=\"c11\" href=\"#hal0tdnyva8c5\">1.2.1. Conversation node<\/a><\/span><\/p><p class=\"c19\"><span class=\"c8 c9 c3\"><a class=\"c11\" href=\"#hy71txy7gl0t4\">1.2.2. Dialogue nodes<\/a><\/span><\/p><p class=\"c19\"><span class=\"c8 c9 c3\"><a class=\"c11\" href=\"#hcn4re9lzxvsu\">1.2.3. Group nodes<\/a><\/span><\/p><p class=\"c19\"><span class=\"c8 c9 c3\"><a class=\"c11\" href=\"#hsb16aecdz5fm\">1.2.4. False actions<\/a><\/span><\/p><p class=\"c27\"><span class=\"c8 c9 c3\"><a class=\"c11\" href=\"#ht7z1efh0e51e\">1.3 Custom Asset Fields (CAFs)<\/a><\/span><\/p><p class=\"c19\"><span class=\"c8 c3 c9\"><a class=\"c11\" href=\"#hqquyk1kixa35\">1.3.1. Voice<\/a><\/span><\/p><p class=\"c19\"><span class=\"c8 c9 c3\"><a class=\"c11\" href=\"#hkq0d3anlhezp\">1.3.2. Voice pitch\/rate\/volume<\/a><\/span><\/p><p class=\"c19\"><span class=\"c8 c9 c3\"><a class=\"c11\" href=\"#hmqfgitvih7ah\">1.3.3. Autoplay<\/a><\/span><\/p><p class=\"c19\"><span class=\"c8 c9 c3\"><a class=\"c11\" href=\"#hozwtp7idka4y\">1.3.4. Location<\/a><\/span><\/p><p class=\"c19\"><span class=\"c8 c9 c3\"><a class=\"c11\" href=\"#hqnx5yewh1isg\">1.3.5. Choice caption<\/a><\/span><\/p><p class=\"c27\"><span class=\"c8\"><a class=\"c11\" href=\"#hifn636x9y7t5\">1.4. Managing large dialogue trees<\/a><\/span><\/p><p class=\"c40\"><span class=\"c8 c9 c3\"><a class=\"c11\" href=\"#hgzsbgrmue9fh\">Part 2. The Cookbook<\/a><\/span><\/p><p class=\"c27\"><span class=\"c8 c9 c3\"><a class=\"c11\" href=\"#hwe661jorw6nm\">2.1. The &quot;Start&quot; node<\/a><\/span><\/p><p class=\"c19\"><span class=\"c8 c9 c3\"><a class=\"c11\" href=\"#hblgcq8onn55w\">2.1.1. Only showing the &ldquo;Start&rdquo; node the first time<\/a><\/span><\/p><p class=\"c27\"><span class=\"c8 c9 c3\"><a class=\"c11\" href=\"#hlr4ma3ex93t9\">2.2. The &quot;Replay&quot; node<\/a><\/span><\/p><p class=\"c27\"><span class=\"c8 c9 c3\"><a class=\"c11\" href=\"#hsdwnbba2gee1\">2.3. Loops<\/a><\/span><\/p><p class=\"c27\"><span class=\"c8 c9 c3\"><a class=\"c11\" href=\"#hu35w6pex984c\">2.4. Assigning and using variables<\/a><\/span><\/p><p class=\"c27\"><span class=\"c8 c9 c3\"><a class=\"c11\" href=\"#h97sja89buzxt\">2.5. Using variables in dialogue<\/a><\/span><\/p><p class=\"c27\"><span class=\"c8 c9 c3\"><a class=\"c11\" href=\"#h90mjy6bbr1nf\">2.6. Random variables<\/a><\/span><\/p><p class=\"c27\"><span class=\"c8 c9 c3\"><a class=\"c11\" href=\"#h2x1ywkk5xeu0\">2.7. User input<\/a><\/span><\/p><p class=\"c27\"><span class=\"c8 c9 c3\"><a class=\"c11\" href=\"#hmwx8r43zxdg\">2.8. Hiding the language bar<\/a><\/span><\/p><p class=\"c38\"><span class=\"c8 c9 c3\"><a class=\"c11\" href=\"#h2yhug0yx8lem\">2.9 Using icons in choices<\/a><\/span><\/p><h1 class=\"c28\" id=\"hp43ovfsvgw6l\"><span class=\"c15 c35 c39\">Part 1. Introduction<\/span><\/h1><p class=\"c0\"><span class=\"c1\">The real power of ChatMapper can only be harnessed through the use of scripting. Specifically, Lua (for ChatMapper) and JavaScript (for HTML5 previews\/online publishing).<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span class=\"c3\">Now, since we already hear some of you running for the nearest fire exit, let me say one thing: <\/span><span class=\"c3 c7\">don&rsquo;t be afraid!<\/span><span class=\"c1\">&nbsp;The building blocks of scripting in ChatMapper are really easy to learn. Sure you can use them creatively to do amazing things, but you will see from even the more advanced examples that it&rsquo;s child&rsquo;s play, nothing that requires arcane programming knowledge, so don&rsquo;t you worry!<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span class=\"c1\">Before we begin, let&rsquo;s take a look at the ChatMapper window as a whole, and name a few things.<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c10\"><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 624.00px; height: 350.67px;\"><img decoding=\"async\" alt=\"Fig.1.1.jpg\" src=\"https:\/\/lh5.googleusercontent.com\/kJGP5fGQfIKmOL5db7YqydGP0PlxS3k5wEo7j0ZnnT32CHyCYhpp5zqxJUJG2UtIFEE_OaZxaPVMmLmRwqkts29SX5Lgz3a-w5Fu4YqW66cNdOyInv9MTxMOjRDF-sXSTQ\" style=\"width: 624.00px; height: 351.00px; margin-left: 0.00px; margin-top: -0.17px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><\/p><p class=\"c10\"><span class=\"c9 c25 c23\">Fig.1.1 &#8211; An overview of the ChatMapper interface.<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><ol class=\"c22 lst-kix_kemf987rc70g-0 start\" start=\"1\"><li class=\"c0 c17 li-bullet-0\"><span class=\"c3 c7\">The main canvas.<\/span><span class=\"c3\">&nbsp;The nodes of a conversation will be displayed here. If you open more than one conversation, additional tabs will appear.<\/span><\/li><li class=\"c0 c17 li-bullet-0\"><span class=\"c3 c7\">Assets:<\/span><span class=\"c3\">&nbsp;Every actor, item, location and variable is saved under <\/span><span>&quot;<\/span><span class=\"c3\">Assets<\/span><span>&quot;<\/span><span class=\"c3\">, while conversations are saved in the other tab, <\/span><span>&quot;<\/span><span class=\"c3\">Conversations<\/span><span>&quot;<\/span><span class=\"c3\">.<\/span><span class=\"c3 c7\">&nbsp;<\/span><\/li><li class=\"c0 c17 li-bullet-0\"><span class=\"c3 c7\">Scripts and conditions:<\/span><span class=\"c3\">&nbsp;Most things related to scripting go in one of these two panels.<\/span><\/li><li class=\"c0 c17 li-bullet-0\"><span class=\"c3 c7\">Overview and properties: <\/span><span class=\"c3\">Overview shows an image of the whole conversation, with a handle which you can drag and drop to move quickly between areas of bigger conversations. The properties panel is unique for each thing you can click on (actors, dialogue nodes, conversations, items, locations, etc.), and contains &#8211; you guessed it &#8211; the selected object&rsquo;s properties.<\/span><\/li><li class=\"c0 c17 li-bullet-0\"><span class=\"c3 c7\">Menus and shortcuts:<\/span><span class=\"c1\">&nbsp;pretty self explanatory.<\/span><\/li><\/ol><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span class=\"c1\">We&rsquo;ll be referring to these areas many times in this document, so you can use this image as a general reference.<\/span><\/p><p class=\"c0\"><span class=\"c3\">As an aside, please keep in mind that while we will <\/span><span>explain the basic<\/span><span class=\"c1\">&nbsp;functions of ChatMapper briefly, this is only intended as a refresher: We assume you have opened ChatMapper at least once, and played around a bit (even if you did nothing complex).<\/span><\/p><h2 class=\"c28\" id=\"hft2t7dqplfhj\"><span class=\"c15 c24 c7\">1.1. An overview of scripting<\/span><\/h2><p class=\"c0\"><span class=\"c3\">At the highest level, scripting in ChatMapper can be divided in two parts: <\/span><span>&quot;<\/span><span class=\"c3\">Scripts<\/span><span>&quot;<\/span><span class=\"c3\">&nbsp;and <\/span><span>&quot;<\/span><span class=\"c3\">Conditions<\/span><span>&quot;<\/span><span class=\"c1\">.<\/span><\/p><p class=\"c0 c2\"><span class=\"c15 c29 c3 c7\"><\/span><\/p><ul class=\"c22 lst-kix_u6xgsexoo9sy-0 start\"><li class=\"c0 c17 li-bullet-0\"><span class=\"c3 c7\">Scripts <\/span><span class=\"c3\">are things you want to do. Assign or increment a variable, calculate something, anything <\/span><span class=\"c3 c12\">active. <\/span><span class=\"c3\">When you reach a dialogue node, everything in the <\/span><span>&quot;<\/span><span class=\"c3\">Script Editor<\/span><span>&quot;<\/span><span class=\"c3\">&nbsp;tab will be executed. They are by default on the left side of the <\/span><span>&quot;<\/span><span class=\"c3\">Scripts and conditions<\/span><span>&quot;<\/span><span class=\"c3\">&nbsp;area of the interface.<\/span><\/li><li class=\"c0 c17 li-bullet-0\"><span class=\"c3 c7\">Conditions<\/span><span class=\"c3\">, on the other hand, are evaluated before a node is displayed, <\/span><span>and based on the<\/span><span class=\"c3\">&nbsp;result of that evaluation <\/span><span>t<\/span><span class=\"c3\">he node will be visualized<\/span><span>, or not<\/span><span class=\"c3\">. They are by default on the right side of the <\/span><span>&quot;<\/span><span class=\"c3\">Scripts and conditions<\/span><span>&quot;<\/span><span class=\"c1\">&nbsp;area of the interface.<\/span><\/li><\/ul><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c10\"><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 681.60px; height: 149.33px;\"><img decoding=\"async\" alt=\"Fig.1.2.jpg\" src=\"https:\/\/lh5.googleusercontent.com\/4BdfdH9kTbudFPEMZGMJplGLUQxRIvdPq4qO3fuDy5WXbgDt3fRXrqRXhkiu2hF2iYVVZjjBrluWs9_l36kuTEMm_9MxbswNgNU0H_X9L2Ws3O_h4klBq0A-I2Xmx4ZPKQ\" style=\"width: 683.03px; height: 149.33px; margin-left: -0.71px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><\/p><p class=\"c10\"><span class=\"c9 c25 c23\">Fig.1.2 &#8211; The &quot;Scripts&quot; and &quot;Conditions&quot; panels, with some example expressions.<\/span><\/p><h3 class=\"c18\" id=\"hl3mziqly9rin\"><span class=\"c15 c20 c7\">1.1.1. Boolean operations<\/span><\/h3><p class=\"c0\"><span class=\"c1\">There are a few things going on in the image. First of all, when the node is reached, the expression in Conditions is evaluated.<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span class=\"c3\">That type of expression, which is either <\/span><span class=\"c3 c7\">TRUE <\/span><span class=\"c3\">or <\/span><span class=\"c3 c7\">FALSE<\/span><span class=\"c1\">, is called a boolean expression. An example to understand this better would be:<\/span><\/p><p class=\"c10 c2\"><span class=\"c29 c33 c23 c3 c12\"><\/span><\/p><p class=\"c10\"><span class=\"c12\">&quot;<\/span><span class=\"c3 c12\">Are apples the same as oranges?<\/span><span class=\"c12\">&quot;<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span class=\"c3\">Since apples and oranges are different, the answer is <\/span><span class=\"c3 c7\">no. <\/span><span class=\"c3\">In boolean terms, the statement is <\/span><span class=\"c3 c7\">false.<\/span><\/p><p class=\"c10 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span class=\"c3\">To test if two things are <\/span><span class=\"c3 c7\">equal<\/span><span class=\"c3\">, you use the <\/span><span class=\"c14 c6\">==<\/span><span class=\"c3 c16\">&nbsp;<\/span><span class=\"c3\">operator, while the operator <\/span><span class=\"c14 c6\">~=<\/span><span class=\"c3 c16\">&nbsp;<\/span><span class=\"c3\">means you&rsquo;re testing if two things are <\/span><span class=\"c3 c7\">different<\/span><span class=\"c1\">. So to recap,<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c10\"><span class=\"c3 c16\">apples == oranges &rarr; <\/span><span class=\"c14 c6\">FALSE<\/span><span class=\"c6 c35\">&nbsp;<\/span><span class=\"c3\">(it&rsquo;s <\/span><span class=\"c3 c7\">false <\/span><span class=\"c3\">that are apples <\/span><span class=\"c3 c7\">the same<\/span><span class=\"c1\">&nbsp;as oranges)<\/span><\/p><p class=\"c10\"><span class=\"c3 c16\">apples ~= oranges &rarr; <\/span><span class=\"c14 c6\">TRUE<\/span><span class=\"c6 c35\">&nbsp;<\/span><span class=\"c3\">(it&rsquo;s <\/span><span class=\"c3 c7\">true <\/span><span class=\"c3\">that<\/span><span class=\"c3 c7\">&nbsp;<\/span><span class=\"c3\">apples are <\/span><span class=\"c3 c7\">different <\/span><span class=\"c1\">from oranges)<\/span><\/p><p class=\"c0 c2\"><span class=\"c15 c3 c7 c29\"><\/span><\/p><p class=\"c0\"><span class=\"c1\">Let&rsquo;s step things up a notch, with the example in the image.<\/span><\/p><p class=\"c10 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c10\"><span class=\"c3 c12\">Is<\/span><span class=\"c3 c12 c16\">&nbsp;<\/span><span class=\"c14 c6 c12\">1+1 &gt; 2<\/span><span class=\"c29 c33 c23 c3 c12\">?<\/span><\/p><p class=\"c13\"><span class=\"c3\">2 is not higher than 2, so the answer is <\/span><span class=\"c3 c7\">no. <\/span><span class=\"c3\">Therefore the expression evaluates to <\/span><span class=\"c15 c29 c3 c7\">FALSE.<\/span><\/p><p class=\"c13 c2\"><span class=\"c15 c29 c3 c7\"><\/span><\/p><p class=\"c10\"><span class=\"c3 c12\">Is<\/span><span class=\"c3 c16 c12\">&nbsp;<\/span><span class=\"c14 c6 c12\">1\/2 &lt; 3<\/span><span class=\"c3 c16 c12\">?<\/span><\/p><p class=\"c13\"><span class=\"c3\">0.5 is lower than 3, so the answer is <\/span><span class=\"c3 c7\">yes.<\/span><span class=\"c3\">&nbsp;Therefore the expression evaluates to <\/span><span class=\"c3 c7\">TRUE.<\/span><span class=\"c1\">&nbsp;<\/span><\/p><p class=\"c10 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span class=\"c3\">The <\/span><span class=\"c14 c6\">or<\/span><span class=\"c5 c3\">&nbsp;<\/span><span class=\"c3\">in the middle unites the two expressions, meaning that for the node to be visualized, either the first <\/span><span class=\"c3 c7\">or<\/span><span class=\"c1\">&nbsp;the second expression must be true. <\/span><\/p><p class=\"c0\"><span class=\"c3\">In programming this is called boolean logic. You can sum it up to two operators, <\/span><span class=\"c14 c6\">and <\/span><span class=\"c3\">and <\/span><span class=\"c14 c6\">or<\/span><span class=\"c1\">:<\/span><\/p><p class=\"c13 c2\"><span class=\"c15 c5 c3 c32\"><\/span><\/p><ul class=\"c22 lst-kix_xwgnvks8cx4b-0 start\"><li class=\"c13 c17 li-bullet-0\"><span class=\"c14 c6\">and<\/span><span class=\"c5 c3\">:<\/span><span class=\"c3\">&nbsp;the condition is <\/span><span class=\"c3 c7\">true only if both expressions are true<\/span><span class=\"c3\">. It&rsquo;s false in all other cases.<\/span><\/li><li class=\"c13 c17 li-bullet-0\"><span class=\"c14 c6\">or<\/span><span class=\"c3 c5\">:<\/span><span class=\"c3\">&nbsp;the condition is <\/span><span class=\"c3 c7\">true if one or both expressions are true<\/span><span class=\"c1\">. If they&rsquo;re both false, it&rsquo;s false. <\/span><\/li><\/ul><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c13\"><span class=\"c3\">Will the node in the image, then, be displayed? <\/span><span class=\"c3 c7\">Yes<\/span><span class=\"c3\">, because the condition is an <\/span><span class=\"c14 c6\">or<\/span><span class=\"c1\">, which means only one of the two expressions must be true (in this case, the second one).<\/span><\/p><p class=\"c13 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c13\"><span class=\"c3\">The operators you use to evaluate these conditions are the usual mathematical ones: <\/span><span class=\"c14 c6\">&gt;<\/span><span class=\"c3\">&nbsp;(more than),<\/span><span class=\"c14 c6\">&nbsp;&gt;=<\/span><span class=\"c3\">&nbsp;(more than or equal to),<\/span><span class=\"c14 c6\">&nbsp;&lt;<\/span><span class=\"c3 c16\">&nbsp;<\/span><span class=\"c3\">(less than),<\/span><span class=\"c14 c6\">&nbsp;&lt;=<\/span><span class=\"c3 c16\">&nbsp;<\/span><span class=\"c3\">(less than or equal to), <\/span><span class=\"c14 c6\">==<\/span><span class=\"c3 c16\">&nbsp;<\/span><span class=\"c3\">(equal),<\/span><span class=\"c14 c6\">&nbsp;~=<\/span><span class=\"c3 c16\">&nbsp;<\/span><span class=\"c1\">(different).<\/span><\/p><h3 class=\"c18\" id=\"hy20c3osdp6m8\"><span class=\"c15 c20 c7\">1.1.2. Variables and operations<\/span><\/h3><p class=\"c0\"><span>The expression in the Scripting panel is straightforward too: it is assigning a variable called <\/span><span class=\"c12\">result<\/span><span>&nbsp;the value of 1 + 1. From then on, whenever we access <\/span><span class=\"c12\">result<\/span><span class=\"c1\">&nbsp;its value will be 2.<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span class=\"c1\">How do you create a variable? You can do that by clicking the gear icon in the Assets pane under &quot;Variables&quot;, and select &quot;New User Variable&quot;, or by pressing CTRL + SHIFT + U. &nbsp;You will then be able to add a name (result in the earlier example), an initial value, and if you want a description of what the variable does.<\/span><\/p><p class=\"c0\"><span class=\"c1\">A type for the variable will automatically be selected based on the initial value:<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><ul class=\"c22 lst-kix_r4elz4xy30bx-0 start\"><li class=\"c0 c17 li-bullet-0\"><span class=\"c7\">Text <\/span><span class=\"c1\">if the field is left empty or if it contains a letter, a word or a sentence.<\/span><\/li><li class=\"c0 c17 li-bullet-0\"><span class=\"c7\">Number <\/span><span class=\"c1\">if the initial value is a number.<\/span><\/li><li class=\"c0 c17 li-bullet-0\"><span class=\"c7\">Boolean <\/span><span class=\"c1\">if the initial value given is true or false.<\/span><\/li><\/ul><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span>When the variable has been created, you can use it in scripts or conditions by using <\/span><span class=\"c14 c6\">Variable[&quot;name&quot;]<\/span><span>, where <\/span><span class=\"c12\">name<\/span><span class=\"c1\">&nbsp;is of course the name of the variable.<\/span><\/p><p class=\"c0\"><span class=\"c1\">A few simple things you can do with variables:<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><ul class=\"c22 lst-kix_eocx2mafq4hg-0 start\"><li class=\"c0 c17 li-bullet-0\"><span class=\"c1\">Create a &quot;counter&quot; by incrementing a variable each time something happens (a note for programmers: there&rsquo;s no ++ or &#8212; operator in Lua!)<\/span><\/li><\/ul><p class=\"c10\"><span class=\"c14 c6\">Variable[&quot;counter&quot;] = Variable[&quot;counter&quot;] + 1<\/span><\/p><p class=\"c10 c2\"><span class=\"c9 c23 c3 c16\"><\/span><\/p><ul class=\"c22 lst-kix_dn2s4tujbodr-0 start\"><li class=\"c13 c17 li-bullet-0\"><span class=\"c1\">Check if two variables are the same<\/span><\/li><\/ul><p class=\"c10\"><span class=\"c6 c14\">Variable[&quot;var1&quot;] == Variable[&quot;var2&quot;]<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><ul class=\"c22 lst-kix_ic892s5mka4i-0 start\"><li class=\"c0 c17 li-bullet-0\"><span class=\"c1\">Use them in operations<\/span><\/li><\/ul><p class=\"c10\"><span class=\"c14 c6\">Variable[&quot;result&quot;] = Variable[&quot;operand 1&quot;] + Variable[&quot;operand 2&quot;]<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><h3 class=\"c18\" id=\"hxkkfewstie94\"><span class=\"c15 c20 c7\">1.1.3. Special variables<\/span><\/h3><p class=\"c0\"><span class=\"c1\">There are a few &quot;specialized&quot; variables, each referring to a certain type of asset:<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><ul class=\"c22 lst-kix_rj882oy1yb27-0 start\"><li class=\"c0 c17 li-bullet-0\"><span class=\"c7\">Actor:<\/span><span>&nbsp;<\/span><span class=\"c14 c6\">Actor[&quot;name&quot;]<\/span><\/li><li class=\"c0 c17 li-bullet-0\"><span class=\"c7\">Item:<\/span><span class=\"c14 c6\">&nbsp;Item[&quot;name&quot;]<\/span><\/li><li class=\"c0 c17 li-bullet-0\"><span class=\"c7\">Location:<\/span><span class=\"c5\">&nbsp;<\/span><span class=\"c14 c6\">Location[&quot;name&quot;]<\/span><\/li><li class=\"c0 c17 li-bullet-0\"><span class=\"c7\">Conversation: <\/span><span class=\"c15 c14 c6 c3\">Conversation[id]<\/span><\/li><li class=\"c0 c17 li-bullet-0\"><span class=\"c7\">D<\/span><span class=\"c7\">ialog:<\/span><span>&nbsp;<\/span><span class=\"c14 c6\">Dialog[id]<\/span><\/li><\/ul><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span class=\"c1\">Note that Conversation and Dialog use IDs as identifiers, not names. The ID of a conversation can be found in the &quot;Conversations&quot; tab, while the ID of a node is displayed on the upper left corner of each node<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c10\"><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 593.00px; height: 234.00px;\"><img decoding=\"async\" alt=\"Fig.1.3.jpg\" src=\"https:\/\/lh5.googleusercontent.com\/epyMwIEL8LvDdGNOYhZg6hgUViS5CtEQ510vEnB6L-SBBshQZ203ocoA_tU_zrqfr2VNp_5zHd1cQAKtdfbSqkgtz46FYefkUweMKFwayG3JsglJVB1a7A8Zg4X9DnVwXA\" style=\"width: 593.00px; height: 234.00px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><\/p><p class=\"c10\"><span class=\"c25\">Fig.1.3 &#8211; Conversation ID and Dialog ID are circled in red<\/span><\/p><h2 class=\"c28\" id=\"hi6cc0pcnoqsg\"><span class=\"c15 c24 c7\">1.2. Dialogue and Group nodes<\/span><\/h2><p class=\"c0\"><span class=\"c1\">Dialogue and group nodes are the bread and butter of Chat Mapper. They are the main elements of a conversation: the first holding all information, the latter as an organizational aid. There is also a third type of node, a conversation node (the root node at the beginning of every conversation), but there&rsquo;s just one for each conversation and it&rsquo;s put there automatically, so you don&rsquo;t really need to worry about it.<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c10\"><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 269.00px; height: 363.00px;\"><img decoding=\"async\" alt=\"Fig.1.4.jpg\" src=\"https:\/\/lh4.googleusercontent.com\/-aTTztM3zzC0DQDZ46mYZ0KKJGoZM_3aBbcydw_Qk_E86GeMYP4XnZqonSs6RxFzKRJW1hrGA_fkdwc9BySZ1_qZ78py0nGQgiWpjNTIiaLWBC4RMfY3W7JEC7hVPYThFQ\" style=\"width: 269.00px; height: 363.00px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><\/p><p class=\"c10\"><span class=\"c25\">Fig.1.4 &#8211; Conversation, Dialogue and Group nodes<\/span><\/p><p class=\"c0\"><span class=\"c1\">You can colour any node by clicking one of the 7 colored circles in the menu bar, right above the main canvas.<\/span><\/p><h3 class=\"c18\" id=\"hal0tdnyva8c5\"><span class=\"c15 c20 c7\">1.2.1. Conversation node<\/span><\/h3><p class=\"c0\"><span class=\"c1\">The conversation node displays the title of the conversation (&quot;New Conversation&quot; by default), and the name of the actor and conversant (in this case &quot;New Player&quot; and &quot;New NPC&quot;).<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c10\"><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 236.00px; height: 114.00px;\"><img decoding=\"async\" alt=\"Fig.1.5.jpg\" src=\"https:\/\/lh5.googleusercontent.com\/6Pu3NHp0P7f4kUygFt74GdDBcqc8PdrANVkiw-Ony94kSmIFeG94mHXKp4O04AVKtGFYvCGPBNKq391qY5nLG6bcsPAWNbgFJaqEWa1Umubcmo73Dg2K7vsSWXEOGiqEkg\" style=\"width: 236.00px; height: 114.00px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><\/p><p class=\"c10\"><span class=\"c9 c25 c23\">Fig.1.5 &#8211; A conversation node<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span class=\"c7\">The green &quot;plus&quot; button (&quot;New Child Dialog&quot;)<\/span><span class=\"c1\">&nbsp;will create a dialogue node, and parent it to the root.<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span class=\"c7\">The &quot;chain&quot; button (&quot;Link to Dialog&quot;)<\/span><span class=\"c1\">&nbsp;will parent the next node you click on to this node, creating a link (an arrow) between them, going from the root to the new child node.<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span>You can also fold the entire conversation tree by clicking the <\/span><span class=\"c7\">&quot;-&quot; button<\/span><span class=\"c1\">&nbsp;in the lower right of the node.<\/span><\/p><p class=\"c0\"><span class=\"c1\">That&rsquo;s it. See? We told you they were not complicated!<\/span><\/p><h3 class=\"c18\" id=\"hy71txy7gl0t4\"><span class=\"c15 c20 c7\">1.2.2. Dialogue nodes<\/span><\/h3><p class=\"c0\"><span class=\"c1\">Dialogue nodes contain all the important information in a conversation. <\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c10\"><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 250.00px; height: 140.00px;\"><img decoding=\"async\" alt=\"Fig.1.6.jpg\" src=\"https:\/\/lh4.googleusercontent.com\/UEtSYdpW5kghbUjWQoHMLneuNSbg1m-ain5fCGlVn8i0iIM9uMfk4LZmAVQW1Wcm1l6UXKjOudXPR98UNKLeOV9EVUxbtoL55wk1KfnCT37o9lW6eckhLFieZgFTf_B8Ow\" style=\"width: 250.00px; height: 140.00px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><\/p><p class=\"c10\"><span class=\"c25\">Fig.1.6 &#8211; A dialogue node<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span class=\"c1\">You can think of them as an interaction in the back-and-forth of a conversation. In the case above, the actor &quot;New NPC&quot; is saying &quot;Hello!&quot; to their conversant, &quot;New Player&quot;. <\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span>Functionality-wise, dialogue nodes have an additional button, <\/span><span class=\"c7\">a<\/span><span>&nbsp;<\/span><span class=\"c7\">folder with a green plus (&quot;New Child Group&quot;)<\/span><span class=\"c1\">: this creates a new group node as a child.<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span class=\"c1\">There are a few standard parameters that are fundamental to every demo:<\/span><\/p><ul class=\"c22 lst-kix_2fb970x3axzy-0 start\"><li class=\"c0 c17 li-bullet-0\"><span class=\"c7\">Actor:<\/span><span class=\"c1\">&nbsp;the actor who is speaking in the node. Their name will appear before the sentence, so you should make sure that the correct value is assigned to this field.<\/span><\/li><li class=\"c0 c17 li-bullet-0\"><span class=\"c7\">Menu Text:<\/span><span class=\"c1\">&nbsp;in the example image, &quot;[f]Choice&quot; is the menu text. this is the text that will appear on the buttons when the player is presented in a choice. Take the below image as an example: the text in this field appears, in the HTML5 preview, as the text on the two choice buttons.<\/span><\/li><\/ul><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 681.60px; height: 218.67px;\"><img decoding=\"async\" alt=\"Fig.1.7.jpg\" src=\"https:\/\/lh5.googleusercontent.com\/02RxE1ENW9rX-sXyKOEa1NKGOKf7QgX-ZuVrKqte9u6e9LjjnCuxTQBL3etBETXaJfqvfYnmUJdbKovJi9I3j-4vv-JF8xj_D1tmD-K_V4Xt4OT-nmJriv1DNoPel3VRAg\" style=\"width: 681.60px; height: 219.18px; margin-left: 0.00px; margin-top: -0.26px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><\/p><p class=\"c10\"><span class=\"c25\">Fig.1.7 &#8211; Representation of menu text in the HTML5 preview.<\/span><\/p><p class=\"c10 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span>Usually, a single choice will be selected automatically. To force ChatMapper to visualize it, you can add <\/span><span class=\"c14 c6\">[f] <\/span><span class=\"c1\">before the menu text.<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><ul class=\"c22 lst-kix_7c0yesl7385o-0 start\"><li class=\"c0 c17 li-bullet-0\"><span class=\"c7\">Dialogue<\/span><span>: the text that will be spoken by the character<\/span><\/li><\/ul><p class=\"c0\"><span>Those are the main features of Dialogue nodes. There are also two small circles on the upper left corner of the node: the small pink one with an <\/span><span class=\"c7\">S<\/span><span>&nbsp;indicates that the node contains a script, while the blue one with a <\/span><span class=\"c7\">C<\/span><span class=\"c1\">&nbsp;indicates that there is a condition.<\/span><\/p><h3 class=\"c18\" id=\"hcn4re9lzxvsu\"><span class=\"c15 c20 c7\">1.2.3. Group nodes<\/span><\/h3><p class=\"c0\"><span class=\"c1\">Group nodes are mostly an organizational tool (to, you guessed it, group other nodes), but they also have an important function in conversations, that of giving an anchor for repeating choices.<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c10\"><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 235.00px; height: 41.00px;\"><img decoding=\"async\" alt=\"Fig.1.8.jpg\" src=\"https:\/\/lh5.googleusercontent.com\/4hM_bj2-am9xWXWSiVXPD-xoQL0f_ivPaaFMFxLQxASdSM5TuO5VZXM5oCJ0DjJHLga97tx9evUMuWjN-pgcb1TMkVl6HQNLOUaXSo8oY40pvjyuf2BgJZmBN9sldZp5zQ\" style=\"width: 235.00px; height: 41.00px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><\/p><p class=\"c10\"><span class=\"c25\">Fig.1.8 &#8211; A group node<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span class=\"c1\">Any time you want the user to be given a list of choices until they get the right one, parenting all the children &quot;choice&quot; nodes to another dialogue node will make the text in the parent be spoken every time the user goes through it again. Moreover, the choices won&rsquo;t appear before an additional click\/tap is made by the user, even if the &quot;dialogue&quot; field is empty in the parent. For that reason, by inserting a group node between the dialogue parent and the choice children, you can link back the children to the group node, and no additional clicks will be required, the choices will just appear again, without a hitch.<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span class=\"c1\">As you can see in Fig. 8, group nodes have script and condition indicators similar to those in dialogue nodes (again, pink for scripts and pale blue for conditions).<\/span><\/p><h3 class=\"c18\" id=\"hsb16aecdz5fm\"><span class=\"c15 c7 c20\">1.2.4. False actions<\/span><\/h3><p class=\"c0\"><span class=\"c1\">The &ldquo;False Action&rdquo; of a dialogue node describes what happens if the condition in a certain node evaluates to false.<\/span><\/p><p class=\"c10\"><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 252.30px; height: 277.13px;\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/lh3.googleusercontent.com\/a4jjVxGtnkq8KfsdHFXCpcZwSeKlyJxuNVgC_4ACE6YDlP4q9gKjrXGiDAPtGquApA-g8s8I4BaEMcTH_Qw0YGKWhD33fsTunhQozhDqKyntmtsZ9iJP1tyo0qfw73RXLA\" style=\"width: 252.30px; height: 277.13px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><\/p><p class=\"c10\"><span class=\"c9 c25 c23\">Fig.1.9 &#8211; The selector used to change the &ldquo;False Action&rdquo; setting of a dialogue node.<\/span><\/p><p class=\"c10 c2\"><span class=\"c9 c25 c23\"><\/span><\/p><p class=\"c0\"><span>In the case of &ldquo;<\/span><span class=\"c7\">Block<\/span><span class=\"c1\">&rdquo;, the default, the node is blocked and the conversation will stop (or, in the case of multiple nodes at the same level, it will not show among the options the user can choose).<\/span><\/p><p class=\"c0\"><span>If &ldquo;<\/span><span class=\"c7\">Passthrough<\/span><span>&rdquo; is chosen instead, the node will be &ldquo;skipped&rdquo; (i.e. the conversation will &ldquo;pass through&rdquo; that node), and will not be blocked. In the case of groups of nodes the same happens, and the node <\/span><span class=\"c12\">after <\/span><span>the passthrough node will be evaluated to see whether it should appear in the list of choices or not (as the second node itself might have a condition with a passthrough False Action, and so on).<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><h2 class=\"c28\" id=\"ht7z1efh0e51e\"><span class=\"c15 c24 c7\">1.3 Custom Asset Fields (CAFs)<\/span><\/h2><p class=\"c0\"><span class=\"c1\">CAFs are a way to add functionality to your conversations and demos. They can be seen by going to Project &rarr; Project Settings &rarr; Custom Asset Fields. By selecting the correct asset tab (actors, items, locations, etc.) and clicking on &quot;Add New Field&quot;, you will be able to create your very own!<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span class=\"c1\">CAFs can be of many different types, but the ones most frequently used will be:<\/span><\/p><ul class=\"c22 lst-kix_n9ratbukspsc-0 start\"><li class=\"c0 c17 li-bullet-0\"><span class=\"c7\">Number:<\/span><span class=\"c1\">&nbsp;any numeric CAF will be, of course, of this type. It can be an integer, a decimal number, positive or negative.<\/span><\/li><li class=\"c0 c17 li-bullet-0\"><span class=\"c7\">Text<\/span><span class=\"c1\">: any CAF using the name of something, or that needs certain &quot;keywords&quot;, will be of type text.<\/span><\/li><li class=\"c0 c17 li-bullet-0\"><span class=\"c7\">Boolean: <\/span><span>like with the <\/span><span class=\"c8\"><a class=\"c11\" href=\"#hl3mziqly9rin\">operations<\/a><\/span><span class=\"c1\">&nbsp;with the same name, CAFs that should be either true or false will be of type boolean. Default value is false.<\/span><\/li><li class=\"c0 c17 li-bullet-0\"><span class=\"c7\">Files: <\/span><span>all collections of files (actor pictures, videos, etc.) are of this type. Assigning this type to a CAF (don&rsquo;t forget the <\/span><span class=\"c14 c6\">[]<\/span><span class=\"c1\">&nbsp;default value!) will make you able to add or remove files at will, by letting you browse your hard drive looking for a file and then saving its path when you select it.<\/span><\/li><li class=\"c0 c17 li-bullet-0\"><span class=\"c7\">Location:<\/span><span class=\"c1\">&nbsp;any field with this type will become a dropdown with a list of the Location assets in your current project. Very useful to change the background of conversations.<\/span><\/li><\/ul><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span class=\"c1\">There are also a few &quot;special&quot; CAFs, which enable entirely new features in your demo. Their name and type must be exactly the one listed below, and the values you assign to them are very strict too!<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 681.60px; height: 296.00px;\"><img decoding=\"async\" alt=\"Fig.1.9.jpg\" src=\"https:\/\/lh6.googleusercontent.com\/MsQ7cIwUeycy_fNyPTa46AWVVkl0dGf6eNqPhasudg_O6_SZcscpfFyd4O1PON2fQYoBnQkzmJdocDTZ3ycSWtrJ3_rVX7HeghB8JBdRDxh4LMG_oohFp-pbAlzVb8Cbjg\" style=\"width: 681.79px; height: 296.00px; margin-left: -0.09px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><\/p><p class=\"c10\"><span class=\"c25\">Fig.1.10 &#8211; Before and after adding the Voice CAF to Actors, with a screenshot of the values used.<\/span><\/p><h3 class=\"c18\" id=\"hqquyk1kixa35\"><span class=\"c15 c20 c7\">1.3.1. Voice<\/span><\/h3><ul class=\"c22 lst-kix_35prcsubei-0 start\"><li class=\"c0 c17 li-bullet-0\"><span class=\"c7\">Tab:<\/span><span class=\"c1\">&nbsp;Actors<\/span><\/li><li class=\"c0 c17 li-bullet-0\"><span class=\"c7\">Title:<\/span><span class=\"c1\">&nbsp;Voice<\/span><\/li><li class=\"c0 c17 li-bullet-0\"><span class=\"c7\">Type:<\/span><span class=\"c1\">&nbsp;Text<\/span><\/li><\/ul><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span class=\"c1\">The ResponsiveVoice voice that will be used in HTML5 previews and when publishing. All voice names (which are to be used as the value of this CAF) and their genre are listed here.<\/span><\/p><h3 class=\"c18\" id=\"hkq0d3anlhezp\"><span class=\"c15 c20 c7\">1.3.2. Voice pitch\/rate\/volume<\/span><\/h3><ul class=\"c22 lst-kix_bxdrj678weu5-0 start\"><li class=\"c0 c17 li-bullet-0\"><span class=\"c7\">Tab:<\/span><span class=\"c1\">&nbsp;Actors<\/span><\/li><li class=\"c0 c17 li-bullet-0\"><span class=\"c7\">Title:<\/span><span class=\"c1\">&nbsp;Voice_parameters<\/span><\/li><li class=\"c0 c17 li-bullet-0\"><span class=\"c7\">Type:<\/span><span class=\"c1\">&nbsp;Text<\/span><\/li><\/ul><p class=\"c0\"><span class=\"c1\"><br>Some voices support three additional parameters: pitch, rate of speech, and volume. These vary from 0.5 to 1.5, and must be included as a single string formatted like follows (where VAL is of course the value given to that parameter). The default value of each parameter is 1.<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c10\"><span class=\"c14 c6\">{ rate: VAL, pitch: VAL, volume: VAL }<\/span><\/p><p class=\"c10 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c13\"><span class=\"c1\">Not all parameters need to be included. If for instance the only parameters wanted are rate (1.3) and volume (0.9), the following can be used:<\/span><\/p><p class=\"c10\"><span class=\"c14 c6\">{ rate: 1.3, volume: 0.9 }<\/span><\/p><h3 class=\"c18\" id=\"hmqfgitvih7ah\"><span class=\"c15 c20 c7\">1.3.3. Autoplay<\/span><\/h3><ul class=\"c22 lst-kix_5pxwmqfzpcl1-0 start\"><li class=\"c0 c17 li-bullet-0\"><span class=\"c7\">Tab:<\/span><span class=\"c1\">&nbsp;Conversations<\/span><\/li><li class=\"c0 c17 li-bullet-0\"><span class=\"c7\">Title:<\/span><span class=\"c1\">&nbsp;Autoplay<\/span><\/li><li class=\"c0 c17 li-bullet-0\"><span class=\"c7\">Type:<\/span><span class=\"c1\">&nbsp;Boolean<\/span><\/li><\/ul><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span class=\"c1\">When this CAF is added to conversations, the conversation in which this is set as true (it must be only one, otherwise the conversation selector will be shown like always) will begin on its own, without having to choose which conversation to play. Especially useful if you want your conversation to begin from a specific point.<\/span><\/p><h3 class=\"c18\" id=\"hozwtp7idka4y\"><span class=\"c15 c20 c7\">1.3.4. Location<\/span><\/h3><ul class=\"c22 lst-kix_oru11f5mqn90-0 start\"><li class=\"c0 c17 li-bullet-0\"><span class=\"c7\">Tab:<\/span><span class=\"c1\">&nbsp;Conversations<\/span><\/li><li class=\"c0 c17 li-bullet-0\"><span class=\"c7\">Title:<\/span><span class=\"c1\">&nbsp;location<\/span><\/li><li class=\"c0 c17 li-bullet-0\"><span class=\"c7\">Type:<\/span><span class=\"c1\">&nbsp;Location<\/span><\/li><\/ul><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span class=\"c1\">This will make you able to assign a location to a conversation, so that the image of that location will automatically appear as the background of that conversation.<\/span><\/p><h3 class=\"c18\" id=\"hqnx5yewh1isg\"><span class=\"c15 c20 c7\">1.3.5. Choice caption<\/span><\/h3><ul class=\"c22 lst-kix_kkrhwvcem69f-0 start\"><li class=\"c0 c17 li-bullet-0\"><span class=\"c7\">Tab:<\/span><span class=\"c1\">&nbsp;Dialogue Nodes<\/span><\/li><li class=\"c0 c17 li-bullet-0\"><span class=\"c7\">Title:<\/span><span class=\"c1\">&nbsp;choiceCaption<\/span><\/li><li class=\"c0 c17 li-bullet-0\"><span class=\"c7\">Type:<\/span><span class=\"c1\">&nbsp;Text<\/span><\/li><\/ul><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span class=\"c1\">If you add text to this field in a node that has Menu Text, it will be visualized above the choice buttons when that part of the conversation is reached. This is useful if you want to add the text of a question above the list of choices, for example, to remind players what they&rsquo;re deciding on.<\/span><\/p><h2 class=\"c28\" id=\"hifn636x9y7t5\"><span class=\"c15 c24 c7\">1.4. Managing large dialogue trees<\/span><\/h2><p class=\"c0\"><span class=\"c1\">ChatMapper allows linking a node to an entirely different conversation, which allows simplifying large dialogue trees by splitting them in multiple conversations. This becomes useful around the ~200 node mark, as by loading a single part of the tree instead of the entire one, performance remains stable.<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span>Once you have more than one conversation, you can link another conversation by right clicking on a node and <\/span><span class=\"c1\">choosing &quot;Link to Conversation&#8230;&quot; in the menu, which will allow you to jump from your current conversation to the one selected.<\/span><\/p><p class=\"c0 c31\"><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 384.00px; height: 238.38px;\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/lh6.googleusercontent.com\/sqwvALuk_OSnd9uc2VFV_7bf03RvXlmYFj5UgZqp-RjiowmTTusecOvSZv8NEl1yNMFEGdGtKqi9bF6yAcWnJp62qTSty2c7kIpY4tHeaGsrIUkvRz83NTQrqolOUcYPFg\" style=\"width: 384.00px; height: 238.38px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><\/p><p class=\"c10\"><span class=\"c25\">Fig.1.11 &#8211; The right-click menu, with the &ldquo;Link to conversation&rdquo; option highlighted.<\/span><\/p><p class=\"c0 c31 c2\"><span class=\"c9 c23 c26 c3\"><\/span><\/p><p class=\"c0\"><span>It&rsquo;s important to note that even when there are multiple conversations, ChatMapper will still load all the previously-opened ones before allowing any changes to be made, so it&rsquo;s worth closing<\/span><span class=\"c1\">&nbsp;the unused ones.<\/span><\/p><p class=\"c0\"><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 384.00px; height: 83.71px;\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/lh4.googleusercontent.com\/BhVpH6FSQjHNz69Jtn3I2GrnLQC2ZU9NuR25i-ZNkemjUOIa1VsmyyStqgxxHIhvZX9864nzd75XTrWerI5jnUqI7700UY0Uz-9FKRza8F1NIlmCPpyIWwsulYTl1FsvoA\" style=\"width: 384.00px; height: 83.71px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><\/p><p class=\"c10\"><span class=\"c25\">Fig.1.12 &#8211; The close button on conversation tabs.<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span class=\"c1\">There are three things to keep in mind before deciding to go ahead with splitting a conversation:<\/span><\/p><p class=\"c0\"><span class=\"c1\">&#8203;<\/span><\/p><p class=\"c0\"><span class=\"c1\">1. The most important is that it is only possible to link to a different conversation, not to a node within that conversation. To clarify, consider the setup below:<\/span><\/p><p class=\"c0\"><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 480.00px; height: 304.06px;\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/lh6.googleusercontent.com\/4i4INm3NWtiTeRU4y1cxg0YJwBAWu35eQNgpJDlLvOXXh3JZZLn1d4fIkYfuUavkosQp7g-7KqLeZGZJ7CAH16ot9GyiyzcuyuXp1gvW66duO5_OLQjmM8FeOrBvw5eR_Q\" style=\"width: 480.00px; height: 304.06px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><\/p><p class=\"c10\"><span class=\"c9 c25 c23\">Fig.1.13 &#8211; A sample conversation setup with multiple branches and an inter-node link.<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span class=\"c1\">It is not possible to &quot;split&quot; the conversation starting at #3, because it would be impossible to keep the existing link from #2 to #4 across conversations. In order to extract the conversation without breakages, the new tree must start at #1, so that all references are kept &quot;internal&quot; to that conversation<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span class=\"c1\">2. As with Windows files and folders, it&rsquo;s possible to select multiple nodes by clicking on them while pressing the CTRL key. It is also possible to select a series of nodes by clicking on the first, and then clicking on the last while holding the SHIFT key. Once multiple nodes are selected, they can be copied and pasted in the new conversation with the usual CTRL+C and CTRL+V shortcuts.<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span class=\"c1\">3. It is not possible to select and copy\/paste links to nodes, so when selecting a group of nodes to copy in a new conversation, any links in that group will need to be re-created. In this case having a backup copy of the original &nbsp;conversation to use as reference is extremely valuable.<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span class=\"c1\">Our suggested approach to splitting a dialogue tree into multiple conversations is the following:<\/span><\/p><ol class=\"c22 lst-kix_epwdw4jvok0v-0 start\" start=\"1\"><li class=\"c0 c17 li-bullet-0\"><span class=\"c1\">Create a copy of the CMP as it exists, so that it can be used as a reference (or as a backup if any issues arise during the editing process). <\/span><\/li><li class=\"c0 c17 li-bullet-0\"><span class=\"c1\">Analyze whether it would be possible and valuable to split the current conversation into multiple ones. For example, the effort required might not be worthwhile if the conversation is only edited very rarely, and always by the same person or group of people.<\/span><\/li><li class=\"c0 c17 li-bullet-0\"><span class=\"c1\">Split the conversation(s).<\/span><\/li><\/ol><h1 class=\"c28\" id=\"hgzsbgrmue9fh\"><span class=\"c15 c39 c35\">Part 2. The Cookbook<\/span><\/h1><p class=\"c0\"><span class=\"c1\">What follows is a list of &quot;recipes&quot; for ChatMapper. Each one contains the instructions to create a certain kind of element or structure in a conversation, similar to the recipe for a certain dish!<\/span><\/p><h2 class=\"c28\" id=\"hwe661jorw6nm\"><span class=\"c15 c24 c7\">2.1. The &quot;Start&quot; node<\/span><\/h2><p class=\"c0\"><span>A starting point is very important for users. Consider a scenario in which you have <\/span><span class=\"c8\"><a class=\"c11\" href=\"#hmqfgitvih7ah\">Autoplay<\/a><\/span><span>&nbsp;<\/span><span class=\"c1\">on for a conversation, and the user loads your demo for the first time: without an &quot;anchor&quot;, the dialogue will begin without the user expecting it! This can be extremely damaging to the overall experience, and for that reason we suggest implementing the Start node.<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span class=\"c1\">The Start node is simply a dialogue node, at the beginning of a conversation (before anything is said by the actors of course, otherwise it would be kind of pointless!), that forces its menu text to display. <\/span><\/p><p class=\"c0\"><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 360.30px; height: 310.42px;\"><img decoding=\"async\" alt=\"Fig.2.1.jpg\" src=\"https:\/\/lh3.googleusercontent.com\/TjCBon_PVgbtHgzyWryDEZWvAPN1Tk8UPKPGd1xW8Hniift6CshokrhmYbE22p56riQbFllI4lQGIepPSDb1cryqD88N9NFsegSHzSAihgQ8dvkvQvG-kRAzN2fkBGoKxw\" style=\"width: 360.30px; height: 310.42px; margin-left: -0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><\/p><p class=\"c10\"><span class=\"c9 c25 c23\">Fig. 2.1 &#8211; Properties panel of the Start node. Yes, it&rsquo;s that easy!<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span>As you can see from the image, to force the display of a choice you just need to add <\/span><span class=\"c14 c6\">[f]<\/span><span class=\"c1\">&nbsp;at the beginning of its menu text. If you don&rsquo;t, the node will be automatically selected (since it&rsquo;s the only possible choice) and you won&rsquo;t have a starting point.<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span class=\"c1\">With Autoplay and the Start node you can do all sorts of wonderful things. At LearnBrite, for instance, we often use it for setup to set all variables to the correct starting value (so that, when we link back to it at the end, variables are reset automatically), or to run some additional Javascript.<\/span><\/p><h3 class=\"c18\" id=\"hblgcq8onn55w\"><span class=\"c15 c20 c7\">2.1.1. Only showing the &ldquo;Start&rdquo; node the first time<\/span><\/h3><p class=\"c0\"><span class=\"c1\">There are cases in which a user is free to start the same conversation multiple times, but it wouldn&rsquo;t make sense for them to click on the avatar\/bot\/object that triggers the conversation and always be presented with the &ldquo;Start&rdquo; node.<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span>If the start node has no dialogue or scripting that is always relevant to the conversation even on repeat plays (if that&rsquo;s the case, those should be moved to a subsequent node), a condition should be set on the start node to only be displayed once (see image below), and the False Action of the start node should be set to &ldquo;Passthrough&rdquo; (see <\/span><span class=\"c8\"><a class=\"c11\" href=\"#hsb16aecdz5fm\">section on False Actions<\/a><\/span><span class=\"c1\">).<\/span><\/p><p class=\"c10\"><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 586.30px; height: 245.01px;\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/lh6.googleusercontent.com\/Z8CQQ4YkTKU0eO-CwMyl1e6j2IlayAB0QdlaTwMH78wDWa60vqmtfCmnB1lvLx0ybpC-xlwu--YrEh6_eke6kqbE-1-i_v56GCtdKASHycJvm6lnyPXg6NmT05u-q1_Sow\" style=\"width: 586.30px; height: 245.01px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><\/p><p class=\"c10\"><span class=\"c9 c25 c23\">Fig. 2.1.1 &#8211; Adding the &ldquo;Display This Node Only Once&rdquo; condition<\/span><\/p><p class=\"c10 c2\"><span class=\"c9 c25 c23\"><\/span><\/p><p class=\"c0\"><span>This way, the start node will be shown the first time the conversation is played, and its status as having been displayed (which is what the condition checks) will be saved. When the conversation is triggered again, the condition will fail and the node will not play, however because of the passthrough False Action the conversation will &ldquo;skip&rdquo; to the next node instead of exiting altogether. <\/span><\/p><h2 class=\"c28\" id=\"hlr4ma3ex93t9\"><span class=\"c15 c24 c7\">2.2. The &quot;Replay&quot; node<\/span><\/h2><p class=\"c0\"><span>Like the <\/span><span class=\"c8\"><a class=\"c11\" href=\"#hwe661jorw6nm\">Start node<\/a><\/span><span class=\"c1\">, the Replay node is very useful, and we include it in almost every demo we create. <\/span><\/p><p class=\"c0\"><span class=\"c1\">The concept is fairly similar: it&rsquo;s a single node, used as both an anchor (for the player) and to execute a script behind the scenes (for the developer). In this case, the script resets every important SimStatus to &quot;Untouched&quot; and every variable to to their initial value. It also sets any values used to display or hide the conversations, so that the next node visualized will be either the Start node or the node from which you want players to begin the experience again.<\/span><\/p><p class=\"c10\"><span class=\"c9 c25 c23\">Fig.2.2 &#8211; The key to the Replay node is the link back to a node at the beginning.<\/span><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 427.30px; height: 411.01px;\"><img decoding=\"async\" alt=\"Fig.2.2.jpg\" src=\"https:\/\/lh6.googleusercontent.com\/LX-xUzZ6HHG9tWhagppvOiEQtFYd2crVnPs1Ba2VMckxxDhCxSdoJtGd76EIaZpyAeYONHTIpT2M8plHE3STE2ZSvKCXQStET9JkbNDSXWLVeRm-cEIheA2kg77KoQeZ-A\" style=\"width: 427.47px; height: 411.01px; margin-left: -0.09px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><\/p><p class=\"c2 c10\"><span class=\"c9 c25 c23\"><\/span><\/p><p class=\"c0\"><span class=\"c1\">To reset variables, you can include a line like this in the Replay node&rsquo;s script:<\/span><\/p><p class=\"c10 c2\"><span class=\"c15 c14 c6 c3\"><\/span><\/p><p class=\"c10\"><span class=\"c14 c6\">Variable[&quot;<\/span><span class=\"c14 c6 c12\">name<\/span><span class=\"c14 c6\">&quot;<\/span><span class=\"c14 c6\">] = <\/span><span class=\"c14 c6 c23 c3 c12 c34\">initial value<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span>Where <\/span><span class=\"c12\">name<\/span><span>&nbsp;is the variable&rsquo;s name (which has to go between quotes) and <\/span><span class=\"c12\">initial value <\/span><span class=\"c1\">is, well, the initial value of the variable.<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span class=\"c1\">If you set a node to only be visualized once, remember to set its SimStatus to Untouched, otherwise it won&rsquo;t show up on replays! You can do so by adding this line to the Replay script:<\/span><\/p><p class=\"c10 c2\"><span class=\"c15 c14 c6 c3\"><\/span><\/p><p class=\"c10\"><span class=\"c14 c6\">Dialog[<\/span><span class=\"c14 c6 c12\">id<\/span><span class=\"c15 c14 c6 c3\">] = &quot;Untouched&quot;<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c10\"><span>Where <\/span><span class=\"c12\">id<\/span><span class=\"c1\">&nbsp;is the number on the upper left corner of the node the SimStatus of which you want to reset.<\/span><\/p><h2 class=\"c28\" id=\"hsdwnbba2gee1\"><span class=\"c15 c7 c24\">2.3. Loops<\/span><\/h2><p class=\"c0\"><span class=\"c1\">A loop is a conversational structure in which you go from a node to its parent, and then back to the node. It&rsquo;s very useful, for instance, if you want to ask a series of questions to an NPC, but you want to let the player decide in which order.<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span class=\"c1\">In the example, the player is asked to list the first five colours of the rainbow. Here is the canvas:<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 681.60px; height: 310.67px;\"><img decoding=\"async\" alt=\"Fig.2.3.jpg\" src=\"https:\/\/lh3.googleusercontent.com\/O0rFkztKMQS3ockzkz9lWYWG-7jhiJNMal-WlG5p6kZFFCplvqusT7mdSniOqxImHhb2f1YNa9BZTzNWFvDTJ--os45Z3TNiTGz_srX5LcJeSVuaQoz0dpUrtRDCCGY9xQ\" style=\"width: 682.91px; height: 310.67px; margin-left: -0.66px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><\/p><p class=\"c10\"><span class=\"c9 c25 c23\">Fig.2.3 &#8211; A &nbsp;colorful loop.<\/span><\/p><p class=\"c10 c2\"><span class=\"c9 c25 c23\"><\/span><\/p><p class=\"c0\"><span>The trick here is that each of the coloured nodes is linking back to their parent group node (so that the text in node 1 is not repeated every time), and disappears from the choices after being selected once (through the condition <\/span><span class=\"c14 c6\">Dialog[<\/span><span class=\"c14 c6 c12\">id<\/span><span class=\"c14 c6\">] ~= &quot;WasDisplayed&quot;<\/span><span>, where <\/span><span class=\"c12\">id<\/span><span class=\"c1\">&nbsp;is each node&rsquo;s ID (the number on the upper left corner of each node: red is 3, orange is 4, etc.).<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span class=\"c1\">Node 9, in which the NPC says &quot;Fine, you can go!&quot; has a different condition, which is<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c10\"><span class=\"c15 c14 c6 c3\">Dialog[3].SimStatus == &quot;WasDisplayed&quot; and<\/span><\/p><p class=\"c10\"><span class=\"c15 c14 c6 c3\">Dialog[4].SimStatus == &quot;WasDisplayed&quot; and<\/span><\/p><p class=\"c10\"><span class=\"c15 c14 c6 c3\">Dialog[5].SimStatus == &quot;WasDisplayed&quot; and<\/span><\/p><p class=\"c10\"><span class=\"c15 c14 c6 c3\">Dialog[6].SimStatus == &quot;WasDisplayed&quot; and<\/span><\/p><p class=\"c10\"><span class=\"c14 c6\">Dialog[7].SimStatus == &quot;WasDisplayed&quot;<\/span><span>&nbsp; &nbsp; &nbsp; &nbsp;<\/span><span class=\"c9 c23 c3 c21\">.<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span class=\"c1\">That means that it will only be displayed when all the nodes listed has been displayed (which in this case means that we answered the NPC&rsquo;s question).<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span>There is one other thing going on, which is the <\/span><span class=\"c14 c6\">[f]<\/span><span>&nbsp;in all menu texts. We&rsquo;re forcing the display of every choice, even if there is only one. If you want the last one to be picked automatically, without having to click it, you can simply forego the <\/span><span class=\"c14 c6\">[f]<\/span><span class=\"c1\">s in your implementation.<\/span><\/p><h2 class=\"c28\" id=\"hu35w6pex984c\"><span class=\"c15 c24 c7\">2.4. Assigning and using variables<\/span><\/h2><p class=\"c0\"><span class=\"c1\">Now that we understand how conditions and loops work, how about we do something more interesting with them?<\/span><\/p><p class=\"c10\"><span class=\"c25\">Fig.2.4 &#8211; A simple escape.<\/span><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 520.30px; height: 461.71px;\"><img decoding=\"async\" alt=\"Fig.2.4.jpg\" src=\"https:\/\/lh5.googleusercontent.com\/jVY7Q2fq4oMYvapugyJNAOf-ju73lY5UdDxhQm2LwOcdn3SfEKdc12FWYE6JrsjcfuY0RGKVZqcCCuP_ZeYIXS-E56PpQHeBbzk_CxkNB0-DN9MHw6ZhfbsSEUNCBeRHmA\" style=\"width: 520.30px; height: 462.25px; margin-left: 0.00px; margin-top: -0.27px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span>In this example, the player has to open a door, but the door is locked; they won&rsquo;t be given the possibility to unlock it until after they have searched the room and found the key.<\/span><\/p><p class=\"c0 c2\"><span class=\"c15 c14 c6 c3\"><\/span><\/p><p class=\"c0\"><span>By <\/span><span class=\"c8\"><a class=\"c11\" href=\"#hy20c3osdp6m8\">creating a boolean variable<\/a><\/span><span>&nbsp;called <\/span><span class=\"c14 c6\">hasKey<\/span><span>&nbsp;(false by default), we&rsquo;re already halfway done. What&rsquo;s left after is to check in relevant nodes whether we have said key or not, or in the case of node 2 set <\/span><span class=\"c14 c6\">hasKey <\/span><span>to <\/span><span class=\"c14 c6\">true<\/span><span class=\"c1\">, because we just found the key!<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><ul class=\"c22 lst-kix_2neq6elh5tfy-0 start\"><li class=\"c0 c17 li-bullet-0\"><span class=\"c7\">Node 3 condition,<\/span><span>&nbsp;<\/span><span class=\"c14 c6\">Variable[&quot;hasKey&quot;] == false<\/span><span class=\"c1\">: The player can try the door an infinite number of times, but as long as they don&rsquo;t have the key it won&rsquo;t budge. When the player finds the key, this choice will disappear.<\/span><\/li><\/ul><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><ul class=\"c22 lst-kix_2neq6elh5tfy-0\"><li class=\"c0 c17 li-bullet-0\"><span class=\"c15 c29 c3 c7\">Node 2<\/span><\/li><\/ul><ul class=\"c22 lst-kix_2neq6elh5tfy-1 start\"><li class=\"c0 c37 li-bullet-0\"><span class=\"c7\">Script,<\/span><span>&nbsp;<\/span><span class=\"c14 c6\">Variable[&quot;hasKey&quot;] = true<\/span><span>: we found the key, so we change the value of<\/span><span class=\"c14 c6\">&nbsp;hasKey<\/span><span class=\"c16\">&nbsp;<\/span><span>to<\/span><span class=\"c16\">&nbsp;<\/span><span class=\"c14 c6\">true<\/span><span>.<\/span><\/li><li class=\"c0 c37 li-bullet-0\"><span class=\"c7\">Condition,<\/span><span>&nbsp;<\/span><span class=\"c14 c6\">Dialog[2].SimStatus ~= &quot;WasDisplayed&quot;<\/span><span>: no need to search the room multiple times, so we only let the player go through this node<\/span><span>&nbsp;once<\/span><span class=\"c1\">.<\/span><\/li><\/ul><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><ul class=\"c22 lst-kix_2neq6elh5tfy-0\"><li class=\"c0 c17 li-bullet-0\"><span class=\"c7\">Node 5 condition,<\/span><span>&nbsp;<\/span><span class=\"c14 c6\">Variable[&quot;hasKey&quot;] == true<\/span><span class=\"c1\">: when the player has found the key, we let them go through the door, and the demo ends.<\/span><\/li><\/ul><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span class=\"c1\">To recap:<\/span><\/p><ol class=\"c22 lst-kix_1d4tfyrm45z-0 start\" start=\"1\"><li class=\"c0 c17 li-bullet-0\"><span class=\"c1\">First we create a boolean variable, that expresses whether or not the player has found the key.<\/span><\/li><li class=\"c0 c17 li-bullet-0\"><span>Then we <\/span><span class=\"c8\"><a class=\"c11\" href=\"#hsdwnbba2gee1\">set up a loop<\/a><\/span><span class=\"c1\">&nbsp;through node 3, so that the player can&rsquo;t progress until they search for the key.<\/span><\/li><li class=\"c0 c17 li-bullet-0\"><span class=\"c1\">When the player searches for the key nodes 3 and 2 disappear (as node 3 is only visualized if the player doesn&rsquo;t have the key and node 2 is only visualized once), but node 5 &#8211; freedom &#8211; appears (through checking that the player has found the key).<\/span><\/li><\/ol><p class=\"c0\"><span class=\"c1\"><br>Easy peasy!<\/span><\/p><h2 class=\"c28\" id=\"h97sja89buzxt\"><span class=\"c15 c24 c7\">2.5. Using variables in dialogue<\/span><\/h2><p class=\"c0\"><span class=\"c1\">Variables are not only very useful to control the flow of the conversation, you can actually include their value in the text! Say you want your player to change a number from a list of three, but you don&rsquo;t know which number they&rsquo;ll choose. Either every time that number comes up you create three different dialogue nodes, one for each possible choice, or you simply include the variable itself in the dialogue!<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span class=\"c1\">Let me illustrate: on the left the nodes in the conversation, and on the right (highlighter in black) what the dialogue is like when previewing it. Note that you can also see the line of code I included in node 2, for reference.<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 376.95px; height: 344.30px;\"><img decoding=\"async\" alt=\"Fig.2.5.jpg\" src=\"https:\/\/lh5.googleusercontent.com\/LlKSgf0phcEWlJeAkW-pCocYo5IKecUFtpkrDptRutgQmBVTmRGLxL8eCv_1jJsscBvzSkwq-UIIZxQPy0VVdtjxeLZ1d3zxWZg4EiBOQvhkwOM_dL0neZIGy3eIcgMZrg\" style=\"width: 376.95px; height: 344.30px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><\/p><p class=\"c10\"><span class=\"c25\">Fig.2.5 &#8211; The initial value, changed to 7, and then displayed again.<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span>As you can see we have the variable <\/span><span class=\"c14 c6\">magicNumber<\/span><span>, whose default value was set to 1, mentioned in the text of two dialogue nodes. The syntax is fairly straightforward, you just insert the name of the variable in <\/span><span class=\"c14 c6\">[var=<\/span><span class=\"c14 c6 c12\">name<\/span><span class=\"c14 c6\">]<\/span><span>, and that will be substituted for the value itself when previewing or publishing.<\/span><\/p><h2 class=\"c28\" id=\"h90mjy6bbr1nf\"><span class=\"c15 c24 c7\">2.6. Random variables<\/span><\/h2><p class=\"c0\"><span class=\"c1\">Now that we know how to assign a variable, we can step up and create a variable that will have a random value every time we start the conversation. This is really useful if you have a repetitive scenario (for instance a training scenario), and you want to change the choices the player has to make in order to succeed (e.g. the client you&rsquo;re training has a random disposition towards you at the beginning of the conversation, so how you talk to them changes even if the scenario itself is the same).<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span>To do this, we first have to go over a bit of ChatMapper&rsquo;s inner workings: while ChatMapper itself and the simulator work with Lua, when previewing in HTML5 or publishing a build all the code you wrote is converted in JavaScript (otherwise it wouldn&rsquo;t work online). You can exploit this to your advantage, and use the features of JavaScript (like we do in <\/span><span class=\"c8\"><a class=\"c11\" href=\"#h2x1ywkk5xeu0\">section 2.7<\/a><\/span><span class=\"c1\">) not native to ChatMapper; for this section, though, we will limit ourselves to analyzing the interplay between Lua and JavaScript.<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span class=\"c1\">If you want this randomization to work on previews and builds, you insert this in the script where you want that value to be calculated:<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c10\"><span class=\"c14 c6\">var jsVariable = Math.random(); &nbsp; &nbsp;<\/span><span class=\"c15 c6 c3 c21 c35\">.<\/span><\/p><p class=\"c10\"><span class=\"c15 c14 c6 c3\">Variable[&quot;cmVariable&quot;] = jsVariable;<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span>What this does is create a JavaScript variable, called <\/span><span class=\"c14 c6\">jsVariable<\/span><span>, and uses the JavaScript <\/span><span class=\"c14 c6\">Math<\/span><span class=\"c1\">&nbsp;library (a collection of scripts to calculate many mathematical operations, like square roots, medians, etc.) to create a random number. This returns a floating-point, pseudo-random number in the range [0, 1]; that is, from 0 (inclusive) up to but not including 1 (exclusive)<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span class=\"c1\">If you want your random number to be between two inclusive numbers, you can do it like so:<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c10\"><span class=\"c15 c14 c6 c3\">window.getRandomIntInclusive = new Function(&#39;min&#39;,&#39;max&#39;,&#39;{min = Math.ceil(min);max = Math.floor(max);return Math.floor(Math.random() * (max &#8211; min + 1)) + min;}&#39;);<\/span><\/p><p class=\"c10\"><span class=\"c14 c6\">var jsVariable = getRandomIntInclusive(<\/span><span class=\"c14 c6 c12\">min<\/span><span class=\"c14 c6\">, <\/span><span class=\"c14 c6 c12\">max<\/span><span class=\"c15 c14 c6 c3\">);<\/span><\/p><p class=\"c10 c2\"><span class=\"c15 c14 c6 c3\"><\/span><\/p><p class=\"c0\"><span>Where <\/span><span class=\"c14 c6 c12\">min<\/span><span class=\"c12\">&nbsp;<\/span><span>is the lower whole number value and <\/span><span class=\"c14 c6 c12\">max<\/span><span class=\"c12\">&nbsp;<\/span><span>is the higher one. After that, we assign that to a variable we created &nbsp;in ChatMapper, called <\/span><span class=\"c14 c6\">cmVariable<\/span><span class=\"c1\">, and now you can do whatever you want with it, it&rsquo;s a variable like any other. You can display it in dialogue, or use it in some other script or condition, or anything else you&rsquo;d do with another variable.<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span class=\"c1\">If you&rsquo;re working only with Lua and the simulator, you can tweak that code a bit. Since you don&rsquo;t need to use Javascript, you can simply use the Lua math library and that&rsquo;s that:<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c10\"><span class=\"c15 c14 c6 c3\">Variable[&quot;randomVariable&quot;] = math.random(min, max);<\/span><\/p><p class=\"c10 c2\"><span class=\"c15 c14 c6 c3\"><\/span><\/p><p class=\"c0\"><span>&quot;Why doesn&rsquo;t this work in the preview?&quot; We hear you ask. &quot;Isn&rsquo;t Lua code translated into JavaScript?&quot;. Well, yes and no. When it comes to variables, operations, conditionals, etc., Lua code is translated without a hitch. Unfortunately, since libraries change for each language (a library that exists in a language may be absent in another, or have a completely different name), it&rsquo;s impossible to translate them. It will work if they have the same exact name, but as you can see even having different capitalization (the Lua library is <\/span><span class=\"c14 c6\">math<\/span><span>, the JavaScript library is <\/span><span class=\"c14 c6\">Math<\/span><span>) will stop this mechanism from working. Be sure to always check out the name of any library you want to use!<\/span><\/p><h2 class=\"c28\" id=\"h2x1ywkk5xeu0\"><span class=\"c15 c24 c7\">2.7. User input<\/span><\/h2><p class=\"c0\"><span class=\"c1\">If you&rsquo;re working with HTML5 (i.e. if you are previewing and publishing your work), you can ask the user for input!<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c10\"><span class=\"c9 c25 c23\">Fig.2.6 &#8211; On the right, the box displayed through prompt();<\/span><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 505.30px; height: 219.33px;\"><img decoding=\"async\" alt=\"Fig.2.6.jpg\" src=\"https:\/\/lh6.googleusercontent.com\/QvOHv6n-o3_MGdhZ-NYFuYnkB_F2N_RqXjTAStO_Fv5paIkZWDqyTVIekGFK1bX5TWj0aC_MCejknoZZCycn8v92V-gzdyvg_zRxXP4ACyUB-0ai-kb2PYQwm5ABd1Opig\" style=\"width: 505.30px; height: 219.33px; margin-left: -0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><\/p><p class=\"c10 c2\"><span class=\"c9 c23 c25\"><\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span class=\"c1\">You can do many different things with JavaScript, one of which is displaying the box on the right of Fig.2.6. How? It&rsquo;s easy!<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c10\"><span class=\"c14 c6 c3 c15\">var name = prompt(&quot;What&#39;s your name?&quot;);<\/span><\/p><p class=\"c10\"><span class=\"c14 c6\">Variable[&quot;name&quot;] = name; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<\/span><span class=\"c6 c35 c21\">.<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span>By adding these two lines of code to a node (node 2 in the image) you can display a box with a text field. At the same time, we&rsquo;re saving the contents of that text field to the JavaScript variable <\/span><span class=\"c14 c6\">name<\/span><span>&nbsp;when the user clicks okay, and then copying those to its Lua twin, <\/span><span class=\"c14 c6\">Variable[&quot;name&quot;]<\/span><span class=\"c1\">, so that we can use it in the dialogue itself.<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span class=\"c1\">Note that if the user doesn&rsquo;t input anything, the variable will be empty, and the sentence will come out like this:<\/span><\/p><p class=\"c10\"><span class=\"c9 c25 c23\">Fig.2.7 &#8211; The player has not given any input.<\/span><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 122.00px; height: 24.00px;\"><img decoding=\"async\" alt=\"Fig.2.7.jpg\" src=\"https:\/\/lh6.googleusercontent.com\/lNmpVY-f3xGsmIVFL4RenOSscNp45f1UWeWGKgKww3dlC29TXFyI3ZuPtEQeZSF5QsuJDtE1GlCqhTaE9ME6gDLAd46OeBKUGJZn5nwG3BY0jgVzqRryU0w_ZmJwVxCtqg\" style=\"width: 122.00px; height: 24.00px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><\/p><p class=\"c10 c2\"><span class=\"c9 c25 c23\"><\/span><\/p><p class=\"c10 c2\"><span class=\"c9 c25 c23\"><\/span><\/p><p class=\"c0\"><span class=\"c1\">It&rsquo;s fairly easy to prevent that by adding a few more lines of code (in bold), which will assign a default name in case the user leaves the field empty:<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c10\"><span class=\"c14 c6\">var name = prompt(&quot;What&#39;s your name?&quot;);<\/span><\/p><p class=\"c10\"><span class=\"c5 c6\">if (name == &quot;&quot;) { &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"c15 c6 c3 c21 c7\">.<\/span><\/p><p class=\"c10\"><span class=\"c5 c6\">&nbsp; &nbsp; &nbsp; &nbsp; Variable[&quot;name&quot;] = &quot;Hayden&quot;; &nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"c15 c6 c3 c7 c21\">.<\/span><\/p><p class=\"c10\"><span class=\"c5 c6\">}else{ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<\/span><span class=\"c15 c6 c3 c21 c7\">.<\/span><\/p><p class=\"c10\"><span class=\"c5 c6\">&nbsp; &nbsp;Variable[&quot;name&quot;] = name; &nbsp; &nbsp; &nbsp; &nbsp;<\/span><span class=\"c15 c6 c3 c21 c7\">.<\/span><\/p><p class=\"c10\"><span class=\"c5 c6\">} &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"c6 c21 c7\">.<\/span><\/p><p class=\"c10 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span>This structure is called an <\/span><span class=\"c7\">if-else<\/span><span>: <\/span><span class=\"c5 c6\">if<\/span><span>&nbsp;the condition between parentheses is true (in this case <\/span><span class=\"c14 c6\">name ==<\/span><span class=\"c5 c6\">&nbsp;<\/span><span class=\"c14 c6\">&quot;&quot;<\/span><span>, i.e. name is empty), execute the instructions between the following brackets (i.e. assign &quot;Hayden&quot; as a name); <\/span><span class=\"c7\">otherwise (<\/span><span class=\"c5 c6\">else<\/span><span class=\"c7\">)<\/span><span class=\"c1\">&nbsp;execute the instructions between the last pair of brackets (i.e. assign to the variable what the user wrote).<\/span><\/p><h2 class=\"c28\" id=\"hmwx8r43zxdg\"><span class=\"c15 c24 c7\">2.8. Hiding the language bar<\/span><\/h2><p class=\"c0\"><span class=\"c1\">While having a conversation in different languages can help immensely in expanding your audience, having to create such an amount of content is not always desirable. If that is the case, hiding the language bar from the user is important.<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span>To auto-hide the the language bar you need to set <\/span><span class=\"c8\"><a class=\"c11\" href=\"https:\/\/docs.google.com\/document\/d\/18t-fiO0_XTomtVm1VkZlVoUJMm-FVgb4_9LJM2F9xGg\/edit#heading=h.mqfgitvih7ah\">Autoplay<\/a><\/span><span>, and also a <\/span><span class=\"c8\"><a class=\"c11\" href=\"https:\/\/docs.google.com\/document\/d\/18t-fiO0_XTomtVm1VkZlVoUJMm-FVgb4_9LJM2F9xGg\/edit#heading=h.we661jorw6nm\">Start<\/a><\/span><span class=\"c1\">&nbsp;node. The structure is this:<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 204.50px; height: 337.94px;\"><img decoding=\"async\" alt=\"Fig.2.8.jpg\" src=\"https:\/\/lh4.googleusercontent.com\/9NheeHXUNwIZtSrAQRka_XgB421qH3lJSuWjHEvwTI40rXmrxnwnLVkHE4jJfkhHk2QQSMsv4lYTkHqGgQBGxmSa16k5gHWUPyBtO3OZPljZ56b7oCsNtPUNY1Eh35OFBg\" style=\"width: 204.50px; height: 337.94px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><\/p><p class=\"c10\"><span class=\"c25\">Fig.2.8 &#8211; Node structure to hide the language bar.<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span class=\"c1\">Node 1 contains a line of JavaScript:<\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c10\"><span class=\"c15 c14 c6 c3\">$(&#39;#headertoolbar&#39;).hide();<\/span><\/p><p class=\"c10 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span class=\"c1\">Which hides the toolbar. From its positioning, you probably already understood why both Autoplay and Start are needed: if you don&rsquo;t include Autoplay, the bar will be visible (and clickable!) until the user starts the conversation from the list, and without Start the dialogue would simply begin on its own. Therefore, we use both to execute a script from an empty node (node 1) while at the same time giving a &ldquo;beginning&rdquo; to players.<\/span><\/p><h2 class=\"c28\" id=\"h2yhug0yx8lem\"><span class=\"c15 c24 c7\">2.9 Using icons in choices<\/span><\/h2><p class=\"c0\"><span class=\"c1\">You can include HTML in the Menu Text like you can do in the Dialogue Text, which allows adding icons to choices.<\/span><\/p><p class=\"c0\"><span>A big library can be found here: <\/span><span class=\"c8\"><a class=\"c11\" href=\"https:\/\/fontawesome.com\/v4.7.0\/icons\/\">https:\/\/fontawesome.com\/v4.7.0\/icons\/<\/a><\/span><span class=\"c1\">. Taking the &ldquo;check-square-o&rdquo; icon as an example, the code to use can be found by clicking on it: <\/span><\/p><p class=\"c0\"><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 593.30px; height: 362.77px;\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/lh3.googleusercontent.com\/j423IDuK32x4J7VjcDrzc75JRNqbsNSR_ELTu3lSMBKKCdBGOQxOH4BceLHhhIAz20zUSnf-poEHKncBUM_AvQiIcTydhDkO3rHipmrWIAJq_NA4av97jy1dfRbDD_Uelg\" style=\"width: 593.30px; height: 362.77px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><\/p><p class=\"c0 c2\"><span class=\"c1\"><\/span><\/p><p class=\"c0\"><span>You can then paste that into the Menu Text, and the icon will appear when playing.<\/span><\/p><div><p class=\"c13 c2\"><span class=\"c1\"><\/span><\/p><\/div><\/body><\/html>","protected":false},"excerpt":{"rendered":"Jump to:Part 1. Introduction1.1. An overview of scripting1.1.1. Boolean operations1.1.2. Variables and operations1.1.3. Special variables1.2. Dialogue and Group nodes1.2.1. Conversation node1.2.2. Dialogue nodes1.2.3. Group nodes1.2.4. False actions1.3 Custom Asset Fields (CAFs)1.3.1. Voice1.3.2. Voice pitch\/rate\/volume1.3.3. Autoplay1.3.4. Location1.3.5. Choice caption1.4. Managing large dialogue treesPart 2. The Cookbook2.1. The &quot;Start&quot; node2.1.1. Only showing the &ldquo;Start&rdquo; node the first [&hellip;]","protected":false},"author":9,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"class_list":["post-2649","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.1.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>ChatMapper Cookbook<\/title>\n<meta name=\"description\" content=\"ChatMapper Cookbook\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/hyperspace.mv\/academy\/chatmapper-cookbook\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"ChatMapper Cookbook\" \/>\n<meta property=\"og:description\" content=\"ChatMapper Cookbook\" \/>\n<meta property=\"og:url\" content=\"https:\/\/hyperspace.mv\/academy\/chatmapper-cookbook\/\" \/>\n<meta property=\"og:site_name\" content=\"Metaverse Academy\" \/>\n<meta property=\"article:modified_time\" content=\"2022-01-14T12:50:29+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/lh5.googleusercontent.com\/kJGP5fGQfIKmOL5db7YqydGP0PlxS3k5wEo7j0ZnnT32CHyCYhpp5zqxJUJG2UtIFEE_OaZxaPVMmLmRwqkts29SX5Lgz3a-w5Fu4YqW66cNdOyInv9MTxMOjRDF-sXSTQ\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"29 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/hyperspace.mv\/academy\/chatmapper-cookbook\/\",\"url\":\"https:\/\/hyperspace.mv\/academy\/chatmapper-cookbook\/\",\"name\":\"ChatMapper Cookbook\",\"isPartOf\":{\"@id\":\"https:\/\/hyperspace.mv\/academy\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/hyperspace.mv\/academy\/chatmapper-cookbook\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/hyperspace.mv\/academy\/chatmapper-cookbook\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/lh5.googleusercontent.com\/kJGP5fGQfIKmOL5db7YqydGP0PlxS3k5wEo7j0ZnnT32CHyCYhpp5zqxJUJG2UtIFEE_OaZxaPVMmLmRwqkts29SX5Lgz3a-w5Fu4YqW66cNdOyInv9MTxMOjRDF-sXSTQ\",\"datePublished\":\"2019-08-26T15:49:44+00:00\",\"dateModified\":\"2022-01-14T12:50:29+00:00\",\"description\":\"ChatMapper Cookbook\",\"breadcrumb\":{\"@id\":\"https:\/\/hyperspace.mv\/academy\/chatmapper-cookbook\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/hyperspace.mv\/academy\/chatmapper-cookbook\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/hyperspace.mv\/academy\/chatmapper-cookbook\/#primaryimage\",\"url\":\"https:\/\/lh5.googleusercontent.com\/kJGP5fGQfIKmOL5db7YqydGP0PlxS3k5wEo7j0ZnnT32CHyCYhpp5zqxJUJG2UtIFEE_OaZxaPVMmLmRwqkts29SX5Lgz3a-w5Fu4YqW66cNdOyInv9MTxMOjRDF-sXSTQ\",\"contentUrl\":\"https:\/\/lh5.googleusercontent.com\/kJGP5fGQfIKmOL5db7YqydGP0PlxS3k5wEo7j0ZnnT32CHyCYhpp5zqxJUJG2UtIFEE_OaZxaPVMmLmRwqkts29SX5Lgz3a-w5Fu4YqW66cNdOyInv9MTxMOjRDF-sXSTQ\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/hyperspace.mv\/academy\/chatmapper-cookbook\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/hyperspace.mv\/academy\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ChatMapper Cookbook\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/hyperspace.mv\/academy\/#website\",\"url\":\"https:\/\/hyperspace.mv\/academy\/\",\"name\":\"Metaverse Academy\",\"description\":\"Learn to build WebXR metaverse experiences for 3D, 360, VR\/AR\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/hyperspace.mv\/academy\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"ChatMapper Cookbook","description":"ChatMapper Cookbook","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/hyperspace.mv\/academy\/chatmapper-cookbook\/","og_locale":"en_US","og_type":"article","og_title":"ChatMapper Cookbook","og_description":"ChatMapper Cookbook","og_url":"https:\/\/hyperspace.mv\/academy\/chatmapper-cookbook\/","og_site_name":"Metaverse Academy","article_modified_time":"2022-01-14T12:50:29+00:00","og_image":[{"url":"https:\/\/lh5.googleusercontent.com\/kJGP5fGQfIKmOL5db7YqydGP0PlxS3k5wEo7j0ZnnT32CHyCYhpp5zqxJUJG2UtIFEE_OaZxaPVMmLmRwqkts29SX5Lgz3a-w5Fu4YqW66cNdOyInv9MTxMOjRDF-sXSTQ","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"29 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/hyperspace.mv\/academy\/chatmapper-cookbook\/","url":"https:\/\/hyperspace.mv\/academy\/chatmapper-cookbook\/","name":"ChatMapper Cookbook","isPartOf":{"@id":"https:\/\/hyperspace.mv\/academy\/#website"},"primaryImageOfPage":{"@id":"https:\/\/hyperspace.mv\/academy\/chatmapper-cookbook\/#primaryimage"},"image":{"@id":"https:\/\/hyperspace.mv\/academy\/chatmapper-cookbook\/#primaryimage"},"thumbnailUrl":"https:\/\/lh5.googleusercontent.com\/kJGP5fGQfIKmOL5db7YqydGP0PlxS3k5wEo7j0ZnnT32CHyCYhpp5zqxJUJG2UtIFEE_OaZxaPVMmLmRwqkts29SX5Lgz3a-w5Fu4YqW66cNdOyInv9MTxMOjRDF-sXSTQ","datePublished":"2019-08-26T15:49:44+00:00","dateModified":"2022-01-14T12:50:29+00:00","description":"ChatMapper Cookbook","breadcrumb":{"@id":"https:\/\/hyperspace.mv\/academy\/chatmapper-cookbook\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/hyperspace.mv\/academy\/chatmapper-cookbook\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/hyperspace.mv\/academy\/chatmapper-cookbook\/#primaryimage","url":"https:\/\/lh5.googleusercontent.com\/kJGP5fGQfIKmOL5db7YqydGP0PlxS3k5wEo7j0ZnnT32CHyCYhpp5zqxJUJG2UtIFEE_OaZxaPVMmLmRwqkts29SX5Lgz3a-w5Fu4YqW66cNdOyInv9MTxMOjRDF-sXSTQ","contentUrl":"https:\/\/lh5.googleusercontent.com\/kJGP5fGQfIKmOL5db7YqydGP0PlxS3k5wEo7j0ZnnT32CHyCYhpp5zqxJUJG2UtIFEE_OaZxaPVMmLmRwqkts29SX5Lgz3a-w5Fu4YqW66cNdOyInv9MTxMOjRDF-sXSTQ"},{"@type":"BreadcrumbList","@id":"https:\/\/hyperspace.mv\/academy\/chatmapper-cookbook\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/hyperspace.mv\/academy\/"},{"@type":"ListItem","position":2,"name":"ChatMapper Cookbook"}]},{"@type":"WebSite","@id":"https:\/\/hyperspace.mv\/academy\/#website","url":"https:\/\/hyperspace.mv\/academy\/","name":"Metaverse Academy","description":"Learn to build WebXR metaverse experiences for 3D, 360, VR\/AR","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/hyperspace.mv\/academy\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/hyperspace.mv\/academy\/wp-json\/wp\/v2\/pages\/2649","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hyperspace.mv\/academy\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/hyperspace.mv\/academy\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/hyperspace.mv\/academy\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/hyperspace.mv\/academy\/wp-json\/wp\/v2\/comments?post=2649"}],"version-history":[{"count":9,"href":"https:\/\/hyperspace.mv\/academy\/wp-json\/wp\/v2\/pages\/2649\/revisions"}],"predecessor-version":[{"id":3978,"href":"https:\/\/hyperspace.mv\/academy\/wp-json\/wp\/v2\/pages\/2649\/revisions\/3978"}],"wp:attachment":[{"href":"https:\/\/hyperspace.mv\/academy\/wp-json\/wp\/v2\/media?parent=2649"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}