(include "sci.sh")
(use "Main")
(use "Class_255_0")
(use "mall")
(use "BeltWay")
(use "SQRoom")
(use "Osc")
(use "RandCycle")
(use "Polygon")
(use "Class_950_0")
(use "MoveFwd")
(use "Sound")
(use "Cycle")
(use "PicView")
(use "Obj")
(script 370)


(local
    local0
    local1
    gEgoX
    local3
    local4
    local5
    local6[24] = (0 0 0 0 101 45 1 102 51 2 103 62 3 104 65 4 106 71 5 106 74 65535 65535 65535 )
    local30 = 59
    gGameDetailLevel

)
(instance public rm370 of SQRoom
    (properties
        picture 370
        style 30
        east 375
        south 400
        west 400
    )

    (method (init)
        (var temp0, temp1)
        proc0_2()
        Load(rsVIEW 370)
        = gGameDetailLevel (send gGame:detailLevel)
        (if ((<> gWest 371) and not Btest(8))
            (send gLongSong2:
                number(371)
                loop(-1)
                flags(1)
                playBed()
            )
        )(else
            (if (Btest(8))
                (send gLongSong2:
                    number(0)
                    vol(0)
                    stop()
                )
            )
        )
        (switch (gWest)
            (case west
                (if (== (send (ScriptID(700 0)):whichBelt) 1)
                    = temp0 37
                    = temp1 239
                )(else
                    = temp0 65518
                    = temp1 178
                )
                (send gEgo:
                    x(temp0)
                    y(temp1)
                    setLoop(gStopGroop)
                )
                (self:setScript(ScriptID(700 1) 0 egoBwGreen))
            )
            (case east
                (if (== (send (ScriptID(700 0)):whichBelt) 1)
                    = temp0 339
                    = temp1 66
                )(else
                    = temp0 329
                    = temp1 3
                )
                (send gEgo:
                    x(temp0)
                    y(temp1)
                    setLoop(gStopGroop)
                )
                (self:setScript(ScriptID(700 1) 0 egoBwBlue))
            )
            (case 405
                (send gLongSong:
                    number(405)
                    loop(-1)
                    vol(127)
                    flags(1)
                    play()
                )
                (self:setScript(fromElsewhereScript 0 0))
            )
            (default 
                (send gLongSong:
                    number(405)
                    loop(-1)
                    vol(95)
                    flags(1)
                    play()
                )
                (send gEgo:posn(65526 65526))
                (if ((proc700_3(ScriptID(700 0) 509 128) and not proc700_3(ScriptID(700 0) 511 4)) and not proc700_3(ScriptID(700 0) 511 16))
                    (self:setScript(tossScript))
                )(else
                    (mall:rFlag3((& (mall:rFlag3) $ffef)))
                    (self:setScript(fromElsewhereScript 0 1))
                )
            )
        )
        (self:addObstacle((send ((Polygon:new())):
                type(2)
                init(0 189 0 185 122 123 136 118 174 141 79 189)
                yourself()
            )
 (send ((Polygon:new())):
                type(2)
                init(319 23 319 69 214 122 175 98 182 92)
                yourself()
            )
 (send ((Polygon:new())):
                type(2)
                init(180 189 207 176 224 189)
                yourself()
            )
 (send ((Polygon:new())):
                type(2)
                init(319 189 304 189 291 183 291 180 279 173 279 166 252 152 319 119)
                yourself()
            )
))
        (send gEgo:
            init()
            setPri(-1)
        )
        (super:init())
        (if ((<> gWest 371) and Btest(8))
            (send gAddToPics:
                add(door)
                eachElementDo(102)
                doit()
            )
            (self:addObstacle((send ((Polygon:new())):
                    type(2)
                    init(296 0 178 61 161 62 142 60 114 46 68 69 74 75 85 86 88 93 87 101 82 111 0 154 0 0)
                    yourself()
                )
))
        )(else
            (self:addObstacle((send ((Polygon:new())):
                    type(2)
                    init(0 153 0 19 75 76 81 81 87 88 88 92 90 101 84 109)
                    yourself()
                )
 (send ((Polygon:new())):
                    type(2)
                    init(296 0 179 60 161 61 143 60 50 0)
                    yourself()
                )
))
        )
        (dummy1:init())
        (dummy2:init())
        (if (> (send gGame:detailLevel) 2)
            (dummy1:setCycle(Osc))
            (dummy2:setCycle(Osc))
            (light2:
                init()
                setCycle(RandCycle)
            )
            (light3:
                init()
                setCycle(RandCycle)
            )
            (light4:
                init()
                setCycle(RandCycle)
            )
            (light5:
                init()
                setCycle(RandCycle)
            )
            (light6:
                init()
                setCycle(RandCycle)
            )
            (light7:
                init()
                setCycle(RandCycle)
            )
        )
        (if (Btest(23))
            Bclear(23)
            (send (ScriptID(700 6)):
                init()
                illegalBits(0)
                ignoreActors()
                setScript(sp1Squeeze)
            )
            Load(rsSOUND 105)
        )
        (self:setRegions(700))
        (send gFeatures:
            addToFront(steps bush1 bush2 store)
            eachElementDo(102)
            doit()
        )
    )


    (method (doit)
        (var temp0, temp1[5])
        = temp0 GetDistance((send gEgo:x) (send gEgo:y) local30 0)
        (if (< temp0 0)
            = temp0 0
        )(else
            (if (> temp0 300)
                = temp0 300
            )
        )
        (send gLongSong2:
            vol(- 127 (/ temp0 3))
            changeState()
        )
        (if (<> gGameDetailLevel (send gGame:detailLevel))
            = gGameDetailLevel (send gGame:detailLevel)
            (if (> gGameDetailLevel 1)
                (dummy1:setCycle(Osc))
                (dummy2:setCycle(Osc))
            )(else
                (dummy1:stopUpd())
                (dummy2:stopUpd())
            )
        )
        (if (script)
            0
        )(else
            (if (== (send gEgo:edgeHit) 2)
                proc0_2()
                (send (ScriptID(700 0)):enterBelt(egoBwGreen))
                (self:setScript(ScriptID(700 2) 0 east))
            )(else
                (if ((== (send gEgo:edgeHit) 4) or (== (send gEgo:edgeHit) 3))
                    (if (proc0_5(gEgo 4))
                        (send gEgo:
                            edgeHit(0)
                            setMotion(0)
                            posn(+ (send gEgo:x) 3 - (send gEgo:y) 4)
                        )
                    )(else
                        proc0_2()
                        (send (ScriptID(700 0)):enterBelt(egoBwBlue))
                        (self:setScript(ScriptID(700 2) 0 west))
                    )
                )(else
                    (if (proc0_5(gEgo 8))
                        (send global2:newRoom(371))
                    )(else
                        (if (proc0_5(gEgo 16))
                            proc0_2()
                            (self:setScript(goToRamaScript))
                        )(else
                            (if (proc0_5(gEgo 4))
                                (egoBwGreen:
                                    who(gEgo)
                                    doit()
                                )
                                (send (ScriptID(700 0)):whichBelt(1))
                                proc700_5(0)
                                (send gLongSong:fade(127 10 5 0))
                            )(else
                                (if (proc0_5(gEgo 2))
                                    (egoBwBlue:
                                        who(gEgo)
                                        doit()
                                    )
                                    (send (ScriptID(700 0)):whichBelt(2))
                                    proc700_5(0)
                                    (send gLongSong:fade(95 10 5 0))
                                )(else
                                    (if ((egoBwGreen:onCon) or (egoBwBlue:onCon))
                                        (egoBwGreen:onCon(0))
                                        (egoBwBlue:onCon(0))
                                        (send gEgo:setPri(-1))
                                        proc700_5(1)
                                    )
                                )
                            )
                        )
                    )
                )
            )
        )
        (super:doit())
    )


    (method (dispose)
        DisposeScript(804)
        (super:dispose())
    )

)
(instance tossScript of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                (send gEgo:setLoop(
                    (if (proc700_3(ScriptID(700 0) 511 8))
                        1
                    )(else
                        0
                    )
))
                = local5 0
                = seconds 5
            )
            (case 1
                = local5 (+ local5 3)
                (if (<> local6[local5] -1)
                    (send gEgo:
                        view(392)
                        illegalBits(0)
                        cel(local6[local5])
                        posn(local6[+ --state 1] local6[+ local5 2])
                    )
                    = cycles 1
                )(else
                    (self:cue())
                )
            )
            (case 2
                = seconds 2
            )
            (case 3
                Print("You should know by now that you can't just take things without paying for them, Roger.")
                (send gEgo:setCycle(End self))
            )
            (case 4
                proc0_3()
                (if (proc700_3(ScriptID(700 0) 511 8))
                    proc0_1(2 402 14)
                    proc0_9(14)
                )(else
                    proc0_1(2 0 4)
                    proc0_9(4)
                )
                proc700_5(1)
                (send (ScriptID(700 0)):rFlag1((& (send (ScriptID(700 0)):rFlag1) $ff7f)))
                (self:dispose())
            )
        )
    )

)
(instance fromElsewhereScript of Script
    (properties)

    (method (changeState newState)
        (var temp0, temp1, temp2, temp3)
        (switch (= state newState)
            (case 0
                (if (== (send gEgo:view) 373)
                    Bclear(8)
                )
                (if (register)
                    = temp0 75
                    = temp1 40
                    = temp2 110
                    = temp3 74
                )(else
                    = temp0 329
                    = temp1 244
                    = temp2 252
                    = temp3 168
                )
                (send gEgo:
                    x(temp0)
                    y(temp1)
                    setMotion(MoveTo temp2 temp3 self)
                )
            )
            (case 1
                (if ((== (send gEgo:view) 0) and Btest(29))
                    Bset(8)
                )
                proc700_5(1)
                proc0_3()
                (self:dispose())
            )
        )
    )

)
(instance goToRamaScript of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                (send gEgo:
                    setHeading(135)
                    setMotion(MoveFwd 80 self)
                )
            )
            (case 1
                (send global2:newRoom(405))
            )
        )
    )

)
(instance egoBwGreen of BeltWay
    (properties
        xStep 2
        yStep 1
        xOff 3
        yOff 1
        xTweak 1
        yTweak 1
        key 225
        head 63
        xDir 1
        yDir -1
    )
)
(instance egoBwBlue of BeltWay
    (properties
        xStep 2
        yStep 1
        xOff 10
        yOff 1
        xTweak 1
        yTweak 1
        key 45
        head 242
        xDir -1
        yDir 1
    )
)
(instance door of PicView
    (properties
        x 86
        y 69
        description "security door"
        lookStr "This store is closed. A security door blocks its entrance."
        view 370
        loop 8
        priority 1
        signal 16400
    )
)
(instance light2 of Prop
    (properties
        x 19
        y 108
        description "light"
        sightAngle 90
        view 370
        loop 2
        cel 4
    )

    (method (doVerb param1 param2)
        (switch (param1)
            (case 1
                Print("It's a flashing light.")
            )
            (case 11
                Print("You give the window a sniff. Nothing is smelled.")
            )
            (case 10
                Print("Dragging your tongue along the window brings you to the realization that it hasn't been washed in a long, long time. Countless people, beings, and creatures have exhaled on or near this, their little ones applying a variety of snacking compounds along the lower half.")
            )
            (case 4
                Print("You speak in the direction of the glass but your syllables mearly come careening back.")
            )
            (default 
                (super:doVerb(param1 rest param2))
            )
        )
    )

)
(instance light3 of Prop
    (properties
        x 194
        y 16
        description "light"
        sightAngle 90
        view 370
        loop 3
        cel 2
        priority 1
        signal 16
    )

    (method (doVerb param1 param2)
        (switch (param1)
            (case 1
                Print("It's a flashing light.")
            )
            (case 11
                Print("You give the window a sniff. Nothing is smelled.")
            )
            (case 10
                Print("Dragging your tongue along the window brings you to the realization that it hasn't been washed in a long, long time. Countless people, beings, and creatures have exhaled on or near this, their little ones applying a variety of snacking compounds along the lower half.")
            )
            (case 4
                Print("You speak in the direction of the glass but your syllables mearly come careening back.")
            )
            (default 
                (super:doVerb(param1 rest param2))
            )
        )
    )

)
(instance light4 of Prop
    (properties
        x 50
        y 75
        description "light"
        sightAngle 90
        view 370
        loop 4
        cel 1
        priority 15
        signal 16
    )

    (method (doVerb param1 param2)
        (switch (param1)
            (case 1
                Print("It's a flashing light.")
            )
            (case 11
                Print("You give the window a sniff. Nothing is smelled.")
            )
            (case 10
                Print("Dragging your tongue along the window brings you to the realization that it hasn't been washed in a long, long time. Countless people, beings, and creatures have exhaled on or near this, their little ones applying a variety of snacking compounds along the lower half.")
            )
            (case 4
                Print("You speak in the direction of the glass but your syllables mearly come careening back.")
            )
            (default 
                (super:doVerb(param1 rest param2))
            )
        )
    )

)
(instance light5 of Prop
    (properties
        x 140
        y 25
        description "light"
        sightAngle 90
        view 370
        loop 5
        cel 3
    )

    (method (doVerb param1 param2)
        (switch (param1)
            (case 1
                Print("It's a flashing light.")
            )
            (case 11
                Print("You give the window a sniff. Nothing is smelled.")
            )
            (case 10
                Print("Dragging your tongue along the window brings you to the realization that it hasn't been washed in a long, long time. Countless people, beings, and creatures have exhaled on or near this, their little ones applying a variety of snacking compounds along the lower half.")
            )
            (case 4
                Print("You speak in the direction of the glass but your syllables mearly come careening back.")
            )
            (default 
                (super:doVerb(param1 rest param2))
            )
        )
    )

)
(instance light6 of Prop
    (properties
        x 164
        y 28
        description "light"
        sightAngle 90
        view 370
        loop 6
        cel 3
    )

    (method (doVerb param1 param2)
        (switch (param1)
            (case 1
                Print("It's a flashing light.")
            )
            (case 11
                Print("You give the window a sniff. Nothing is smelled.")
            )
            (case 10
                Print("Dragging your tongue along the window brings you to the realization that it hasn't been washed in a long, long time. Countless people, beings, and creatures have exhaled on or near this, their little ones applying a variety of snacking compounds along the lower half.")
            )
            (case 4
                Print("You speak in the direction of the glass but your syllables mearly come careening back.")
            )
            (default 
                (super:doVerb(param1 rest param2))
            )
        )
    )

)
(instance light7 of Prop
    (properties
        x 48
        y 91
        description "light"
        sightAngle 90
        view 370
        loop 7
        cel 1
    )

    (method (doVerb param1 param2)
        (switch (param1)
            (case 1
                Print("It's a flashing light.")
            )
            (case 11
                Print("You give the window a sniff. Nothing is smelled.")
            )
            (case 10
                Print("Dragging your tongue along the window brings you to the realization that it hasn't been washed in a long, long time. Countless people, beings, and creatures have exhaled on or near this, their little ones applying a variety of snacking compounds along the lower half.")
            )
            (case 4
                Print("You speak in the direction of the glass but your syllables mearly come careening back.")
            )
            (default 
                (super:doVerb(param1 rest param2))
            )
        )
    )

)
(instance dummy1 of Prop
    (properties
        x 26
        y 101
        description "dummy"
        sightAngle 90
        lookStr "In the window, a robotic garment rack struts its stuff."
        view 370
        cycleSpeed 2
    )

    (method (doVerb param1 param2)
        (switch (param1)
            (case 11
                Print("You give the window a sniff. Nothing is smelled.")
            )
            (case 10
                Print("Dragging your tongue along the window brings you to the realization that it hasn't been washed in a long, long time. Countless people, beings, and creatures have exhaled on or near this, their little ones applying a variety of snacking compounds along the lower half.")
            )
            (case 4
                Print("You speak in the direction of the glass but your syllables mearly come careening back.")
            )
            (default 
                (super:doVerb(param1 rest param2))
            )
        )
    )

)
(instance dummy2 of Prop
    (properties
        x 160
        y 20
        description "dummy"
        sightAngle 90
        lookStr "In the window a robotic garment rack struts its stuff."
        view 370
        loop 1
        cycleSpeed 2
    )

    (method (doVerb param1 param2)
        (switch (param1)
            (case 11
                Print("You give the window a sniff. Nothing is smelled.")
            )
            (case 10
                Print("Dragging your tongue along the window brings you to the realization that it hasn't been washed in a long, long time. Countless people, beings, and creatures have exhaled on or near this, their little ones applying a variety of snacking compounds along the lower half.")
            )
            (case 4
                Print("You speak in the direction of the glass but your syllables mearly come careening back.")
            )
            (default 
                (super:doVerb(param1 rest param2))
            )
        )
    )

)
(instance blast of Prop
    (properties
        view 28
    )
)
(instance sp1Squeeze of Script
    (properties)

    (method (doit param1)
        (super:doit(rest param1))
        (if (not state and (> (send gEgo:x) 90))
            (self:cue())
        )(else
            (if (not register and proc0_5(client 1024))
                (if (> (send gEgo:x) 259)
                    (self:changeState(9))
                )
            )(else
                (if (not register and (< (send gEgo:y) 138))
                    (self:changeState(9))
                )
            )
        )
    )


    (method (changeState newState)
        (switch (= state newState)
            (case 0
                (send client:
                    setLoop(1)
                    setCel(0)
                    posn(320 2)
                )
            )
            (case 1
                (send client:
                    setLoop(1)
                    setCel(0)
                    setStep(2 2)
                    setMotion(MoveTo 244 46 self)
                )
            )
            (case 2
                (send client:
                    setLoop(2)
                    setMotion(MoveTo 231 49 self)
                )
            )
            (case 3
                (send client:
                    setMotion(MoveTo 0 172)
                    view(13)
                    setCycle(CT 1 1 self)
                )
            )
            (case 4
                = local0 21
                = local1 172
                = local3 210
                = gEgoX 226
                = local4 Graph(7 (- local0 1) (- local3 1) (+ local1 1) (+ gEgoX 1) 1)
                Graph(4 local0 gEgoX local1 local3 proc0_18(global133 global132) 4 -1)
                Graph(13 - local0 1 - local3 1 + local1 1 + gEgoX 1)
                (aSound:
                    number(105)
                    loop(1)
                    vol(127)
                    play()
                )
                = cycles 1
            )
            (case 5
                (send client:setCycle(End))
                Graph(8 local4)
                Graph(13 - local0 1 - local3 1 + local1 1 + gEgoX 1)
                (send client:cel(0))
                (blast:
                    init()
                    posn(210 170)
                    setCycle(End self)
                )
                (send (ScriptID(700 7)):
                    init()
                    illegalBits(0)
                    ignoreActors()
                    setScript(sp2Squeeze)
                )
            )
            (case 6
                (send client:setCycle(CT 1 1 self))
            )
            (case 7
                = local3 (- (send client:x) 4)
                = local0 (- (send client:y) 27)
                = gEgoX 275
                = local1 132
                = local4 Graph(7 (- local0 1) (- local3 1) (+ local1 1) (+ gEgoX 1) 1)
                Graph(4 local0 local3 local1 gEgoX proc0_18(global133 global132) 4 -1)
                Graph(13 - local0 1 - local3 1 + local1 1 + gEgoX 1)
                (aSound:
                    number(105)
                    loop(1)
                    vol(127)
                    play()
                )
                = cycles 1
            )
            (case 8
                (send client:setCycle(End))
                (blast:
                    init()
                    posn(275 132)
                    setCycle(End)
                )
                Graph(8 local4)
                Graph(13 - local0 1 - local3 1 + local1 1 + gEgoX 1)
                (send client:cel(0))
            )
            (case 9
                = register 1
                (send client:setCycle(CT 1 1 self))
            )
            (case 10
                = local3 (- (send client:x) 4)
                = local0 (- (send client:y) 27)
                = gEgoX (send gEgo:x)
                = local1 (- (send gEgo:y) 30)
                = local4 Graph(7 (- local0 1) (- local3 1) (+ local1 1) (+ gEgoX 1) 1)
                Graph(4 local0 local3 local1 gEgoX proc0_18(global133 global132) - (send gEgo:priority) 1 -1)
                Graph(13 - local0 1 - local3 1 + local1 1 + gEgoX 1)
                (aSound:
                    number(105)
                    loop(1)
                    vol(127)
                    play()
                )
                = cycles 1
            )
            (case 11
                (send client:setCycle(End))
                (blast:
                    init()
                    posn(gEgoX local1)
                    setCycle(End self)
                )
                Graph(8 local4)
                Graph(13 - local0 1 - local3 1 + local1 1 + gEgoX 1)
                (send client:cel(0))
            )
            (case 12
                proc0_10(8 9)
            )
        )
    )

)
(instance sp2Squeeze of Script
    (properties)

    (method (doit param1)
        (super:doit(rest param1))
        (if ((== state 1) and (((< (send gEgo:x) 130) or (> (+ (send gEgo:y) 4) (send client:y))) or (send global2:script)))
            (self:cue())
        )
    )


    (method (changeState newState)
        (switch (= state newState)
            (case 0
                (send client:
                    posn(33 229)
                    view(13)
                    setLoop(0)
                    setCel(0)
                )
                = cycles 8
            )
            (case 1
                (send client:setMotion(MoveTo 86 184 self))
            )
            (case 2
                (send client:
                    setCycle(CT 1 1 self)
                    setMotion(MoveTo 319 85)
                )
            )
            (case 3
                = register not (send global2:script)
                = local3 (+ (send client:x) 6)
                = local1 (- (send client:y) 29)
                (if (register)
                    = gEgoX (send gEgo:x)
                    = local0 (- (send gEgo:y) 32)
                    (send gEgo:setMotion(0))
                )(else
                    = gEgoX 295
                    = local0 151
                )
                = local4 Graph(7 (- local0 1) (- local3 1) (+ local1 1) (+ gEgoX 1) 1)
                Graph(4 local1 local3 local0 gEgoX proc0_18(global133 global132) - (send gEgo:priority) 1 -1)
                Graph(13 - local0 1 - local3 1 + local1 1 + gEgoX 1)
                (aSound:
                    number(105)
                    loop(1)
                    vol(127)
                    play()
                )
                = cycles 1
            )
            (case 4
                (send client:setCycle(End))
                (blast:
                    cel(0)
                    posn(gEgoX local0)
                    setPri(12)
                    setCycle(End self)
                )
                (if (register)
                    (send gEgo:
                        view(26)
                        cel(0)
                        setCycle(End)
                    )
                )
                Graph(8 local4)
                Graph(13 - local0 1 - local3 1 + local1 1 + gEgoX 1)
                (send client:cel(0))
            )
            (case 5
                (if (register)
                    proc0_10(8 10)
                )
            )
        )
    )

)
(instance store of Feature
    (properties
        description "Sacks"
        lookStr "This is Sack's, a high-class, high-priced dress shoppe."
    )

    (method (onMe param1)
        return <= 51 (/ (* 100 (- 145 (send param1:y))) proc999_3(1 (send param1:x)))
    )

)
(instance steps of Feature
    (properties
        x 310
        y 185
        description "steps"
        lookStr "These steps lead down to the Skate-O-Rama."
    )

    (method (doVerb param1 param2)
        (switch (param1)
            (case 11
                Print("It smells like something someone would walk on.")
            )
            (case 10
                Print("It tastes like something someone would walk on!")
            )
            (default 
                (super:doVerb(param1 rest param2))
            )
        )
    )


    (method (onMe param1)
        return == OnControl(4 (send param1:x) (send param1:y)) 2048
    )

)
(instance bush1 of Feature
    (properties
        x 65
        y 145
        nsTop 130
        nsLeft 57
        nsBottom 161
        nsRight 80
        description "fabricated flora"
        lookStr "This is a fine example of the wonders of fabricated flora."
    )

    (method (doVerb param1 param2)
        (switch (param1)
            (case 11
                Print("The fabricated flora has an equally realistic and artificial smell.")
            )
            (case 10
                Print("You know that eating plastic plants places pressure on your plumbing. You learned that reading JANITORIAL DIGEST")
            )
            (default 
                (super:doVerb(param1 rest param2))
            )
        )
    )

)
(instance bush2 of Feature
    (properties
        x 260
        y 50
        nsTop 36
        nsLeft 252
        nsBottom 61
        nsRight 275
        description "fabricated flora"
        lookStr "This is a fine example of the wonders of fabricated flora."
    )

    (method (doVerb param1 param2)
        (switch (param1)
            (case 11
                Print("They have a minty-fresh smell that keeps you refreshed.")
            )
            (case 10
                Print("You know that eating plastic plants places pressure on your plumbing. You learned that reading JANITORIAL DIGEST")
            )
            (default 
                (super:doVerb(param1 rest param2))
            )
        )
    )

)
(instance aSound of Sound
    (properties)
)
