diff --git a/ADApp/op/adl/firewire.adl b/ADApp/op/adl/firewire.adl new file mode 100644 index 0000000..48241e5 --- /dev/null +++ b/ADApp/op/adl/firewire.adl @@ -0,0 +1,1896 @@ + +file { + name="/home/epics/devel/areaDetector/1-5/ADApp/op/adl/firewire.adl" + version=030102 +} +display { + object { + x=585 + y=174 + width=700 + height=640 + } + clr=14 + bclr=4 + cmap="" + gridSpacing=5 + gridOn=0 + snapToGrid=0 +} +"color map" { + ncolors=65 + colors { + ffffff, + ececec, + dadada, + c8c8c8, + bbbbbb, + aeaeae, + 9e9e9e, + 919191, + 858585, + 787878, + 696969, + 5a5a5a, + 464646, + 2d2d2d, + 000000, + 00d800, + 1ebb00, + 339900, + 2d7f00, + 216c00, + fd0000, + de1309, + be190b, + a01207, + 820400, + 5893ff, + 597ee1, + 4b6ec7, + 3a5eab, + 27548d, + fbf34a, + f9da3c, + eeb62b, + e19015, + cd6100, + ffb0ff, + d67fe2, + ae4ebc, + 8b1a96, + 610a75, + a4aaff, + 8793e2, + 6a73c1, + 4d52a4, + 343386, + c7bb6d, + b79d5c, + a47e3c, + 7d5627, + 58340f, + 99ffff, + 73dfff, + 4ea5f9, + 2a63e4, + 0a00b8, + ebf1b5, + d4db9d, + bbc187, + a6a462, + 8b8239, + 73ff6b, + 52da3b, + 3cb420, + 289315, + 1a7309, + } +} +rectangle { + object { + x=458 + y=37 + width=107 + height=21 + } + "basic attribute" { + clr=2 + } +} +rectangle { + object { + x=345 + y=35 + width=350 + height=165 + } + "basic attribute" { + clr=14 + fill="outline" + } +} +text { + object { + x=431 + y=38 + width=159 + height=20 + } + "basic attribute" { + clr=54 + } + textix="Shutter" + align="horiz. centered" +} +text { + object { + x=361 + y=69 + width=150 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Shutter mode" + align="horiz. right" +} +menu { + object { + x=518 + y=69 + width=120 + height=20 + } + control { + chan="$(P)$(R)ShutterMode" + clr=14 + bclr=51 + } +} +text { + object { + x=411 + y=118 + width=100 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Open/Close" + align="horiz. right" +} +"message button" { + object { + x=518 + y=118 + width=60 + height=20 + } + control { + chan="$(P)$(R)ShutterControl" + clr=14 + bclr=51 + } + label="Open" + press_msg="1" +} +"message button" { + object { + x=585 + y=118 + width=60 + height=20 + } + control { + chan="$(P)$(R)ShutterControl" + clr=14 + bclr=51 + } + label="Close" + press_msg="0" +} +text { + object { + x=351 + y=93 + width=120 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Status: Det." + align="horiz. right" +} +"text update" { + object { + x=477 + y=94 + width=60 + height=18 + } + monitor { + chan="$(P)$(R)ShutterStatus_RBV" + clr=54 + bclr=2 + } + clrmod="alarm" + align="horiz. centered" + limits { + } +} +"text entry" { + object { + x=477 + y=143 + width=60 + height=20 + } + control { + chan="$(P)$(R)ShutterOpenDelay" + clr=14 + bclr=51 + } + limits { + } +} +text { + object { + x=360 + y=143 + width=110 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Delay: Open" + align="horiz. right" +} +text { + object { + x=560 + y=143 + width=50 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Close" + align="horiz. right" +} +"text entry" { + object { + x=617 + y=143 + width=60 + height=20 + } + control { + chan="$(P)$(R)ShutterCloseDelay" + clr=14 + bclr=51 + } + limits { + } +} +"related display" { + object { + x=550 + y=171 + width=70 + height=20 + } + display[0] { + name="ADEpicsShutter.adl" + args="P=$(P),R=$(R)" + } + clr=14 + bclr=51 +} +text { + object { + x=351 + y=171 + width=190 + height=20 + } + "basic attribute" { + clr=14 + } + textix="EPICS shutter setup" + align="horiz. right" +} +text { + object { + x=560 + y=93 + width=50 + height=20 + } + "basic attribute" { + clr=14 + } + textix="EPICS" + align="horiz. right" +} +"text update" { + object { + x=617 + y=94 + width=60 + height=18 + } + monitor { + chan="$(P)$(R)ShutterStatusEPICS_RBV" + clr=54 + bclr=2 + } + clrmod="alarm" + align="horiz. centered" + limits { + } +} +rectangle { + object { + x=119 + y=37 + width=107 + height=21 + } + "basic attribute" { + clr=2 + } +} +rectangle { + object { + x=5 + y=35 + width=335 + height=250 + } + "basic attribute" { + clr=14 + fill="outline" + } +} +text { + object { + x=93 + y=38 + width=159 + height=20 + } + "basic attribute" { + clr=54 + } + textix="Setup" + align="horiz. centered" +} +composite { + object { + x=63 + y=94 + width=268 + height=20 + } + "composite name"="" + children { + text { + object { + x=171 + y=95 + width=160 + height=18 + } + "basic attribute" { + clr=54 + } + textix="$(P)$(R)" + } + text { + object { + x=63 + y=94 + width=100 + height=20 + } + "basic attribute" { + clr=14 + } + textix="EPICS name" + align="horiz. right" + } + } +} +composite { + object { + x=43 + y=119 + width=288 + height=20 + } + "composite name"="" + children { + text { + object { + x=43 + y=119 + width=120 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Manufacturer" + align="horiz. right" + } + "text update" { + object { + x=171 + y=120 + width=160 + height=18 + } + monitor { + chan="$(P)$(R)Manufacturer_RBV" + clr=54 + bclr=4 + } + limits { + } + } + } +} +text { + object { + x=73 + y=241 + width=90 + height=20 + } + "basic attribute" { + clr=14 + } + textix=" More" + align="horiz. right" +} +"related display" { + object { + x=172 + y=241 + width=70 + height=20 + } + display[0] { + label="asyn record" + name="asynRecord.adl" + args="P=$(P),R=$(R)AsynIO" + } + display[1] { + label="Save restore status" + name="save_restoreStatus_more.adl" + args="P=$(P)" + } + display[2] { + label="Image plugin #1" + name="NDStdArrays.adl" + args="P=$(P), R=$(I)" + } + display[3] { + label="ROI plugin #1" + name="NDROI.adl" + args="P=$(P), R=$(ROI)" + } + display[4] { + label="netCDF plugin #1" + name="NDFileNetCDF.adl" + args="P=$(P), R=$(NETCDF)" + } + display[5] { + label="TIFF plugin #1" + name="NDFileTIFF.adl" + args="P=$(P), R=$(TIFF)" + } + display[6] { + label="JPEG plugin #1" + name="NDFileJPEG.adl" + args="P=$(P), R=$(JPEG)" + } + display[7] { + label="Nexus plugin #1" + name="NDFileNexus.adl" + args="P=$(P), R=$(NEXUS)" + } + display[8] { + label="Color convert plugin #1" + name="NDColorConvert.adl" + args="P=$(P), R=$(CC)" + } + clr=14 + bclr=51 +} +text { + object { + x=113 + y=144 + width=50 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Model" + align="horiz. right" +} +"text update" { + object { + x=171 + y=145 + width=160 + height=18 + } + monitor { + chan="$(P)$(R)Model_RBV" + clr=54 + bclr=4 + } + limits { + } +} +text { + object { + x=63 + y=194 + width=100 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Connection" + align="horiz. right" +} +"message button" { + object { + x=171 + y=194 + width=80 + height=20 + } + control { + chan="$(P)$(R)AsynIO.CNCT" + clr=14 + bclr=51 + } + label="Connect" + press_msg="1" +} +"message button" { + object { + x=256 + y=194 + width=80 + height=20 + } + control { + chan="$(P)$(R)AsynIO.CNCT" + clr=14 + bclr=51 + } + label="Disconnect" + press_msg="0" +} +text { + object { + x=202 + y=167 + width=90 + height=20 + } + "basic attribute" { + clr=63 + } + "dynamic attribute" { + vis="if not zero" + calc="0" + chan="$(P)$(R)AsynIO.CNCT" + } + textix="Connected" + align="horiz. centered" +} +text { + object { + x=187 + y=167 + width=120 + height=20 + } + "basic attribute" { + clr=20 + } + "dynamic attribute" { + vis="if zero" + chan="$(P)$(R)AsynIO.CNCT" + } + textix="Disconnected" + align="horiz. centered" +} +text { + object { + x=63 + y=69 + width=100 + height=20 + } + "basic attribute" { + clr=14 + } + textix="asyn port" + align="horiz. right" +} +"text update" { + object { + x=171 + y=70 + width=160 + height=18 + } + monitor { + chan="$(P)$(R)PortName_RBV" + clr=54 + bclr=4 + } + limits { + } +} +rectangle { + object { + x=119 + y=292 + width=107 + height=21 + } + "basic attribute" { + clr=2 + } +} +rectangle { + object { + x=5 + y=290 + width=335 + height=295 + } + "basic attribute" { + clr=14 + fill="outline" + } +} +text { + object { + x=93 + y=293 + width=159 + height=20 + } + "basic attribute" { + clr=54 + } + textix="Readout" + align="horiz. centered" +} +text { + object { + x=173 + y=320 + width=10 + height=20 + } + "basic attribute" { + clr=14 + } + textix="X" + align="horiz. right" +} +text { + object { + x=266 + y=320 + width=10 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Y" + align="horiz. right" +} +composite { + object { + x=472 + y=207 + width=105 + height=21 + } + "composite name"="" + children { + rectangle { + object { + x=472 + y=207 + width=105 + height=21 + } + "basic attribute" { + clr=2 + } + } + } +} +rectangle { + object { + x=345 + y=205 + width=350 + height=360 + } + "basic attribute" { + clr=14 + fill="outline" + } +} +text { + object { + x=452 + y=208 + width=157 + height=20 + } + "basic attribute" { + clr=54 + } + textix="Collect" + align="horiz. centered" +} +text { + object { + x=391 + y=229 + width=130 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Exposure time" + align="horiz. right" +} +"text entry" { + object { + x=530 + y=229 + width=59 + height=20 + } + control { + chan="$(P)$(R)AcquireTime" + clr=14 + bclr=51 + } + limits { + } +} +"text update" { + object { + x=596 + y=230 + width=79 + height=18 + } + monitor { + chan="$(P)$(R)AcquireTime_RBV" + clr=54 + bclr=4 + } + limits { + } +} +text { + object { + x=381 + y=254 + width=140 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Acquire period" + align="horiz. right" +} +"text entry" { + object { + x=530 + y=254 + width=59 + height=20 + } + control { + chan="$(P)$(R)AcquirePeriod" + clr=14 + bclr=51 + } + limits { + } +} +"text update" { + object { + x=596 + y=255 + width=79 + height=18 + } + monitor { + chan="$(P)$(R)AcquirePeriod_RBV" + clr=54 + bclr=4 + } + limits { + } +} +text { + object { + x=441 + y=279 + width=80 + height=20 + } + "basic attribute" { + clr=14 + } + textix="# Images" + align="horiz. right" +} +"text entry" { + object { + x=530 + y=279 + width=59 + height=20 + } + control { + chan="$(P)$(R)NumImages" + clr=14 + bclr=51 + } + limits { + } +} +"text update" { + object { + x=596 + y=280 + width=79 + height=18 + } + monitor { + chan="$(P)$(R)NumImages_RBV" + clr=54 + bclr=4 + } + limits { + } +} +text { + object { + x=361 + y=304 + width=160 + height=20 + } + "basic attribute" { + clr=14 + } + textix="# Images complete" + align="horiz. right" +} +"text update" { + object { + x=596 + y=305 + width=67 + height=18 + } + monitor { + chan="$(P)$(R)NumImagesCounter_RBV" + clr=54 + bclr=4 + } + limits { + } +} +composite { + object { + x=345 + y=570 + width=350 + height=60 + } + "composite name"="" + children { + composite { + object { + x=472 + y=572 + width=107 + height=21 + } + "composite name"="" + children { + rectangle { + object { + x=472 + y=572 + width=107 + height=21 + } + "basic attribute" { + clr=2 + } + } + } + } + text { + object { + x=505 + y=572 + width=40 + height=20 + } + "basic attribute" { + clr=54 + } + textix="Attributes" + align="horiz. centered" + } + rectangle { + object { + x=345 + y=570 + width=350 + height=60 + } + "basic attribute" { + clr=14 + fill="outline" + } + } + text { + object { + x=358 + y=599 + width=40 + height=20 + } + "basic attribute" { + clr=14 + } + textix="File" + align="horiz. right" + } + "text entry" { + object { + x=403 + y=600 + width=280 + height=20 + } + control { + chan="$(P)$(R)NDAttributesFile" + clr=14 + bclr=51 + } + format="string" + limits { + } + } + } +} +composite { + object { + x=100 + y=4 + width=500 + height=26 + } + "composite name"="" + children { + rectangle { + object { + x=100 + y=4 + width=500 + height=25 + } + "basic attribute" { + clr=2 + } + } + text { + object { + x=158 + y=5 + width=384 + height=25 + } + "basic attribute" { + clr=54 + } + textix="Firewire Camera - $(P)$(R)" + align="horiz. centered" + } + } +} +"text entry" { + object { + x=148 + y=365 + width=60 + height=20 + } + control { + chan="$(P)$(R)BinX" + clr=14 + bclr=51 + } + limits { + } +} +"text entry" { + object { + x=241 + y=365 + width=60 + height=20 + } + control { + chan="$(P)$(R)BinY" + clr=14 + bclr=51 + } + limits { + } +} +"text update" { + object { + x=148 + y=345 + width=61 + height=18 + } + monitor { + chan="$(P)$(R)BinX_RBV" + clr=54 + bclr=4 + } + align="horiz. centered" + limits { + } +} +"text update" { + object { + x=241 + y=345 + width=61 + height=18 + } + monitor { + chan="$(P)$(R)BinY_RBV" + clr=54 + bclr=4 + } + align="horiz. centered" + limits { + } +} +text { + object { + x=67 + y=365 + width=70 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Binning" + align="horiz. right" +} +composite { + object { + x=148 + y=390 + width=154 + height=40 + } + "composite name"="" + children { + "text update" { + object { + x=148 + y=390 + width=61 + height=18 + } + monitor { + chan="$(P)$(R)MinX_RBV" + clr=54 + bclr=4 + } + align="horiz. centered" + limits { + } + } + "text entry" { + object { + x=148 + y=410 + width=60 + height=20 + } + control { + chan="$(P)$(R)MinX" + clr=14 + bclr=51 + } + limits { + } + } + "text entry" { + object { + x=241 + y=410 + width=60 + height=20 + } + control { + chan="$(P)$(R)MinY" + clr=14 + bclr=51 + } + limits { + } + } + "text update" { + object { + x=241 + y=390 + width=61 + height=18 + } + monitor { + chan="$(P)$(R)MinY_RBV" + clr=54 + bclr=4 + } + align="horiz. centered" + limits { + } + } + } +} +text { + object { + x=87 + y=410 + width=50 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Region start" + align="horiz. right" +} +text { + object { + x=97 + y=455 + width=40 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Region size" + align="horiz. right" +} +composite { + object { + x=148 + y=435 + width=154 + height=40 + } + "composite name"="" + children { + "text entry" { + object { + x=148 + y=455 + width=60 + height=20 + } + control { + chan="$(P)$(R)SizeX" + clr=14 + bclr=51 + } + limits { + } + } + "text entry" { + object { + x=241 + y=455 + width=60 + height=20 + } + control { + chan="$(P)$(R)SizeY" + clr=14 + bclr=51 + } + limits { + } + } + "text update" { + object { + x=148 + y=435 + width=61 + height=18 + } + monitor { + chan="$(P)$(R)SizeX_RBV" + clr=54 + bclr=4 + } + align="horiz. centered" + limits { + } + } + "text update" { + object { + x=241 + y=435 + width=61 + height=18 + } + monitor { + chan="$(P)$(R)SizeY_RBV" + clr=54 + bclr=4 + } + align="horiz. centered" + limits { + } + } + } +} +text { + object { + x=34 + y=505 + width=180 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Image size (bytes)" + align="horiz. right" +} +"text update" { + object { + x=241 + y=506 + width=61 + height=18 + } + monitor { + chan="$(P)$(R)ArraySize_RBV" + clr=54 + bclr=4 + } + align="horiz. centered" + limits { + } +} +text { + object { + x=37 + y=480 + width=100 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Image size" + align="horiz. right" +} +"text update" { + object { + x=148 + y=481 + width=61 + height=18 + } + monitor { + chan="$(P)$(R)ArraySizeX_RBV" + clr=54 + bclr=4 + } + align="horiz. centered" + limits { + } +} +"text update" { + object { + x=241 + y=481 + width=61 + height=18 + } + monitor { + chan="$(P)$(R)ArraySizeY_RBV" + clr=54 + bclr=4 + } + align="horiz. centered" + limits { + } +} +composite { + object { + x=47 + y=530 + width=273 + height=45 + } + "composite name"="" + children { + text { + object { + x=47 + y=530 + width=90 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Data type" + align="horiz. right" + } + "text update" { + object { + x=241 + y=531 + width=79 + height=18 + } + monitor { + chan="$(P)$(R)DataType_RBV" + clr=54 + bclr=4 + } + align="horiz. centered" + format="string" + limits { + } + } + text { + object { + x=47 + y=555 + width=90 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Color mode" + align="horiz. right" + } + "text update" { + object { + x=241 + y=556 + width=79 + height=18 + } + monitor { + chan="$(P)$(R)ColorMode_RBV" + clr=54 + bclr=4 + } + align="horiz. centered" + format="string" + limits { + } + } + } +} +composite { + object { + x=349 + y=329 + width=340 + height=229 + } + "composite name"="" + children { + menu { + object { + x=479 + y=329 + width=120 + height=20 + } + control { + chan="$(P)$(R)ImageMode" + clr=14 + bclr=51 + } + } + text { + object { + x=370 + y=329 + width=100 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Image mode" + align="horiz. right" + } + "text update" { + object { + x=606 + y=331 + width=79 + height=18 + } + monitor { + chan="$(P)$(R)ImageMode_RBV" + clr=54 + bclr=4 + } + format="string" + limits { + } + } + text { + object { + x=349 + y=354 + width=120 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Trigger mode" + align="horiz. right" + } + menu { + object { + x=478 + y=354 + width=120 + height=20 + } + control { + chan="$(P)$(R)TriggerMode" + clr=14 + bclr=51 + } + } + "text update" { + object { + x=605 + y=356 + width=79 + height=18 + } + monitor { + chan="$(P)$(R)TriggerMode_RBV" + clr=54 + bclr=4 + } + format="string" + limits { + } + } + composite { + object { + x=368 + y=463 + width=214 + height=20 + } + "composite name"="" + children { + text { + object { + x=368 + y=463 + width=140 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Time remaining" + align="horiz. right" + } + "text update" { + object { + x=515 + y=464 + width=67 + height=18 + } + monitor { + chan="$(P)$(R)TimeRemaining_RBV" + clr=54 + bclr=4 + } + limits { + } + } + } + } + composite { + object { + x=438 + y=393 + width=203 + height=40 + } + "composite name"="" + children { + text { + object { + x=438 + y=413 + width=70 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Acquire" + align="horiz. right" + } + composite { + object { + x=515 + y=393 + width=126 + height=40 + } + "composite name"="" + children { + text { + object { + x=558 + y=393 + width=40 + height=20 + } + "basic attribute" { + clr=63 + } + "dynamic attribute" { + vis="if zero" + calc="A" + chan="$(P)$(R)Acquire" + } + textix="Done" + align="horiz. centered" + } + text { + object { + x=529 + y=393 + width=100 + height=20 + } + "basic attribute" { + clr=30 + } + "dynamic attribute" { + vis="if not zero" + calc="A" + chan="$(P)$(R)Acquire" + } + textix="Collecting" + align="horiz. centered" + } + "message button" { + object { + x=515 + y=413 + width=59 + height=20 + } + control { + chan="$(P)$(R)Acquire" + clr=14 + bclr=51 + } + label="Start" + press_msg="1" + } + "message button" { + object { + x=582 + y=413 + width=59 + height=20 + } + control { + chan="$(P)$(R)Acquire" + clr=14 + bclr=51 + } + label="Stop" + press_msg="0" + } + } + } + } + } + composite { + object { + x=368 + y=438 + width=305 + height=20 + } + "composite name"="" + children { + text { + object { + x=368 + y=438 + width=140 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Detector state" + align="horiz. right" + } + "text update" { + object { + x=515 + y=438 + width=158 + height=18 + } + monitor { + chan="$(P)$(R)DetectorState_RBV" + clr=54 + bclr=2 + } + clrmod="alarm" + limits { + } + } + } + } + composite { + object { + x=378 + y=488 + width=303 + height=20 + } + "composite name"="" + children { + composite { + object { + x=515 + y=488 + width=166 + height=20 + } + "composite name"="" + children { + "text entry" { + object { + x=515 + y=488 + width=60 + height=20 + } + control { + chan="$(P)$(R)ArrayCounter" + clr=14 + bclr=51 + } + limits { + } + } + "text update" { + object { + x=581 + y=489 + width=100 + height=18 + } + monitor { + chan="$(P)$(R)ArrayCounter_RBV" + clr=54 + bclr=4 + } + limits { + } + } + } + } + text { + object { + x=378 + y=488 + width=130 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Image counter" + align="horiz. right" + } + } + } + composite { + object { + x=408 + y=513 + width=207 + height=20 + } + "composite name"="" + children { + text { + object { + x=408 + y=513 + width=100 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Image rate" + align="horiz. right" + } + "text update" { + object { + x=515 + y=514 + width=100 + height=18 + } + monitor { + chan="$(P)$(R)ArrayRate_RBV" + clr=54 + bclr=4 + } + limits { + } + } + } + } + text { + object { + x=358 + y=538 + width=150 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Array callbacks" + align="horiz. right" + } + menu { + object { + x=515 + y=538 + width=90 + height=20 + } + control { + chan="$(P)$(R)ArrayCallbacks" + clr=14 + bclr=51 + } + } + "text update" { + object { + x=610 + y=540 + width=79 + height=18 + } + monitor { + chan="$(P)$(R)ArrayCallbacks_RBV" + clr=54 + bclr=4 + } + align="horiz. centered" + format="string" + limits { + } + } + } +} +composite { + object { + x=76 + y=600 + width=218 + height=20 + } + "composite name"="" + children { + "related display" { + object { + x=224 + y=600 + width=70 + height=20 + } + display[0] { + label="Firewire features" + name="firewireFeatures.adl" + args="P=$(P),R=$(R)" + } + display[1] { + label="Firewire video formats" + name="firewireVideoFormats.adl" + args="P=$(P),R=$(R)" + } + clr=14 + bclr=51 + } + text { + object { + x=76 + y=600 + width=140 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Firewire setup" + align="horiz. right" + } + } +}