*** ***************************************************** *** Message #2191 ***************************************************** *** ***************************************************** Subject: Re: [RUSH 102.42a10] .common.pl - Old school interface since upgrade From: Greg Ercolano Date: Fri, 20 Jan 2012 20:00:59 -0500 On 01/20/12 16:01, Stephan Kosinski wrote: > Hello Greg, > > Since we I have update the .common.pl script from*102.42a8-alpha2* to *102.42a10* the interface for the submit script has drastically changed. > > It is not has nice and more importantly the user has to drag the corner of the window to see all the fields of the form while before the size was adjusted to the existing field and it is quite painful when you have to launch several renders a day. > > Is there a way to come back to the Old, Nice and Practical style? It sounds like you might have an odd mix of new and old submit scripts. Can you email me directly (to my erco(at)seriss.com address) the following as attachments: 1) The submit-nuke.pl script you're using, and the path to where it lives 2) The .common.pl script that is in the same directory as your submit-nuke script 3) The output of the following command: ls -la /usr/local/rush/examples/bin 4) The output of 'rush -version' -- Greg Ercolano, erco@(email surpressed) Seriss Corporation Rush Render Queue, http://seriss.com/rush/ Tel: (Tel# suppressed)ext.23 Fax: (Tel# suppressed) Cel: (Tel# suppressed) *** ***************************************************** *** Message #2190 ***************************************************** *** ***************************************************** Subject: [RUSH 102.42a10] .common.pl - Old school interface since upgrade From: Stephan Kosinski Date: Fri, 20 Jan 2012 19:01:55 -0500 This is a multi-part message in MIME format. --------------000604020002040702070009 Content-Type: multipart/alternative; boundary="------------000809020100020503000308" --------------000809020100020503000308 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Hello Greg, Since we I have update the .common.pl script from*102.42a8-alpha2* to *102.42a10* the interface for the submit script has drastically changed. It is not has nice and more importantly the user has to drag the corner of the window to see all the fields of the form while before the size was adjusted to the existing field and it is quite painful when you have to launch several renders a day. Is there a way to come back to the Old, Nice and Practical style? Thank you for your help. -- ................. Stephan Kosinski --------------000809020100020503000308 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Hello Greg,

    Since we I have update the .common.pl script from 102.42a8-alpha2 to 102.42a10 the interface for the submit script has drastically changed.

    It is not has nice and more importantly the user has to drag the corner of the window to see all the fields of the form while before the size was adjusted to the existing field and it is quite painful when you have to launch several renders a day.

    Is there a way to come back to the Old, Nice and Practical style?

   
Thank you for your help.

-- 
.................
Stephan Kosinski
--------------000809020100020503000308-- --------------000604020002040702070009 Content-Type: image/jpeg; name="submit_102.42a8Alpha10.jpg" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="submit_102.42a8Alpha10.jpg" /9j/4AAQSkZJRgABAQIAAAAAAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRof Hh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwh MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAAR CAIlBYEDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA AgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkK FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWG h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl 5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYk NOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk 5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwCey0vS7fwzokw0TRWU6dayTyS6XDK5LQIS 5JGSckk5Pc1ZtIvD11aPN/Ymg/uuJMaZb4Hv9zoe1WdOmjt/CujyyttRNJsyT/2wSuPks57K 5TUDZuLG6kybdD0XOQGHuOcVrtqZ7nU2On6ZdRtM/h7QliY/uh/ZUGdvqfl71qDwvYGISDw1 ohUruGNNts4+m2khlSaFJIzlGGQa347m3H2ZN6LIbfaJd33DjoR0pvTYS1OY/sfRv+gBon/g rt//AIij+x9G/wCgBon/AIK7f/4iujtmi2WO6eJfIZw4Lep4xRZzIFkQypGpkY7xIA35Ecii 67Br3MF9A0iO3imOg6FtlzgDS4M8HH9yo00XR5HVF8P6IWY4A/su36/98V0dvdJFFZRrKm3c 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 50Y/2W/OjH+y350AGP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350A GP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP8AZb86Mf7LfnRj /Zb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2 W/OjH+y350Y/2W/OjH+y350AGP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2W/OjH+y350Y/2W/O jH+y350AGP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP8AZb86 Mf7LfnRj/Zb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP8AZb86Mf7LfnRj/Zb86Mf7 LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2W/OjH+y3 50Y/2W/OjH+y350AGP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350A GP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP8AZb86Mf7LfnRj /Zb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2 W/OjH+y350Y/2W/OjH+y350AGP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2W/OjH+y350Y/2W/O jH+y350AGP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP8AZb86 Mf7LfnRj/Zb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP8AZb86Mf7LfnRj/Zb86Mf7 LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2W/OjH+y3 50Y/2W/OjH+y350AGP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350A GP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP8AZb86Mf7LfnRj /Zb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2 W/OjH+y350Y/2W/OjH+y350AGP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2W/OjH+y350Y/2W/O jH+y350AGP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP8AZb86 Mf7LfnRj/Zb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP8AZb86Mf7LfnRj/Zb86Mf7 LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2W/OjH+y3 50Y/2W/OjH+y350AGP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350A GP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP8AZb86Mf7LfnRj /Zb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2 W/OjH+y350Y/2W/OjH+y350AGP8AZb86qzDF5HwR+4l6/QVax/st+dVZhi8j4I/cS9foKAI6 5r4h/wDHl4n/AOwO3/oxK6Wua+If/Hl4n/7A7f8AoxKAOAooooA9X8NDOhaFwT/xINP6f7jV t4/2W/OsTw0M6FoXBP8AxINP6f7jVt4/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y35 0Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/ 2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8A Zb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb8 6ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/Oj H+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/ st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7L fnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y35 0Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/ 2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8A Zb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb8 6ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/Oj H+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/ st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7L fnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y35 0Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/ 2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8A Zb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb8 6ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/Oj H+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/ st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7L fnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y35 0Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/ 2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8A Zb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb8 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 jdZUDoGIP4YPcEdj7UAPx/st+dGP9lvzox/st+dGP9lvzoAMf7LfnRj/AGW/OjH+y350Y/2W /OgAx/st+dGP9lvzox/st+dGP9lvzoAMf7LfnRj/AGW/OjH+y350Y/2W/OgAx/st+dGP9lvz ox/st+dGP9lvzoAMf7LfnRj/AGW/OjH+y350Y/2W/OgAx/st+dGP9lvzox/st+dGP9lvzoAM f7LfnRj/AGW/OjH+y350Y/2W/OgAx/st+dGP9lvzox/st+dGP9lvzoAMf7LfnRj/AGW/OjH+ y350Y/2W/OgAx/st+dGP9lvzox/st+dGP9lvzoAMf7LfnRj/AGW/OjH+y350Y/2W/OgAx/st +dGP9lvzox/st+dGP9lvzoAMf7LfnRj/AGW/OjH+y350Y/2W/OgAx/st+dGP9lvzox/st+dG P9lvzoAMf7LfnRj/AGW/OjH+y350Y/2W/OgAx/st+dGP9lvzox/st+dGP9lvzoAMf7LfnRj/ AGW/OjH+y350Y/2W/OgAx/st+dGP9lvzox/st+dGP9lvzoAMf7LfnRj/AGW/OjH+y350Y/2W /OgAx/st+dGP9lvzox/st+dGP9lvzoAMf7LfnRj/AGW/OjH+y350Y/2W/OgAx/st+dGP9lvz ox/st+dGP9lvzoAMf7LfnRj/AGW/OjH+y350Y/2W/OgAx/st+dGP9lvzox/st+dGP9lvzoAM f7LfnRj/AGW/OjH+y350Y/2W/OgAx/st+dGP9lvzox/st+dGP9lvzoAMf7LfnRj/AGW/OjH+ y350Y/2W/OgAx/st+dGP9lvzox/st+dGP9lvzoAMf7LfnRj/AGW/OjH+y350Y/2W/OgAx/st +dGP9lvzox/st+dGP9lvzoAMf7LfnRj/AGW/OjH+y350Y/2W/OgAx/st+dGP9lvzox/st+dG P9lvzoAMf7LfnRj/AGW/OjH+y350Y/2W/OgAx/st+dGP9lvzox/st+dGP9lvzoAMf7LfnRj/ AGW/OjH+y350Y/2W/OgAx/st+dGP9lvzox/st+dGP9lvzoAMf7LfnRj/AGW/OjH+y350Y/2W /OgAx/st+dGP9lvzox/st+dGP9lvzoAMf7LfnRj/AGW/OjH+y350Y/2W/OgAx/st+dGP9lvz ox/st+dGP9lvzoAMf7LfnRj/AGW/OjH+y350Y/2W/OgAx/st+dGP9lvzox/st+dGP9lvzoAM f7LfnRj/AGW/OjH+y350Y/2W/OgAx/st+dGP9lvzox/st+dGP9lvzoAMf7LfnRj/AGW/OjH+ y350Y/2W/OgAx/st+dGP9lvzox/st+dGP9lvzoAMf7LfnVWYYvI+CP3EvX6CrWP9lvzqrMMX kfBH7iXr9BQBHXNfEP8A48vE/wD2B2/9GJXS1zXxD/48vE//AGB2/wDRiUAcBRRRQB6v4aGd C0Lgn/iQaf0/3Grbx/st+dYnhoZ0LQuCf+JBp/T/AHGrbx/st+dABj/Zb86Mf7LfnRj/AGW/ OjH+y350AGP9lvzox/st+dGP9lvzox/st+dABj/Zb86Mf7LfnRj/AGW/OjH+y350AGP9lvzo x/st+dGP9lvzox/st+dABj/Zb8657WtT/snW4bmY3BtINKvrmaKNvv8AltAc4yASAWAz/ePr W1eWv2uyntvMuIPOjaPzYX2umRjcp7EdQfWsWXw5dan9o/tq9jm8yymsk+x25g2pNt3k7nky fkXHQDnIORgAzNX17V00TVra/wBKbTLttFuL22lt73zdpRcMpIVSrqXQ5GQc8Hitqy1e9k1s adf6S1p51u1zbSLcrLuVWVWVwANrjenALLycMcc58nhTU7+C7Gra0LmaTTJdOhaKzESp5gG+ RhuO5iVTgFVGDgc1oWWi30etjUdQ1Jrvybdra2jW3WLarMrMzkE7nOxOQFXg4UZ4AKXinS4v IS9SfU4ppL20ibydRnjTa88cbAIrhRlSRwO+evNUvETzeHLW4GlPem4TSr66Q3N/JKilDBli JA5YgHKjIH3h/GSOn1TTv7StI4NzR7LmCfdjdny5Ukx+OzGe2c81V1bQItYnJnklSF7C5sXV ANxWYx5YE9CBH6Hr7cgGLfeILvRLnV77UbcboLCzK2kV5mISSTzoD5jhQoPybmIGAO+BWh4b 8TJr9zf2vl2pls/LYyWV6t1C6uDghwAQwKsCpUdAeQaZd+GbzUIryS51IJezwWyJPbW21YpI JpJY3COzZGXXKk87TyM8aemWep273Mmp6iLxpWBjjhtxDHCoGMKMsxJOSSWPbAHcA6fQ1H9m 9B/rZP8A0M1pbV9B+VZuhkDTeo/1sn/oZrS3L6j86ADavoPyo2r6D8qNy+o/OjcvqPzoANq+ g/KjavoPyo3L6j86Ny+o/OgA2r6D8qNq+g/KjcvqPzo3L6j86ADavoPyo2r6D8qNy+o/Ojcv qPzoANq+g/KjavoPyo3L6j86Ny+o/OgA2r6D8qNq+g/KjcvqPzo3L6j86ADavoPyo2r6D8qN y+o/OjcvqPzoANq+g/KjavoPyo3L6j86Ny+o/OgA2r6D8qNq+g/KjcvqPzo3L6j86ADavoPy o2r6D8qNy+o/OjcvqPzoANq+g/KjavoPyo3L6j86Ny+o/OgA2r6D8qNq+g/KjcvqPzo3L6j8 6ADavoPyo2r6D8qNy+o/OjcvqPzoANq+g/KjavoPyo3L6j86Ny+o/OgA2r6D8qNq+g/Kjcvq Pzo3L6j86ADavoPyo2r6D8qNy+o/OjcvqPzoANq+g/KjavoPyo3L6j86Ny+o/OgA2r6D8qNq +g/KjcvqPzo3L6j86ADavoPyo2r6D8qNy+o/OjcvqPzoANq+g/KjavoPyo3L6j86Ny+o/OgA 2r6D8qNq+g/KjcvqPzo3L6j86ADavoPyo2r6D8qNy+o/OjcvqPzoANq+g/KjavoPyo3L6j86 Ny+o/OgA2r6D8qNq+g/KjcvqPzo3L6j86ADavoPyo2r6D8qNy+o/OjcvqPzoANq+g/KjavoP yo3L6j86Ny+o/OgA2r6D8qa4AjYgDoaduX1H502Rl8tuR0PegDir7d/Z9wU3K3nths9D5tY+ o6Ve3f2aO3vpIIfOzclHKu8WxvlU4JBLbORggZwQa250D20oIO37QSx7AebyfyqbUtPtL7S7 u0jvLeN54XiV3RZFUspGSh4YDPQ8HpQByugW9xLBdub2e4svtH+gyyPkvDsTkHqw378Mclhg 5YEE9FpA/wCJcvDH95Jzn/batHybL/n4i/76FUdNQLZ/KpKmSQqQeCpdiCPYjBoAt4/2W/Oj H+y350Y/2W/OjH+y350AGP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y 350AGP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP8AZb86Mf7L fnRj/Zb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP8AZb86Mf7LfnRj/Zb86Mf7LfnQ AY/2W/OjH+y350Y/2W/OjH+y350AGP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2W/OjH+y350Y/ 2W/OjH+y350AGP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP8A 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 0AGP9lvzox/st+dGP9lvzox/st+dABj/AGW/OjH+y350Y/2W/OjH+y350AGP9lvzox/st+dG P9lvzox/st+dABj/AGW/OjH+y350Y/2W/OjH+y350AGP9lvzox/st+dGP9lvzox/st+dABj/ AGW/OjH+y350Y/2W/OjH+y350AGP9lvzox/st+dGP9lvzox/st+dABj/AGW/OjH+y350Y/2W /OjH+y350AGP9lvzox/st+dGP9lvzox/st+dABj/AGW/OjH+y350Y/2W/OjH+y350AGP9lvz ox/st+dGP9lvzox/st+dABj/AGW/OjH+y350Y/2W/OjH+y350AGP9lvzox/st+dGP9lvzox/ st+dABj/AGW/OjH+y350Y/2W/OjH+y350AGP9lvzox/st+dGP9lvzox/st+dABj/AGW/OjH+ y350Y/2W/OjH+y350AGP9lvzox/st+dGP9lvzox/st+dABj/AGW/OjH+y350Y/2W/OjH+y35 0AGP9lvzox/st+dGP9lvzox/st+dABj/AGW/OjH+y350Y/2W/OjH+y350AGP9lvzox/st+dG P9lvzox/st+dABj/AGW/OjH+y350Y/2W/OjH+y350AGP9lvzox/st+dGP9lvzox/st+dABj/ AGW/OjH+y350Y/2W/OjH+y350AGP9lvzox/st+dGP9lvzox/st+dABj/AGW/OjH+y350Y/2W /OjH+y350AGP9lvzox/st+dGP9lvzox/st+dABj/AGW/OjH+y350Y/2W/OjH+y350AGP9lvz ox/st+dGP9lvzox/st+dABj/AGW/OjH+y350Y/2W/OjH+y350AGP9lvzox/st+dGP9lvzox/ st+dABj/AGW/OjH+y350Y/2W/OjH+y350AGP9lvzox/st+dGP9lvzox/st+dABj/AGW/OjH+ y350Y/2W/OjH+y350AGP9lvzox/st+dGP9lvzox/st+dABj/AGW/OjH+y350Y/2W/OjH+y35 0AGP9lvzox/st+dGP9lvzox/st+dABj/AGW/OjH+y350Y/2W/OjH+y350AGP9lvzox/st+dG P9lvzox/st+dABj/AGW/OjH+y350Y/2W/OjH+y350AGP9lvzox/st+dGP9lvzox/st+dABj/ AGW/OjH+y350Y/2W/OjH+y350AGP9lvzox/st+dGP9lvzox/st+dABj/AGW/OjH+y350Y/2W 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 ykHH5dBUuP8AZb86Mf7LfnQBD9u1r/n0sf8Av63/AMTUc0uqXkL21xBaxwyqVdo2ZmAPXAIH P8vfpVrH+y350Y/2W/OgAx/st+dGP9lvzox/st+dGP8AZb86ADH+y350Y/2W/OjH+y350Y/2 W/OgAx/st+dGP9lvzox/st+dGP8AZb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP9lv zox/st+dGP8AZb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP9lvzox/st+dGP8AZb86 ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP9lvzox/st+dGP8AZb86ADH+y350Y/2W/OjH +y350Y/2W/OgAx/st+dGP9lvzox/st+dGP8AZb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/s t+dGP9lvzox/st+dGP8AZb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP9lvzox/st+d GP8AZb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP9lvzox/st+dGP8AZb86ADH+y350 Y/2W/OjH+y350Y/2W/OgAx/st+dGP9lvzox/st+dGP8AZb86ADH+y350Y/2W/OjH+y350Y/2 W/OgAx/st+dGP9lvzox/st+dGP8AZb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP9lv zox/st+dGP8AZb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP9lvzox/st+dGP8AZb86 ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP9lvzox/st+dGP8AZb86ADH+y350Y/2W/OjH +y350Y/2W/OgAx/st+dGP9lvzox/st+dGP8AZb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/s t+dGP9lvzox/st+dGP8AZb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP9lvzox/st+d GP8AZb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP9lvzox/st+dGP8AZb86ADH+y350 Y/2W/OjH+y350Y/2W/OgAx/st+dGP9lvzox/st+dGP8AZb86ADH+y350Y/2W/OjH+y350Y/2 W/OgAx/st+dGP9lvzox/st+dGP8AZb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP9lv zox/st+dGP8AZb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP9lvzox/st+dGP8AZb86 ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP9lvzox/st+dGP8AZb86ADH+y350Y/2W/OjH +y350Y/2W/OgAx/st+dGP9lvzox/st+dGP8AZb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/s t+dYXiIY+zcEfe6/hW7j/Zb86wvEQx9m4I+91/CgDDqhr3/Ip+Iv+wXJ/wCjI6v1Q17/AJFP xF/2C5P/AEZHQB7TRVb7dD/cuP8AwHk/+JooA4zw0M6FoXBP/Eg0/p/uNW02FGWBA9SaxfDQ zoWhcE/8SDT+n+41al0P9Gf5WHTqfegB/nQ/3x/32KPOh/vj/vsVlUUAavnQ/wB8f99ijzof 74/77FZVFAGr50P98f8AfYo86H++P++xWVRQBq+dD/fH/fYo86H++P8AvsVlUUAavnQ/3x/3 2KPOh/vj/vsVlUUAavnQ/wB8f99ijzof74/77FZVFAGr50P98f8AfYo86H++P++xWVRQBq+d D/fH/fYo86H++P8AvsVlUUAavnQ/3x/32KPOh/vj/vsVRjtZZVJSORsHB2gcH05Ip/2Cf/nh N+Sf/FUAW/Oh/vj/AL7FHnQ/3x/32KqfYJ/+eE35J/8AFUfYJ/8AnhN+Sf8AxVAFvzof74/7 7FHnQ/3x/wB9iqn2Cf8A54Tfkn/xVH2Cf/nhN+Sf/FUAW/Oh/vj/AL7FHnQ/3x/32KqfYJ/+ eE35J/8AFUfYJ/8AnhN+Sf8AxVAFvzof74/77FHnQ/3x/wB9iqn2Cf8A54Tfkn/xVH2Cf/nh N+Sf/FUAW/Oh/vj/AL7FHnQ/3x/32KqfYJ/+eE35J/8AFUfYJ/8AnhN+Sf8AxVAFvzof74/7 7FHnQ/3x/wB9iqn2Cf8A54Tfkn/xVH2Cf/nhN+Sf/FUAW/Oh/vj/AL7FHnQ/3x/32KqfYJ/+ eE35J/8AFUfYJ/8AnhN+Sf8AxVAFvzof74/77FHnQ/3x/wB9iqn2Cf8A54Tfkn/xVV5I3ikK SIyMOcN1xQBp+dD/AHx/32KPOh/vj/vsVj+aMnCu3uqMR+YFHmj+5L/36b/CgDY86H++P++x R50P98f99ishXD5xng4IIwR9RTqANXzof74/77FHnQ/3x/32KyqKANXzof74/wC+xR50P98f 99isqigDV86H++P++xR50P8AfH/fYrKooA1fOh/vj/vsUedD/fH/AH2KyqKANXzof74/77FH nQ/3x/32KyqKANXzof74/wC+xR50P98f99isqigDV86H++P++xR50P8AfH/fYrKooA1fOh/v j/vsUedD/fH/AH2KyqKANXzof74/77FHnQ/3x/32KyqKANXzof74/wC+xR50P98f99isqigD V86H++P++xR50P8AfH/fYrKooA1fOh/vj/vsUedD/fH/AH2KyqKANXzof74/77FHnQ/3x/32 KyqKANXzof74/wC+xR50P98f99isqigDV86H++P++xR50P8AfH/fYrKooA1fOh/vj/vsUedD /fH/AH2KyqKANXzof74/77FHnQ/3x/32KyqKANXzof74/wC+xR50P98f99isqigDV86H++P+ +xR50P8AfH/fYrKooA1fOh/vj/vsUedD/fH/AH2KyqKANXzof74/77FHnQ/3x/32KyqKANXz of74/wC+xR50P98f99isqigDV86H++P++xR50P8AfH/fYrKooA1fOh/vj/vsUedD/fH/AH2K yqKANXzof74/77FHnQ/3x/32KyqKANXzof74/wC+xR50P98f99isqigDV86H++P++xR50P8A fH/fYrKooA1fOh/vj/vsUedD/fH/AH2KyqKANXzof74/77FHnQ/3x/32KyqKANXzof74/wC+ xR50P98f99isqigDV86H++P++xR50P8AfH/fYrKooA1fOh/vj/vsUedD/fH/AH2KyqKANXzo f74/77FHnQ/3x/32KyqKANXzof74/wC+xR50P98f99isqigDV86H++P++xR50P8AfH/fYrKo oA1fOh/vj/vsUedD/fH/AH2KyqKANXzof74/77FHnQ/3x/32KyqKANXzof74/wC+xR50P98f 99isqigDV86H++P++xR50P8AfH/fYrKooA1fOh/vj/vsUedD/fH/AH2KyqKANXzof74/77FH nQ/3x/32KyqKANXzof74/wC+xR50P98f99isqigDV86H++P++xR50P8AfH/fYrKooA1fOh/v j/vsUedD/fH/AH2KyqKANXzof74/77FHnQ/3x/32KyqKANXzof74/wC+xR50P98f99isqigD V86H++P++xR50P8AfH/fYrKooA1fOh/vj/vsUedD/fH/AH2KyqKANXzof74/77FHnQ/3x/32 KyqKANXzof74/wC+xR50P98f99isqigDV86H++P++xR50P8AfH/fYrKooA1fOh/vj/vsUedD /fH/AH2KyqKANXzof74/77FHnQ/3x/32KyqKANXzof74/wC+xR50P98f99isqigDV86H++P+ +xR50P8AfH/fYrKooA1fOh/vj/vsUedD/fH/AH2KyqKANXzof74/77FHnQ/3x/32KyqKANXz of74/wC+xR50P98f99isqigDV86H++P++xR50P8AfH/fYrKooA1fOh/vj/vsUedD/fH/AH2K yqKANXzof74/77FHnQ/3x/32KyqKANXzof74/wC+xR50P98f99isqigDV86H++P++xR50P8A fH/fYrKooA1fOh/vj/vsUedD/fH/AH2KyqKANXzof74/77FHnQ/3x/32KyqKANXzof74/wC+ xR50P98f99isqigDXUq4yuWHqDmsTxEMfZuCPvdfwrTsRmFuCfm7fQVmeIhj7NwR97r+FAGH VDXv+RT8Rf8AYLk/9GR1fqhr3/Ip+Iv+wXJ/6MjoA9popMiigDhPDQzoWhcE/wDEg0/p/uNW pdD/AEZ/lYdOp96y/DQzoWhcE/8AEg0/p/uNWpdD/Rn+Vh06n3oAzaKKKACiiigAooooAKKK KACsPxLfGyXTQ2p/2bBPdmOa5zGNq+VIwGZAVGWVe1blUb+ykurzS5kZAtpctM4Y8kGGROPf Lj8M0AZ1vqtnY6ZNqP8AbdxrNt50cO6IQylGZguAIkGT86kjk4xges1zr8tsqZ0HV5ZTC8zx RRRsY1U4wW37WY9QqszY7Vb1aykv7OOGJkDLc28xLHjEcyOfxwpx71ka14en1HXor37Npt7b /ZjAIr8My27bs+YicqxIwCDtJ2KAwyaALMviqxj+eOG6ngFpHfPPHH8iQPu+ckkHgITtxuOe AcHD5fEtrBaXc81textbrG4gMOZZVkYrGVUEnLsCoVsMCPmC1l2vhrUV8P3ljM1qs82ixaam yRmXegmXcSVBwRIp6ccjnAJt654fuNUbUmia1Pn29qsSXCl0Z4ZXk2uv9xtyjj349QCzH4kg K3iz2V7bXNq0Sm2mRdzmU7Y9rKxQhmyud2AQc4xmr1jeyXfmLLY3VnImDsnCnIOcEMjMp6Hj OR3ABGciw0a4tbPUVXSdBtPtG1UtbeIlJEA+ZZX2ru3ZYD5PlznDdKm0DRm0u4vZ/strYx3P l4s7OVniVlBBkGVUAsCoIC/wA5JPAB1d9NqNlotjdWFzbwxHVYYblXt97yJJdxxkK24BOGYH KtnPG081u6jr3h/R7hbfU9Y02xnZA6x3N0kTFckZAYg4yDz7GsxtCOvaNBCdVvrGOK6M2LUQ ne6TB0J8yNvusgPGM85yK6WCNobeKJ5nndECtLIFDOQPvHaAMnrwAPQCgDBeXUIvHlrZSXNu 2mXFhczRwJb7XV43t1yzlju/1j4wFxnndwRmWOo38mp6fdyXjvBf6veaa1mY0EUSQ/adroQu /efs653MR87YA+XbtXPh6S48SQa0Nb1GJ4EMaWyLB5QjYxl05iLYYxKSd2Rzgii38MW1vqaX Yurp4IriW6gs2KeVDPJv3yKQu8k+bLwzFRvOAMLgA2PKj/uijyo/7op9FADPKj/uijyo/wC6 KfRQAzyo/wC6KPKj/uin0UAM8qP+6KPKj/uin0UAM8qP+6KPKj/uin0UAM8qP+6KPKj/ALop 9FADPKj/ALorkdd41dgO0a/zauxrjte/5DD/APXNf5tQBhyy6xHocr6c+65WBjbw5AVnAO0H kdTjPIqrbXGvQa8lhNqzXcb2r3Ep8sKYX3KFAweEbL7Q2W+RvmbBx1OnaeH063fcPmjB60zT dDa1hn84QLNLcSys0TMd4LnYSWOS2wID2GMDCgCgDIDStfzedI0jiNBlj2y1TU68gFvrEyA5 zDGf1am0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AX7EZhbgn5u30FZniIY+zcEfe6/hWnYjMLcE/N2+grM8RDH2bgj73X8KAMOqGvf8in4i/wCw XJ/6Mjq/VDXv+RT8Rf8AYLk/9GR0AbP/AAmXiL/n+0v/AMFUn/yTRXLfZ/8Apztfz/8AsaK+ Z/tDEfzfgj6j+zsN/L+LO98NDOhaFwT/AMSDT+n+41al0P8ARn+Vh06n3rL8NDOhaFwT/wAS DT+n+41al0P9Gf5WHTqfevpj5czaKKKACiiigAoqpfarp2meX9vv7W08zOzz5lj3YxnGTzjI /OpbW6t723S4tLiK4gfO2SJw6tg4OCODyCKAJqKKKACimRyxzKWikR1DMpKnIypII+oIIPuK ivdQstNhE19d29rEzbQ88gRSeuMk9eD+VAFiiqljqunan5n2C/tbvy8b/ImWTbnOM4PGcH8q t0AFFFFABRRRQBag1G6tkKxOuCckMCRn1GCP8/jmX+2r/wDvRf8AfLf/ABVSW9hG1p9omuBB H53kqzbQCxYIoyw6liAB6kDr1u/2A3/PV/8AvhP/AImgDO/tq/8A70X/AHy3/wAVR/bV/wD3 ov8Avlv/AIqtH+wG/wCer/8AfCf/ABNH9gN/z1f/AL4T/wCJoAzv7av/AO9F/wB8t/8AFUf2 1f8A96L/AL5b/wCKrR/sBv8Anq//AHwn/wATR/YDf89X/wC+E/8AiaAM7+2r/wDvRf8AfLf/ ABVH9tX/APei/wC+W/8Aiq0f7Ab/AJ6v/wB8J/8AE0f2A3/PV/8AvhP/AImgDO/tq/8A70X/ AHy3/wAVR/bV/wD3ov8Avlv/AIqtH+wG/wCer/8AfCf/ABNH9gN/z1f/AL4T/wCJoAzv7av/ AO9F/wB8t/8AFUf21f8A96L/AL5b/wCKrR/sBv8Anq//AHwn/wATR/YDf89X/wC+E/8AiaAM 7+2r/wDvRf8AfLf/ABVH9tX/APei/wC+W/8Aiq0f7Ab/AJ6v/wB8J/8AE0f2A3/PV/8AvhP/ AImgDO/tq/8A70X/AHy3/wAVR/bV/wD3ov8Avlv/AIqtH+wG/wCer/8AfCf/ABNH9gN/z1f/ AL4T/wCJoAzv7av/AO9F/wB8t/8AFVTllknlaWVtzt1P9B7Vu/2A3/PV/wDvhP8A4mse/tfs d40G4t8obJAzznjj6UAUXto3bcTIPZJWUfkDSfY4/wC/P/3/AH/xqVNsiBze28W4Z2MpYge5 BpkE1rc+Z5GsWEvlOY5PLBbY46qcHgj0oAdHEkSkIDyckkkkn3J5NPpiuPOeISpKVAbfHnBB z69Dwf0/B9ABRRRQAUUUUAFFFFABRRWd/b+jfbPsf9r2H2rzPK8n7Sm/fnG3bnOc8YoA0aKK KACimSSxwqGlkRFLKoLHAyxAA+pJAHuafQAUVXvdQstNhE19d29rEzbQ88gRSeuMk9eD+VOm ure2z59xFFiNpTvcLhFxubnsMjJ7ZFAE1FFOjMXnKJldkIPyocEn69v/AK1ADaKt4sP+fO6/ 7/mjFh/z53X/AH/NAFSireLD/nzuv+/5oxYf8+d1/wB/zQBUoq3iw/587r/v+aMWH/Pndf8A f80AVKKt4sP+fO6/7/mjFh/z53X/AH/NAFSireLD/nzuv+/5oxYf8+d1/wB/zQBUoq3iw/58 7r/v+aMWH/Pndf8Af80AVKKt4sP+fO6/7/mjFh/z53X/AH/NAFSireLD/nzuv+/5qnHqmgTa rNpcfmNfQRrLJALn5lU9CR+X0yueoyALRU1ybNLWV4ra4SRVLKTLkZHqPSq5PzqnmJHkEl36 AD279RQA6iop5rW28vz9YsIvNcRx+YCu9z0UZPJPpTpWSGF5Te20gQFiiqwJA9Pf/PFAD6KK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAv2IzC3BPzdvoKzPEQx9m4I+91/CtOxGYW4J +bt9BWZ4iGPs3BH3uv4UAYdUNe/5FPxF/wBguT/0ZHV+qGvf8in4i/7Bcn/oyOgBP+Ec1f8A 6F2b/wAB3/8AiKK9qorzf7Lo939//APT/tat2X3f8E4Pw0M6FoXBP/Eg0/p/uNWpdD/Rn+Vh 06n3rL8NDOhaFwT/AMSDT+n+41al0P8ARn+Vh06n3r0jzDNooooAKKKKAMDVXvU8U6YbG3t5 5fsV1lZ5zEoG+35yEbnpxj8ayGuLiwt9RS3L2d9dazGjw2ECzsztDGzLGz7VyVG9ndQB8/Bw GPUX+kWmpTQzXH2hZYVZUeC5khYBtpYZRhkHavX0qGTw9pc1iLOW3d4xMs4dpnMvmLjD+Znf uAAAOc4GOnFAHMRvquo3Wn295fXttNa6zLArmOAS7TaPIpfAdCwDFcrgEHJGemtZPql1I2pS 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 ZtX0H5UbV9B+Vafk2X/PxF/30KPJsv8An4i/76FAGZtX0H5UbV9B+Vafk2X/AD8Rf99CjybL /n4i/wC+hQBmbV9B+VG1fQflWn5Nl/z8Rf8AfQo8my/5+Iv++hQBzPiKS8t/D17Lpqy/a1jz GYLdZ5B6lY2ZQzAZIGeo6N90/N2nT6bDrsF/Ya9r7aq026ORNLjeR5GP/XwdxYnBBznJBzmv rfybL/n4i/76FYNr4H8LWfim48RwRW66jOuC24bVY53Oq9AzA4J74/2m3AEUpmbw+XuUCXBt wZV2hcNt5GAzAc54DN9T1qkYllu4QwJwGP8AKuk1aKzGkXe2eIt5TBQGGSccAfjWHbTx2t0s 8yO8aowIQZPOO34UAZWoaNaR3c18NOa9u7uBbJYnUbNgLsQzbTtQ7juJznaoALYBfFpK6T4X istxlNrZrD5m3bu2oFzjt0z1rYn1PRrma2lls7tntpDLCfJcbWKMmeBz8rsOfWkvtVsryxnt oLe5EsqFFLxFQCR1JI6UAVqKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAv2IzC3BPzd voKzPEQx9m4I+91/CtOxGYW4J+bt9BWZ4iGPs3BH3uv4UAYdUNe/5FPxF/2C5P8A0ZHV+qGv f8in4i/7Bcn/AKMjoA9poqt/aNl/z+W//f1f8aKAOM8NDOhaFwT/AMSDT+n+41al0P8ARn+V h06n3rL8NDOhaFwT/wASDT+n+41bEkQkQoVfB9DQBk0VofYY/ST8x/hR9hj9JPzH+FAGfRWh 9hj9JPzH+FH2GP0k/Mf4UAZ9FaH2GP0k/Mf4UfYY/ST8x/hQBn0VofYY/ST8x/hR9hj9JPzH +FAGfRWh9hj9JPzH+FH2GP0k/Mf4UAZ9FaH2GP0k/Mf4UfYY/ST8x/hQBn0VofYY/ST8x/hR 9hj9JPzH+FAGfRWh9hj9JPzH+FH2GP0k/Mf4UAZzKHADAEDpkU3yo/8Anmv5Vp/YY/ST8x/h R9hj9JPzH+FAGZ5Uf/PNfyo8qP8A55r+Vaf2GP0k/Mf4UfYY/ST8x/hQBmeVH/zzX8qPKj/5 5r+Vaf2GP0k/Mf4UfYY/ST8x/hQBmeVH/wA81/Kjyo/+ea/lWn9hj9JPzH+FH2GP0k/Mf4UA ZnlR/wDPNfyo8qP/AJ5r+Vaf2GP0k/Mf4UfYY/ST8x/hQBmeVH/zzX8qPKj/AOea/lWn9hj9 JPzH+FH2GP0k/Mf4UAZnlR/881/Kjyo/+ea/lWn9hj9JPzH+FH2GP0k/Mf4UAZnlR/8APNfy o8qP/nmv5Vp/YY/ST8x/hR9hj9JPzH+FAGZ5Uf8AzzX8qeAAMDgVofYY/ST8x/hR9hj9JPzH +FAGfRWh9hj9JPzH+FH2GP0k/Mf4UAZ9FaH2GP0k/Mf4UfYY/ST8x/hQBn0VofYY/ST8x/hR 9hj9JPzH+FAGfRWh9hj9JPzH+FH2GP0k/Mf4UAZ9FaH2GP0k/Mf4UfYY/ST8x/hQBn0VofYY /ST8x/hR9hj9JPzH+FAGfRWh9hj9JPzH+FH2GP0k/Mf4UAZ9FaH2GP0k/Mf4UfYY/ST8x/hQ Bn0VofYY/ST8x/hR9hj9JPzH+FAGfSMoZSrAEHqDWj9hj9JPzH+FH2GP0k/Mf4UAZP2S2/59 4v8AvgUfZLb/AJ94v++BWt9hj9JPzH+FH2GP0k/Mf4UAZP2S2/594v8AvgUfZLb/AJ94v++B Wt9hj9JPzH+FH2GP0k/Mf4UAZP2S2/594v8AvgUfZLb/AJ94v++BWt9hj9JPzH+FH2GP0k/M f4UAZP2S2/594v8AvgUfZLb/AJ94v++BWt9hj9JPzH+FH2GP0k/Mf4UAZP2S2/594v8AvgUf ZLb/AJ94v++BWt9hj9JPzH+FH2GP0k/Mf4UAZP2S2/594v8AvgUfZLb/AJ94v++BWt9hj9JP zH+FH2GP0k/Mf4UAZP2S2/594v8AvgUfZLb/AJ94v++BWt9hj9JPzH+FH2GP0k/Mf4UAZP2S 2/594v8AvgUfZLb/AJ94v++BWt9hj9JPzH+FH2GP0k/Mf4UAZa28KMGSGNWHQhQDUlaH2GP0 k/Mf4UfYY/ST8x/hQBn0VofYY/ST8x/hR9hj9JPzH+FAGfRWh9hj9JPzH+FH2GP0k/Mf4UAZ 9FaH2GP0k/Mf4UfYY/ST8x/hQBn0VofYY/ST8x/hR9hj9JPzH+FAGfRWh9hj9JPzH+FH2GP0 k/Mf4UAZ9FaH2GP0k/Mf4UfYY/ST8x/hQBn0VofYY/ST8x/hR9hj9JPzH+FAGfRWh9hj9JPz H+FH2GP0k/Mf4UAZ9FaH2GP0k/Mf4UfYY/ST8x/hQBn0VofYY/ST8x/hR9hj9JPzH+FAGfRW h9hj9JPzH+FH2GP0k/Mf4UAZ9FaH2GP0k/Mf4UfYY/ST8x/hQBn0VofYY/ST8x/hR9hj9JPz H+FAGfRWh9hj9JPzH+FH2GP0k/Mf4UAZ9FaH2GP0k/Mf4UfYY/ST8x/hQBn0VofYY/ST8x/h R9hj9JPzH+FAGfRWh9hj9JPzH+FH2GP0k/Mf4UAZ9FaH2GP0k/Mf4UfYY/ST8x/hQBn0VofY Y/ST8x/hR9hj9JPzH+FAGfRWh9hj9JPzH+FH2GP0k/Mf4UAZ9FaH2GP0k/Mf4UfYY/ST8x/h QBn0VofYY/ST8x/hR9hj9JPzH+FAGfRWh9hj9JPzH+FH2GP0k/Mf4UAZ9FaH2GP0k/Mf4UfY Y/ST8x/hQBn0VofYY/ST8x/hR9hj9JPzH+FAGfRWh9hj9JPzH+FH2GP0k/Mf4UAZ9FaH2GP0 k/Mf4UfYY/ST8x/hQBn0VofYY/ST8x/hR9hj9JPzH+FAGfRWh9hj9JPzH+FH2GP0k/Mf4UAZ 9FaH2GP0k/Mf4UfYY/ST8x/hQBn0VofYY/ST8x/hR9hj9JPzH+FAGfRWh9hj9JPzH+FH2GP0 k/Mf4UAZ9FaH2GP0k/Mf4UfYY/ST8x/hQBn0VofYY/ST8x/hR9hj9JPzH+FAGfRWh9hj9JPz H+FH2GP0k/Mf4UAZ9FaH2GP0k/Mf4UfYY/ST8x/hQBn0VofYY/ST8x/hR9hj9JPzH+FAGfRW h9hj9JPzH+FH2GP0k/Mf4UAZ9FaH2GP0k/Mf4UfYY/ST8x/hQBn0VofYY/ST8x/hR9hj9JPz H+FAGfRWh9hj9JPzH+FH2GP0k/Mf4UAZ9FaH2GP0k/Mf4UfYY/ST8x/hQBn0VofYY/ST8x/h R9hj9JPzH+FAGfRWh9hj9JPzH+FH2GP0k/Mf4UAZ9FaH2GP0k/Mf4UfYY/ST8x/hQBn0VofY Y/ST8x/hR9hj9JPzH+FAGfRWh9hj9JPzH+FH2GP0k/Mf4UAZ9FaH2GP0k/Mf4UfYY/ST8x/h QBn0VofYY/ST8x/hR9hj9JPzH+FACWIzC3BPzdvoKzPEQx9m4I+91/CtmKFYlKqr4znk1jeI hj7NwR97r+FAGHVDXv8AkU/EX/YLk/8ARkdX6oa9/wAin4i/7Bcn/oyOgD2vzH/vt+dFNooA 4Pw0M6FoXBP/ABINP6f7jVt4/wBlvzrE8NDOhaFwT/xINP6f7jVt4/2W/OgAx/st+dGP9lvz ox/st+dGP9lvzoAMf7LfnRj/AGW/OjH+y350Y/2W/OgAx/st+dGP9lvzox/st+dGP9lvzoAM f7LfnRj/AGW/OjH+y351S1i+/snRL/UfIaX7JbST+Xv27tilsZwcZx1xQBdx/st+dGP9lvzq rFqFnNp5v1mC2qqzPJIdgjC53bt2NpUggg4IIIOMVn2nibTpdGXVL6aPTrd7ma3Q3cvlZKSO gzvCkMQhO0jI5HagDax/st+dGP8AZb86qw6jYXE8cEF3BLNJALhI0mVmaInAkAB5Un+LpTPt v23TPtmjG2v9/wDqm+04ifDYPzqrdMHoDyMcUAXcf7LfnRj/AGW/Oue0/Vddvb+6t30ewjS0 uVgncak7EZRJCVHkDPyyDgkcg/WrtrrdlJZWMt3cWtrcXccLCA3aP80oO1VYHD5KsAR97acU AamP9lvzox/st+dVU1GwkguZ0u4GhtWdLiQTKVhZRlg5z8pA6g9KLDUbDVIGn0+7gvIVbYZL eZZFDYBxkE84I496AHy3VtA+yWVUbGcM4Bpn9o2P/PxH/wB/BVaGaKC0uLi481kWQBUiOHll klMUaA5HJO1RkgDPJAGRJ9stPs3/AB46n9v+1fY/7O85fO87y/O27vM8v/VfPnfjHGd3y0AS /wBo2P8Az8R/9/BR/aNj/wA/Ef8A38FTRf2a+gT6zLJcwWlsszXHmSOWhMRZZVIUnJUow+XI OOCRgmoLy0jhuvtljqdnd2/k/wChyzK0knnOY4dpSRk+eQFRlhgjLbRg0AS/2jY/8/Ef/fwU f2jY/wDPxH/38FWtKtoNUjn/AHN5bXFtL5NxbzzfPE+1XAJR2U5V0b5WP3scEEDMt9V0qW3e 6njv7Sz+xSahBcTSErcWyBS0qBHZgAHQ7XCt844yCAAWf7Rsf+fiP/v4KP7Rsf8An4j/AO/g qbS4otRuLi1ls7+wvIESR7e5nBby3LBXBjkZcEo4xnPynIAIJ0/7Bj/vS/8Af5/8aAMb+0bH /n4j/wC/go/tGx/5+I/+/grZ/sGP+9L/AN/n/wAaP7Bj/vS/9/n/AMaAMb+0bH/n4j/7+Cj+ 0bH/AJ+I/wDv4K2f7Bj/AL0v/f5/8aP7Bj/vS/8Af5/8aAMb+0bH/n4j/wC/go/tGx/5+I/+ /grZ/sGP+9L/AN/n/wAaP7Bj/vS/9/n/AMaAMb+0bH/n4j/7+Cj+0bH/AJ+I/wDv4Km1qAaR bJIjNl3CMWJfAOeRk9Rj/GucvPEOhadMIb68NrKV3BJ9QCMR0zgnpwfyoA3f7Rsf+fiP/v4K njdJYw8eXQ9GVsg1zFt4m8PXtwtva6gJ53ztji1IMzYGTgA56A1s6bM1w8jsrcqPbOHdcnHG cKM/SgDRx/st+dGP9lvzrmLrU4LPSbjUbnT0nWCF5pXbl2Cgk46DtwPpUFtqzPqKWN34cgtp ZoXniIcOCilQQ2OjjeuQMr6MaAOux/st+dGP9lvzrN02VnubiMQiKNURljQnAJLZPPToOP8A E1pY/wBlvzoAMf7LfnRj/Zb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/wBlvzoAMf7L fnRj/Zb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/wBlvzoAMf7LfnRj/Zb86Mf7LfnR j/Zb86ADH+y350Y/2W/OjH+y350Y/wBlvzoAMf7LfnRj/Zb86Mf7LfnRj/Zb86ADH+y350Y/ 2W/OjH+y350Y/wBlvzoAMf7LfnRj/Zb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/wBl vzoAMf7LfnRj/Zb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/wBlvzoAMf7LfnRj/Zb8 6Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/wBlvzoAMf7LfnRj/Zb86Mf7LfnRj/Zb86AD H+y350Y/2W/OjH+y350Y/wBlvzoAMf7LfnRj/Zb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y 350Y/wBlvzoAMf7LfnRj/Zb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/wBlvzoAMf7L fnRj/Zb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/wBlvzoAMf7LfnRj/Zb86Mf7LfnR j/Zb86ADH+y350Y/2W/OjH+y350Y/wBlvzoAMf7LfnRj/Zb86Mf7LfnRj/Zb86ADH+y350Y/ 2W/OjH+y350Y/wBlvzoAMf7LfnRj/Zb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/wBl vzoAMf7LfnRj/Zb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/wBlvzoAMf7LfnRj/Zb8 6Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/wBlvzoAMf7LfnRj/Zb86Mf7LfnRj/Zb86AD H+y350Y/2W/OjH+y350Y/wBlvzoAMf7LfnRj/Zb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y 350Y/wBlvzoAMf7LfnRj/Zb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/wBlvzoAMf7L fnRj/Zb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/wBlvzoAMf7LfnRj/Zb86Mf7LfnR j/Zb86ADH+y350Y/2W/OjH+y350Y/wBlvzoAMf7LfnRj/Zb86Mf7LfnRj/Zb86ADH+y350Y/ 2W/OjH+y350Y/wBlvzoAMf7LfnRj/Zb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/wBl vzoAMf7LfnRj/Zb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/wBlvzoAMf7LfnRj/Zb8 6Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/wBlvzoAMf7LfnRj/Zb86Mf7LfnRj/Zb86AD H+y350Y/2W/OjH+y350Y/wBlvzoAMf7LfnRj/Zb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y 350Y/wBlvzoAMf7LfnRj/Zb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/wBlvzoAMf7L fnRj/Zb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/wBlvzoAMf7LfnRj/Zb86Mf7LfnR j/Zb86ADH+y350Y/2W/OjH+y350Y/wBlvzoAMf7LfnRj/Zb86Mf7LfnRj/Zb86ADH+y350Y/ 2W/OjH+y350Y/wBlvzoAMf7LfnRj/Zb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/wBl vzoAMf7LfnRj/Zb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/wBlvzoAMf7LfnWF4iGP s3BH3uv4Vu4/2W/OsLxEMfZuCPvdfwoAw6oa9/yKfiL/ALBcn/oyOr9UNe/5FPxF/wBguT/0 ZHQB7TRRRQBwfhoZ0LQuCf8AiQaf0/3Grbx/st+dYnhoZ0LQuCf+JBp/T/catvH+y350AGP9 lvzox/st+dGP9lvzox/st+dABj/Zb86Mf7LfnRj/AGW/OjH+y350AGP9lvzox/st+dGP9lvz ox/st+dABj/Zb86yPFMEtx4Q1qCCGWSaSwnREQFmZjGwAAHUk9q18f7LfnRj/Zb86AOYu9Ju m1d9Mjib+yL+QXc/Bwu3/WxdNoEjeUSpB3Brgk5IrFuLa+tm0uRrW9toE1HU3kvLXThc3MO+ aQxhQVYojgklgjZwo4DZr0HH+y350Y/2W/OgDzvRrK4fSLbRrXTNQtL+1nu38+4ia1WOEzsf K8yNdhMiso/d5Vcb15jQHt9ImgudItZbaxuLOExgJbTQmFoQONhQjjGMccemRg1dx/st+dGP 9lvzoAyNIgli1PX3khlRZb9XjLAgOv2aBcj1GQRn1BHauPg0a6/4Re/36ZP9r/4RC2tI8wnf v2T74hxnOdmVHOduR0r0fH+y350Y/wBlvzoA4XxRo0kiaxDbaZO9ollpoWG2hRtyRXMrukas NjEJ0QgjkDByAdPwvawnU9Wv0TWZJZ/JikudRtY7fztisQVVURjjfgsy84ABIFdPj/Zb86Mf 7LfnQBlx2Vxf6Zcpax+bLDc210IwwBkEN35pVScDcQhAyQMkZIHIn/s3Vftf9u/2XPu/tr+0 P7P82L7R5f2H7LjO/wAvdu+f7+Nvfd8tPj+02LH7PE7ckhlxyCSSGBIzgk4I/wD1y/2lqn/P Fv8Avgf/ABygCM+Hbu68Hajpj2SRahqFvqflTyFCLb7TKzrE7Akgnem7YGXMZ5OFzHe6bqur 3GoaoNLntGP9m+XaXEsXmyfZbp53wUdkG5XCrlh8wOdowTY/tLVP+eLf98D/AOOUf2lqn/PF v++B/wDHKALejWc4vL3UL3Snje+1L7TDHKYmktALVIdzkMQCfLYfIWOJBnGW287H4X1i+8Pw 6PJZ/ZJLHw3c6KJ55UMdxLIkKq8ews3l/uSSXVWwy/KTkDX/ALS1T/ni3/fA/wDjlH9pap/z xb/vgf8AxygC/o8V7c+INR1i60+ewjntba1SC5eNpCY3mYt+7Z12nzlA+bOVbIAwTv1yP9pa p/zxb/vgf/HKP7S1T/ni3/fA/wDjlAHXUVyP9pap/wA8W/74H/xyj+0tU/54t/3wP/jlAHXU VyP9pap/zxb/AL4H/wAco/tLVP8Ani3/AHwP/jlAHXUVyP8AaWqf88W/74H/AMco/tLVP+eL f98D/wCOUAWvFq74LVP706j+dcj428CL4s0CS0Cwpex/Pazup/dtxkZHOGAwevY4JAroJZ7q 5H+k2szsMbCuwbCDkEZc8/57nMJuddycSNjtm3T/AOOUAch8N/hvP4V0+S6vwjapdqvmKAGE CjnYG7nu2DjIGM4yeq0lSrTKQSRkHH/XWWpPtOu/89T/AOAyf/HKmtLYw7nZX3P1BIz1Jycc ZJYk445wOlADLCykawgYdCgNVdN0uWeefUJ1mNwZJYE86LZ5cayFQEXJ+Vtobd1f5TwAqrf2 6jEFjtbxY4VGFR4N5A9M7hSbtZ/6CEX/AIC//ZUARW8LRardqwJPlRHj6vV7H+y351DDDKHa a4dprhwAzhdowM4AH4n16/QCbH+y350AGP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2W/OjH+y3 50Y/2W/OjH+y350AGP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350A GP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP8AZb86Mf7LfnRj /Zb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2 W/OjH+y350Y/2W/OjH+y350AGP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2W/OjH+y350Y/2W/O jH+y350AGP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP8AZb86 Mf7LfnRj/Zb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP8AZb86Mf7LfnRj/Zb86Mf7 LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2W/OjH+y3 50Y/2W/OjH+y350AGP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350A GP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP8AZb86Mf7LfnRj /Zb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2 W/OjH+y350Y/2W/OjH+y350AGP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2W/OjH+y350Y/2W/O jH+y350AGP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP8AZb86 Mf7LfnRj/Zb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP8AZb86Mf7LfnRj/Zb86Mf7 LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2W/OjH+y3 50Y/2W/OjH+y350AGP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350A GP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP8AZb86Mf7LfnRj /Zb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2 W/OjH+y350Y/2W/OjH+y350AGP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2W/OjH+y350Y/2W/O jH+y350AGP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP8AZb86 Mf7LfnRj/Zb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP8AZb86Mf7LfnRj/Zb86Mf7 LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2W/OjH+y3 50Y/2W/OjH+y350AGP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350A GP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP8AZb86Mf7LfnRj /Zb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2 W/OjH+y350Y/2W/OjH+y350AGP8AZb86Mf7LfnRj/Zb86Mf7LfnQAY/2W/OjH+y350Y/2W/O jH+y350AGP8AZb86wvEQx9m4I+91/Ct3H+y351heIhj7NwR97r+FAGHVDXv+RT8Rf9guT/0Z HV+qGvf8in4i/wCwXJ/6MjoA9g/tGy/5/Lf/AL+r/jRV3f8A9NJPy/8Ar0UAef8AhoZ0LQuC f+JBp/T/AHGrbx/st+dYnhoZ0LQuCf8AiQaf0/3Grbx/st+dABj/AGW/OjH+y350Y/2W/OjH +y350AGP9lvzox/st+dGP9lvzox/st+dABj/AGW/OjH+y351zGn6ndQ+LdUs7ks9nPe+TbEs cxSrawybOp4ZfMboACjZJLjDI9Wu7rxeDFHK9hHaXqQwRNhriSKSBWb5iFBDl4wDjG1juIcY AOqx/st+dGP9lvzri9N8bXWqSTWlppun3OoCy+1ww2msJMrYZQ8buF+RxuXHBVufmGCa11mT xHO8KW90NMiUN9riu5raRpskNHtXa2FH3snhvlxuVtoBu4/2W/OjH+y351wsNlFa+D9Z1V7n WJJrX+0lUjVZ8hY5JkUDczKGCqAGKnBAPJrWu/E1xa3l8q6PLLa2V3FaPIlwoeR5Vi2BEOAT ulUHcygDBBbkAA6TH+y350Y/2W/OuV1DxgdLsGa6soI71L9LB1e+CW6O0Yl3GZlBCiM5+5nd 8oB4Jgh1q88T6OZtPjkAtb9oL6PTbyKQ3EYQnEMx2jB3xknKMAGAIYDIB2OP9lvzox/st+dc RcahPZWUr6DqMl0Bd2UJsdQkZZrQPNtbcZEaXEm4AbxkDLKSNq1NrvjWXw9O6X1hZIsMMc0i vqsaSygk7/IjIzIFwfvbCxBAFAHY4/2W/OjH+y351x1x4m1LSR4ku76zgls7G7SG3C3YRtzp DsViyKqqTJuZyx25IwQAToeG/Eya/c39r5dqZbPy2MllerdQurg4IcAEMCrAqVHQHkGgDZWQ SKH+2W8QYZCOrMQPcg4pcj/oI2n/AH7f/Gsq/l/s/Qo54UQzSSwwIXGVVpZVjDEDGQC+cZGc YyM5qtGr6ZqtnbNqkuppdXLWkqziIPbuIWmBBjReqryrAk71IIwQwBvZH/QRtP8Av2/+NGR/ 0EbT/v2/+Nc6PElqml2OoT2TrDcaPLqrqjhmRY1iYoMgbiRL14+778T+H9atdcnu7cGxea2W N2ewvBcxbXLADftXDZRsjHAKnJzwAbeR/wBBG0/79v8A40ZH/QRtP+/b/wCNO+yxf3aPssX9 2gBuR/0EbT/v2/8AjRkf9BG0/wC/b/4077LF/do+yxf3aAG5H/QRtP8Av2/+NGR/0EbT/v2/ +NO+yxf3aPssX92gBuR/0EbT/v2/+NGR/wBBG0/79v8A4077LF/do+yxf3aAG5H/AEEbT/v2 /wDjRkf9BG0/79v/AI077LF/do+yxf3aAG5H/QRtP+/b/wCNGR/0EbT/AL9v/jTvssX92vKf ilq+pzyy+HtJewtYNo+1yzanbwySbgDsCtIGVcEZyAW6fd+8AeqZH/QRtP8Av2/+NLFKryvE HWVkAYvHkAg57HoeD+n0HAfDTW9R1G2fSdbazuLq3j3x3VvqEE7SICBh1Ry2RkfNjB788t3U CKmoXCqpwI4+n1agB4uC43RWlzKnZ0xg/TJo86b/AKB93/47/jWBNZ31xosws7ry7x4GEDuT tR8EKTweAcdjVGzsLiDxAbe31K8ubZLdzeedJvCzkoU5xwSu8lFwqjadq7hkA7CKQSFlMUqS Ljcj8EA9D9Pf2Poalx/st+dZemxlL+6UlnIjj5z7vWpj/Zb86ADH+y350Y/2W/OjH+y350Y/ 2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8A Zb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb8 6ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/Oj H+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/ st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7L fnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y35 0Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/ 2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8A Zb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb8 6ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/Oj H+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/ st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7L fnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y35 0Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/ 2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8A Zb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb8 6ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/Oj H+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/ st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7L fnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y35 0Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/ 2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8A Zb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb8 6ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/Oj H+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/ st+dGP8AZb86Mf7LfnRj/Zb86ADH+y351heIhj7NwR97r+FbuP8AZb86wvEQx9m4I+91/CgD Dqhr3/Ip+Iv+wXJ/6Mjq/VDXv+RT8Rf9guT/ANGR0Ae00UUUAcH4aGdC0Lgn/iQaf0/3Grbx /st+dYnhoZ0LQuCf+JBp/T/catvH+y350AGP9lvzox/st+dGP9lvzox/st+dABj/AGW/OjH+ y350Y/2W/OjH+y350AYtz4f8+31hFnZJb64S6hk2Z+zypHEsbYz8+14lfBwD0PHVl34VtLmG G0QywWUWmT6YIkOWEcgjGQxzyojxyDnPtzu4/wBlvzox/st+dAHIr4X1+L7JJDr9rFcWtlJZ RsmlgRqjeX86oJAA+Yx6pjACDBztWGkPpl9IbaZhpzxj/RXDOwmyd0gkLE/MPvAjlgWzlm3a mP8AZb86Mf7LfnQBiyeH9/hnU9H89h9t+1/vtn3PPeRvu552+ZjqM47Zon8P+d9u/fsPtWo2 199zO3yvI+Trznyevbd0OOdrH+y350Y/2W/OgDnr3w1PNPPdWl+1tdnUUv4XaESIhECwMjLk bgyhuQVI3DB45nXSNVaxQT65cNfx3DXCzRQrHFyGCxNHyWiAPILbiRncDjG1j/Zb86Mf7Lfn QBzz+Gp7lbq4vL9pdQn+zkOkISGMwSGSMCPJbbuPzAuScnBXjFK+8H3122seXq0cA1m2WO9K 2Klt6x+XlGLZCEYyjbiPm2spbI67H+y350Y/2W/OgDm7vwzeXUF9GNSELXjRXLSR23zR3cYi 2yLuYjy/3K/uyCevz+mnplnqdu9zJqeoi8aVgY44bcQxwqBjCjLMSTkklj2wB30cf7LfnRj/ AGW/OgBYtDj1HRYobhC8UiK2ASCCMEEEcgggEEYIIBBBFVLbwU0Wpxajc6le3tzFwrzxwDA2 uMfJGv8AfOD1GSAQHcNMY7gYEV3dwoBgIjLgfmDSbLz/AKCN9/30n/xNAFSH4eWUfySz3txb iyk09LeWX93HbPs/dqFAPAQANncQfmZsLjT0/wAOz2XmNNqF7fSvgb7koNoGcAKiqo6nnGT3 JAAFfZef9BG+/wC+k/8AiaNl5/0Eb7/vpP8A4mgDV/sx/ej+zH96ytl5/wBBG+/76T/4mjZe f9BG+/76T/4mgDV/sx/ej+zH96ytl5/0Eb7/AL6T/wCJo2Xn/QRvv++k/wDiaANX+zH96P7M f3rK2Xn/AEEb7/vpP/iaNl5/0Eb7/vpP/iaANX+zH96P7Mf3rK2Xn/QRvv8AvpP/AImjZef9 BG+/76T/AOJoA1f7Mf3o/sx/esrZef8AQRvv++k/+Jo2Xn/QRvv++k/+JoA1f7Mf3rjvH/wu g8Z6duQrb6tApFtckcEddj45Kk/ipOR3B3Nl5/0Eb7/vpP8A4mjZef8AQRvv++k/+JoAqeEP h7ZeDtIFnZgyTvhrm5ZcNM3r7KOcL29ySTcktzBq1whBOYozx9XpNl5/0Eb7/vpP/iackRUl naWWRvvSSNlj6D6f570ANsIbQWEAkmjVwgDKTgg9waSw0+0s7d4nvLeQtNLLlEWMAPIzgYHc BgCerEEnk02WwtJ5DJNZxSOf4nQE/qKZ/ZWn/wDQOg/79L/hQAsccY1W6MJ8yPy4wWQ8bvmJ H1wR+Yq1j/Zb86ZFDHDGI4ofLQdFQYA/Cn4/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH +y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y3 50Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+d GP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj /Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2 W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/O gAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86 Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH +y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y3 50Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+d GP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj /Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2 W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/O gAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86 Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH +y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y3 50Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+d GP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj /Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2 W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/O gAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86 Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH +y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y3 50Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+d GP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj /Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2 W/OjH+y350Y/2W/OgAx/st+dYXiIY+zcEfe6/hW7j/Zb86wvEQx9m4I+91/CgDDqhr3/ACKf iL/sFyf+jI6v1Q17/kU/EX/YLk/9GR0Aewf2jZf8/lv/AN/V/wAaKxf+EK8Of9CPpn/gFbf4 0UAY3hoZ0LQuCf8AiQaf0/3Grbx/st+dYnhoZ0LQuCf+JBp/T/catvH+y350AGP9lvzox/st +dGP9lvzox/st+dABj/Zb86Mf7LfnRj/AGW/OjH+y350AGP9lvzox/st+dGP9lvzox/st+dA Bj/Zb86Mf7LfnRj/AGW/OjH+y350AGP9lvzox/st+dGP9lvzox/st+dABj/Zb86Mf7LfnRj/ AGW/OjH+y350AGP9lvzox/st+dGP9lvzox/st+dABj/Zb86Mf7LfnRj/AGW/OjH+y350AGP9 lvzox/st+damm6baX1gk88bmTc6krK6jAcgcA+1Vnbw+ujWmrJHqFxZ3aI8LWsV1OzK67lJR AWAx3IGOAeTQBUx/st+dGP8AZb86i1cQLp2m6ro8sT2cl7b21xHOJy7CS4jhIB8xTG6FmyGU kEYIBBqxqtgbHxFocURiOn39w1rLExm80MIJpd6yebjH7tRtKHqefQAZj/Zb86Mf7LfnVuaf wjbaoNLn1ezi1AuqC0fUispZsbRsL5ycjAxzkVh+HJI9b1q7gbWNIP2a7u4pNLhMv2tI4pni Vmb7QcZwjE+Xj5scZBoA0cf7LfnRj/Zb863/AOwdP/55y/8AgRJ/8VR/YOn/APPOX/wIk/8A iqAMDH+y350Y/wBlvzrf/sHT/wDnnL/4ESf/ABVH9g6f/wA85f8AwIk/+KoAwMf7LfnRj/Zb 863/AOwdP/55y/8AgRJ/8VR/YOn/APPOX/wIk/8AiqAMDH+y350Y/wBlvzrf/sHT/wDnnL/4 ESf/ABVH9g6f/wA85f8AwIk/+KoAwMf7LfnRj/Zb863/AOwdP/55y/8AgRJ/8VR/YOn/APPO X/wIk/8AiqAMDH+y350Y/wBlvzrf/sHT/wDnnL/4ESf/ABVH9g6f/wA85f8AwIk/+KoAwMf7 LfnRj/Zb863/AOwdP/55y/8AgRJ/8VR/YOn/APPOX/wIk/8AiqAMDH+y350Y/wBlvzrf/sHT /wDnnL/4ESf/ABVH9g6f/wA85f8AwIk/+KoAwMf7LfnRj/Zb863/AOwdP/55y/8AgRJ/8VR/ YOn/APPOX/wIk/8AiqAMDH+y350Y/wBlvzrf/sHT/wDnnL/4ESf/ABVH9g6f/wA85f8AwIk/ +KoAwMf7LfnRj/Zb863/AOwdP/55y/8AgRJ/8VR/YOn/APPOX/wIk/8AiqAMDH+y350Y/wBl vzrf/sHT/wDnnL/4ESf/ABVH9g6f/wA85f8AwIk/+KoAwMf7LfnRj/Zb863/AOwdP/55y/8A gRJ/8VR/YOn/APPOX/wIk/8AiqAMDH+y350Y/wBlvzrf/sHT/wDnnL/4ESf/ABVH9g6f/wA8 5f8AwIk/+KoAwMf7LfnRj/Zb863/AOwdP/55y/8AgRJ/8VR/YOn/APPOX/wIk/8AiqAMDH+y 350Y/wBlvzrf/sHT/wDnnL/4ESf/ABVH9g6f/wA85f8AwIk/+KoAwMf7LfnRj/Zb863/AOwd P/55y/8AgRJ/8VR/YOn/APPOX/wIk/8AiqAMDH+y350Y/wBlvzrf/sHT/wDnnL/4ESf/ABVH 9g6f/wA85f8AwIk/+KoAwMf7LfnRj/Zb863/AOwdP/55y/8AgRJ/8VR/YOn/APPOX/wIk/8A iqAMDH+y350Y/wBlvzrf/sHT/wDnnL/4ESf/ABVH9g6f/wA85f8AwIk/+KoAwMf7LfnRj/Zb 863/AOwdP/55y/8AgRJ/8VR/YOn/APPOX/wIk/8AiqAMDH+y350Y/wBlvzrf/sHT/wDnnL/4 ESf/ABVH9g6f/wA85f8AwIk/+KoAwMf7LfnRj/Zb863/AOwdP/55y/8AgRJ/8VR/YOn/APPO X/wIk/8AiqAMDH+y350Y/wBlvzrf/sHT/wDnnL/4ESf/ABVH9g6f/wA85f8AwIk/+KoAwMf7 LfnRj/Zb863/AOwdP/55y/8AgRJ/8VR/YOn/APPOX/wIk/8AiqAMDH+y350Y/wBlvzrf/sHT /wDnnL/4ESf/ABVH9g6f/wA85f8AwIk/+KoAwMf7LfnRj/Zb863/AOwdP/55y/8AgRJ/8VR/ YOn/APPOX/wIk/8AiqAMDH+y350Y/wBlvzrf/sHT/wDnnL/4ESf/ABVH9g6f/wA85f8AwIk/ +KoAwMf7LfnRj/Zb863/AOwdP/55y/8AgRJ/8VWZq9jBYNam3WQea5Vg0jNn5SR1Jx0/WgCn j/Zb86Mf7LfnRj/Zb86Mf7LfnQAY/wBlvzox/st+dGP9lvzox/st+dABj/Zb86Mf7LfnRj/Z b86Mf7LfnQAY/wBlvzox/st+dGP9lvzox/st+dABj/Zb86Mf7LfnRj/Zb86Mf7LfnQAY/wBl vzox/st+dGP9lvzox/st+dABj/Zb86Mf7LfnRj/Zb86Mf7LfnQAY/wBlvzox/st+dGP9lvzo x/st+dABj/Zb86Mf7LfnRj/Zb86Mf7LfnQAY/wBlvzox/st+dGP9lvzox/st+dABj/Zb86Mf 7LfnRj/Zb86Mf7LfnQAY/wBlvzox/st+dGP9lvzox/st+dABj/Zb86Mf7LfnRj/Zb86Mf7Lf nQAY/wBlvzox/st+dGP9lvzox/st+dABj/Zb86Mf7LfnRj/Zb86Mf7LfnQAY/wBlvzox/st+ dGP9lvzox/st+dABj/Zb86Mf7LfnRj/Zb86Mf7LfnQAY/wBlvzox/st+dGP9lvzox/st+dAB j/Zb86Mf7LfnRj/Zb86Mf7LfnQAY/wBlvzox/st+dGP9lvzox/st+dABj/Zb86Mf7LfnRj/Z b86Mf7LfnQAY/wBlvzox/st+dGP9lvzox/st+dABj/Zb86Mf7LfnRj/Zb86Mf7LfnQAY/wBl vzox/st+dGP9lvzox/st+dABj/Zb86Mf7LfnRj/Zb86Mf7LfnQAY/wBlvzox/st+dGP9lvzo x/st+dABj/Zb86Mf7LfnRj/Zb86Mf7LfnQAY/wBlvzox/st+dGP9lvzox/st+dABj/Zb86Mf 7LfnRj/Zb86Mf7LfnQAY/wBlvzox/st+dGP9lvzox/st+dABj/Zb86Mf7LfnRj/Zb86Mf7Lf nQAY/wBlvzox/st+dGP9lvzox/st+dABj/Zb86Mf7LfnRj/Zb86Mf7LfnQAY/wBlvzox/st+ dGP9lvzox/st+dABj/Zb86Mf7LfnRj/Zb86Mf7LfnQAY/wBlvzox/st+dGP9lvzox/st+dAB j/Zb86Mf7LfnRj/Zb86Mf7LfnQAY/wBlvzox/st+dGP9lvzox/st+dABj/Zb86Mf7LfnRj/Z b86Mf7LfnQAY/wBlvzox/st+dGP9lvzox/st+dABj/Zb86Mf7LfnRj/Zb86Mf7LfnQAY/wBl vzox/st+dGP9lvzox/st+dABj/Zb86Mf7LfnRj/Zb86Mf7LfnQAY/wBlvzox/st+dGP9lvzo x/st+dABj/Zb86Mf7LfnRj/Zb86Mf7LfnQAY/wBlvzrC8RDH2bgj73X8K3cf7LfnWF4iGPs3 BH3uv4UAYdUNe/5FPxF/2C5P/RkdX6oa9/yKfiL/ALBcn/oyOgD3miiigDzPw0M6FoXBP/Eg 0/p/uNW3j/Zb86xPDQzoWhcE/wDEg0/p/uNW3j/Zb86ADH+y350Y/wBlvzox/st+dGP9lvzo AMf7LfnRj/Zb86Mf7LfnRj/Zb86ADH+y350Y/wBlvzox/st+dGP9lvzoAMf7LfnRj/Zb86Mf 7LfnRj/Zb86ADH+y350Y/wBlvzox/st+dGP9lvzoAMf7LfnRj/Zb86Mf7LfnRj/Zb86ADH+y 350Y/wBlvzox/st+dGP9lvzoAMf7LfnRj/Zb86Mf7LfnRj/Zb86ANfT7Cz1Pw59jv7SC7tZJ JN8M8YkRsSkjKng4IB/Cs1/AWm2/hW00LS47SCC2dHZLm0WWG7ZU2ZuI1KCUkYbOR86I38OK 2tB/5BEf/XSX/wBGNWlQBxf/AAhepW/h220XTtV021t4b1b3H9mMVDCdLgIirMoVBKHwOcIV XOVLtc1HQ/El/PpNx/belRzafK1x/wAgqQrJIUlj6faOF2S9Mk7lznB2jqKKAMceHoZbyG/u 7q+e+XY0nkX9zDAzqByIBKUCkj7pznvnJJrxaHqkup2E+qavBd2+nytNbCOz8qZnMbxAyvvK t8kj52omWwRgDaegooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACsPxH/y48E/vW6f7hrcrD8R/8uPBP71un+4aAMrH+y350Y/2 W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/O gAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86 Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH +y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y3 50Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+d GP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj /Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2 W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/O gAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86 Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH +y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y3 50Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+d GP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj /Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2 W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/O gAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86 Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH +y350Y/2W/OjH+y350Y/2W/OgAx/st+dYXiIY+zcEfe6/hW7j/Zb86wvEQx9m4I+91/CgDDq hr3/ACKfiL/sFyf+jI6v1Q17/kU/EX/YLk/9GR0Ae5+dJ/z7S/mv/wAVRU1FO67AeZ+GhnQt C4J/4kGn9P8AcatvH+y351ieGhnQtC4J/wCJBp/T/catvH+y350gDH+y350Y/wBlvzox/st+ dGP9lvzoAMf7LfnRj/Zb86Mf7LfnRj/Zb86ADH+y350Y/wBlvzox/st+dGP9lvzoAMf7LfnR j/Zb86Mf7LfnRj/Zb86ADH+y350Y/wBlvzox/st+dGP9lvzoAMf7LfnRj/Zb86Mf7LfnWfqe pNYvb29vZy3V5dMyxQq4UAAZLuT92MHaCwBILKACSAQDQx/st+dGP9lvzrLtNTnMk0OqWDWM sXljzfODwSmRiqiOQhSWyACCqnLDGQQTNa6vpd7am6tL+1ntxIITLFcK6byQAuQcbiWUAdeR 60AXsf7LfnRj/Zb86glu7WDzvNnjj8iMTTb5APLTn5m9F+VuTx8p9KZYajYapA0+n3cF5Crb DJbzLIobAOMgnnBHHvQB1Og/8giP/rpL/wCjGrSrN0H/AJBEf/XSX/0Y1aVABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABWH4j/5ceCf3rdP9w1uVh+I/+XHgn963T/cNAGVj/Zb86Mf7LfnWPczA300b2qT7Nu3z TwoIB4/HP6Vg/wDCRpnz/wDhG4vsP2v7F528b/M83yt2zP8Aq93Gc7v9nHNAHbY/2W/OjH+y 351jQTbb62SO0jgDuVfyyfmG1jgj6gc/4mtnH+y350AGP9lvzox/st+dGP8AZb86Mf7LfnQA Y/2W/OjH+y350Y/2W/OjH+y350AGP9lvzox/st+dGP8AZb86Mf7LfnQAY/2W/OjH+y350Y/2 W/OjH+y350AGP9lvzox/st+dGP8AZb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP9lv zox/st+dGP8AZb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP9lvzox/st+dGP8AZb86 Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP9lvzox/st+dGP8AZb86Mf7LfnQAY/2W/OjH +y350Y/2W/OjH+y350AGP9lvzox/st+dGP8AZb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y3 50AGP9lvzox/st+dGP8AZb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP9lvzox/st+d GP8AZb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP9lvzox/st+dGP8AZb86Mf7LfnQA Y/2W/OjH+y350Y/2W/OjH+y350AGP9lvzox/st+dGP8AZb86Mf7LfnQAY/2W/OjH+y350Y/2 W/OjH+y350AGP9lvzox/st+dGP8AZb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP9lv zox/st+dGP8AZb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP9lvzox/st+dGP8AZb86 Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP9lvzox/st+dGP8AZb86Mf7LfnQAY/2W/OjH +y350Y/2W/OjH+y350AGP9lvzox/st+dGP8AZb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y3 50AGP9lvzox/st+dGP8AZb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP9lvzox/st+d GP8AZb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP9lvzox/st+dGP8AZb86Mf7LfnQA Y/2W/OjH+y350Y/2W/OjH+y350AGP9lvzox/st+dGP8AZb86Mf7LfnQAY/2W/OjH+y350Y/2 W/OjH+y350AGP9lvzox/st+dGP8AZb86Mf7LfnQAY/2W/OjH+y350Y/2W/OjH+y350AGP9lv zox/st+dGP8AZb86Mf7LfnQAY/2W/OsLxEMfZuCPvdfwrdx/st+dYXiIY+zcEfe6/hQBh1Q1 7/kU/EX/AGC5P/RkdX6oa9/yKfiL/sFyf+jI6APeaKh86T/n2l/Nf/iqKfKwPOfDQzoWhcE/ 8SDT+n+41beP9lvzrE8NDOhaFwT/AMSDT+n+41beP9lvzpAGP9lvzox/st+dGP8AZb86Mf7L fnQAY/2W/OjH+y350Y/2W/OjH+y350AGP9lvzox/st+dGP8AZb86Mf7LfnQAY/2W/OjH+y35 0Y/2W/OjH+y350AGP9lvzox/st+dGP8AZb86Mf7LfnQAY/2W/OsXVo57XV9P1aK0uLmKCOa3 njhwXSOTY5kAzltpiA2KCx35GSMHax/st+dGP9lvzoA4/wAR3zapoU4bRbp7D7XYCMXCBGuy bpA6eVJgqOAPn2g7vTk0r5Jb251zV7DRNQ8lW01yGtjDLdNbzmWQoj7WYiMqoyBkrgZxXbXV nBewrFcQs6LJHKBuI+ZHDqePRlB/Cp8f7LfnQBx8m3VNS1i7fTdWSz+yWXkyi3KSF45pn8xE cZJRirbSuTt4Vgy7rnhr7ZJqGpSzSXd1assIguryx+y3BI3bo2GxNyqSGU7QP3jDJwa6TH+y 350Y/wBlvzoA39B/5BEf/XSX/wBGNWlWboP/ACCI/wDrpL/6MatKgAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigArD 8R/8uPBP71un+4a3Kw/Ef/LjwT+9bp/uGgDnobZ5ru7ZQcB1HP8Auiqkuly3uteVOsxt7WOO dEMWInkLPgls/Oy7AQuAFLBuTt2aLpdxszWc/kFzlw8e8E4xnqMUzdrP/QQi/wDAX/7KgCG5 tnivrBmBwZWHH/XNqv4/2W/Oq6xXcsiPe3Hn+WcxqkewAkEZPJzwSPxPtixj/Zb86ADH+y35 0Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/ 2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8A Zb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb8 6ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/Oj H+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/ st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7L fnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y35 0Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/ 2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8A Zb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb8 6ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/Oj H+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/ st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7L fnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y35 0Y/2W/OjH+y350Y/2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/ 2W/OgAx/st+dGP8AZb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dGP8A Zb86Mf7LfnRj/Zb86ADH+y350Y/2W/OjH+y350Y/2W/OgAx/st+dYXiIY+zcEfe6/hW7j/Zb 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 --------------000604020002040702070009 Content-Type: image/jpeg; name="submit_102.42a10.jpg" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="submit_102.42a10.jpg" /9j/4AAQSkZJRgABAQIAAAAAAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRof Hh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwh MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAAR CAIjAsMDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA AgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkK FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWG h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl 5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYk NOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk 5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwCey0vS7fwzokw0TRWU6dayTyS6XDK5LQIS 5JGSckk5Pc1ZtIvD11aPN/Ymg/uuJMaZb4Hv9zoe1WdOmjt/CujyyttRNJsyT/2wSuPks57K 5TUDZuLG6kybdD0XOQGHuOcVrtqZ7nU2On6ZdRtM/h7QliY/uh/ZUGdvqfl71qDwvYGISDw1 ohUruGNNts4+m2khlSaFJIzlGGQa347m3H2ZN6LIbfaJd33DjoR0pvTYS1OY/sfRv+gBon/g rt//AIij+x9G/wCgBon/AIK7f/4iujtmi2WO6eJfIZw4Lep4xRZzIFkQypGpkY7xIA35Ecii 67Br3MF9A0iO3imOg6FtlzgDS4M8HH9yo00XR5HVF8P6IWY4A/su36/98V0dvdJFFZRrKm3c 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 6jUP+QhP/vmuX8b/APIj61/15yfyoAxNY/4/Y/8Ar1t//RKUUax/x+x/9etv/wCiUooA6fQv +QFoH/YA0/8A9AatOszQv+QFoH/YA0//ANAatOgAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigCzqH/ACEJ/wDfNcv43/5EfWv+ vOT+VdRqH/IQn/3zXL+N/wDkR9a/685P5UAYmsf8fsf/AF62/wD6JSijWP8Aj9j/AOvW3/8A RKUUAdPoX/IC0D/sAaf/AOgNWnWZoX/IC0D/ALAGn/8AoDVp0AFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUVk6NH4u1/ThqNhZ6ILVppok8+8lRz5cjRkkCJgMlCepq//AGF4 6/59PDv/AIHz/wDxmgCeioP7C8df8+nh3/wPn/8AjNH9heOv+fTw7/4Hz/8AxmgCeioP7C8d f8+nh3/wPn/+M0f2F46/59PDv/gfP/8AGaAJ6Kg/sLx1/wA+nh3/AMD5/wD4zR/YXjr/AJ9P Dv8A4Hz/APxmgCeioP7C8df8+nh3/wAD5/8A4zR/YXjr/n08O/8AgfP/APGaAJ6Kg/sLx1/z 6eHf/A+f/wCM0f2F46/59PDv/gfP/wDGaAJ6Kg/sLx1/z6eHf/A+f/4zR/YXjr/n08O/+B8/ /wAZoAnoqD+wvHX/AD6eHf8AwPn/APjNH9heOv8An08O/wDgfP8A/GaAJ6Kg/sLx1/z6eHf/ AAPn/wDjNH9heOv+fTw7/wCB8/8A8ZoAnoqD+wvHX/Pp4d/8D5//AIzR/YXjr/n08O/+B8// AMZoAnoqD+wvHX/Pp4d/8D5//jNH9heOv+fTw7/4Hz//ABmgCeioP7C8df8APp4d/wDA+f8A +M0f2F46/wCfTw7/AOB8/wD8ZoAnoqD+wvHX/Pp4d/8AA+f/AOM0f2F46/59PDv/AIHz/wDx mgCeioP7C8df8+nh3/wPn/8AjNH9heOv+fTw7/4Hz/8AxmgCeioP7C8df8+nh3/wPn/+M0f2 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 vPf7Stf79j/37j/wo/tK1/v2P/fuP/CgD0KivPf7Stf79j/37j/wo/tK1/v2P/fuP/CgD0Ki vPf7Stf79j/37j/wo/tK1/v2P/fuP/CgD0KivPf7Stf79j/37j/wo/tK1/v2P/fuP/CgDs9a v7TTNGury/uYra2jT55ZXCqueByfUkAepNeWzeMfCdxDJDNrWmyRSKUdHlUqykYIIPUGt/8A tK1/v2P/AH7j/wAKP7Stf79j/wB+4/8ACgDmtP8AE/gzSrCGxsdX02C2hXbHGkwwB/UnqSeS Tk1b8ESJN4MikjdXjfUL1lZTkMDMcEH0ra/tK1/v2P8A37j/AMKkFwLiFShiMQY4MSqFzxnp 36fpQBkX/jjws2oTlfEGnMN55WdSD9D3qhbeL/C9tE0f/CSWsuZHk3S3IYjcxbbn0GcAdgAK 6WigDltA1Ky1XxfrlzYXUNzB9ltF3xOGGQZsjjvXU0UUAFFFFABRRRQAUUUUAFFFFAFPUtMt tVtlgul3IsiyDgHoeV5B4ZdyMO6sw70zVdKj1aGFWnuLeW3mWeGe3cK8bgEZGQQQQWUggghj xV+igDKttCjgFqZb29upbe6e7EtxKGZnZHQgjGFUBzhVCgYHvmtfeFba/lvi9/qEUN/Ir3dv FMFSYKqJs6ZUEJg7SCQxBJGAN6igDB1Dwrbajc3jtf6hDBfbPtlrDMBHPtAHOQWXKgK2wrkA ZqzqGhjUXmWTUb1LS4XZcWiMhjlUjawyyllBXg7GX1GCSTq0UAYl34ajub+4uo9T1O0W6aN7 mC2nCJKyYAOcbkJUKp2MuQBVw/8AI9eEf+vy4/8ASWar9Na4htyDKbcE9DKqn8t1AHWzeHtM uNUGoyQSGfesjIJ5BFI642u8QbY7jauGZSRsTB+VcSR6Jp0X2bZb4+zXct7F87fLNL5m9uvO fOk4PA3cAYGON/tK1/v2P/fuP/Cj+0rX+/Y/9+4/8KAPQqK89/tK1/v2P/fuP/Cj+0rX+/Y/ 9+4/8KAPQqK89/tK1/v2P/fuP/Cj+0rX+/Y/9+4/8KAPQqK89/tK1/v2P/fuP/Cj+0rX+/Y/ 9+4/8KAPQqK89/tK1/v2P/fuP/Cj+0rX+/Y/9+4/8KAPQqK89/tK1/v2P/fuP/Cj+0rX+/Y/ 9+4/8KAPQqK89/tK1/v2P/fuP/Cj+0rX+/Y/9+4/8KAJPGHivQNO1n7HeaxZQXMaDzInmAZM 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 RQB0+hf8gLQP+wBp/wD6A1adZmhf8gLQP+wBp/8A6A1adABRRRQAUUUUAFFFFABRRRQAUUUU AFFFUNS1JrJ7eCC2e6u7lisUSsFAAGS7k/djHygsASCygAkgEAv0Vm2mpzGSWHUrP7FJF5f7 3zQ8EpkYqojcgEnIAIKqcsMZBBM1tq2m3lsbm11C0ngEgiMsUysu8kALkHGSWUY68j1oAuUV DJd20PnebcRJ5Efmy7nA8tOfmb0HytyePlPpTLLUbLU4TNYXlvdxK2wvBKsihsA4yD15H50A bXwy/wCRFt/+vy9/9Kpa66uR+GX/ACItv/1+Xv8A6VS111ABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABWH4g/g/6 4v8A+hx1uVh+IP4P+uL/APocdAHOUVee5ngs7URSsgKtkA/7RrnP+E0v93n/AGW5/s/7Z9h8 /wA5d/m+d5O7Zn/V7uM7t2f4Mc0AatFY/iG7uJ9f8MJLM7J9tlO0njP2aXn9T+dbFAHKUUUU AUNY/wCP2P8A69bf/wBEpRRrH/H7H/162/8A6JSigDp9C/5AWgf9gDT/AP0Bq06zNC/5AWgf 9gDT/wD0Bq06ACiiigAooooAKKKKACiiigAooooAKx9VWa11Ww1WK2luY4Y5redIQCyRvsYy AZy2DEBtUFjvyMkYOxRQByXiG+bU9EnDaRcPY/arERidAjXRNygdPKkwVHAHz7Qd3pyad6JL y41rVrHR73ylbTnINsYpbpoJjLIVR9rMQhVRkDJXAziuzubWG8iWKdN6LIkoGSPmRg6nj0ZQ fwqagDkpCup6jq929hqaWn2Wy8qQW5SQtHNM+9EYZJQlW2lcnb91gy7rnh03cl/qMsstxdWz LEILq8svs05I3bo2G1NyrkMDtA/eMMnBroaKANH4Zf8AIi2//X5e/wDpVLXXVyPwy/5EW3/6 /L3/ANKpa66gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigArD8Qfwf9cX/APQ463Kw/EH8H/XF/wD0OOgDFuP+PS0/ 3G/9CNYk0H23WfLnEpt7aOOZEMeInkLNgls/MV2AhcAKSG5O3Ymow6/czr9j1eytrZF2xxvY GRh3JLeaM8k9hxj6mn/Z/ij/AKGCw/8ABWf/AI9QAa5/yMfhj/r8m/8ASaWt+uej0TV5tW0+ 81HWLW4jspHkWOKxMRYtGyfe8xuPnz07V0NAHKUUUUAUNY/4/Y/+vW3/APRKUUax/wAfsf8A 162//olKKAOn0L/kBaB/2ANP/wDQGrTrM0L/AJAWgf8AYA0//wBAatOgAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKANH4Zf8iLb/wDX5e/+lUtddXI/DL/kRbf/AK/L3/0qlrrq ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACsPxB/B/wBcX/8AQ463Kw/EH8H/AFxf/wBDjoA5yiiigAooooA5Siii gChrH/H7H/162/8A6JSijWP+P2P/AK9bf/0SlFAHT6F/yAtA/wCwBp//AKA1adZmhf8AIC0D /sAaf/6A1adABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAaPwy/5EW3/wCvy9/9 Kpa66uI0uaPRtPSxsDcxW6O7hTIjfM7l2OSmeWYn8auf21cf897j/vqP/wCN0AdXRXKf21cf 897j/vqP/wCN0f21cf8APe4/76j/APjdAHV0Vyn9tXH/AD3uP++o/wD43R/bVx/z3uP++o// AI3QB1dFcp/bVx/z3uP++o//AI3R/bVx/wA97j/vqP8A+N0AdXRXKf21cf8APe4/76j/APjd H9tXH/Pe4/76j/8AjdAHV0Vyn9tXH/Pe4/76j/8AjdH9tXH/AD3uP++o/wD43QB1dFcp/bVx /wA97j/vqP8A+N0f21cf897j/vqP/wCN0AdXRXKf21cf897j/vqP/wCN0f21cf8APe4/76j/ APjdAHV0Vyn9tXH/AD3uP++o/wD43R/bVx/z3uP++o//AI3QB1dFcp/bVx/z3uP++o//AI3R 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 +Q1/woooAoXNzLdztPO++RsZbAGcDHaiiigD/9k= --------------000604020002040702070009-- *** ***************************************************** *** Message #2189 ***************************************************** *** ***************************************************** Subject: Re: Submit Confirmation From: Greg Ercolano Date: Mon, 09 Jan 2012 21:08:06 -0500 This is a multi-part message in MIME format. --------------060608090304000807070800 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable On 01/09/12 17:48, Mr. Daniel Browne wrote: > In certain situations, some users wanted the ability to re-render eleme= nts individually. I've gone with simply adding an extra flag to RushSubmi= t in .common.pl to bypass the "ok" message window when desired. Sounds good. Just so you know how I handled this in the newer releases of Rush: So as not to break old scripts, I left the old *RushSubmit()* functio= n's argument list untouched, and made a new function called *RushSubmitEx()* which= takes a single hash as its argument, so that many flags can be optionally set= as needed. This way the new function can have new args added without affecting t= he calling syntax, new scripts can use the new function, and old scripts can continue to= use the old function, which just turns around and calls the new function to do all the work= , eg: -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= ----------------------------------------- /# [NEW] SUBMIT A JOB TO RUSH, WITH OPTIONS TO CONTROL SUBMIT BEHAVIOR # Returns "" if submitted OK with $ENV{RUSH_JOBID} containing the job= id. # Returns error message if submit failed, $ENV{RUSH_JOBID} is unchang= ed. # # $1 - text to submit # $2 - REFERENCE: hash of options. Can be an empty hash for defaults.= # [..docs of all flags snipped to keep this email short..] # /*sub RushSubmitEx($%)* { ..does the actual work.. } /# [OLD] SUBMIT A JOB TO RUSH, SHOW CONFIRMATIONS, START IRUSH # Returns 0 if ok with $ENV{RUSH_JOBID} containing the jobid, or 1 on= error. # If you want more features, use the newer RushSubmitEx(). # $1 - submit host # $2 - text to submit # $3 - job title (can be "") # $4 - start irush (yes/no/ask) # /*sub RushSubmit($$$$)* { my ($submithost, $submit, $jobtitle, $startirush) =3D @_; my %options; $options{SubmitHost} =3D $submithost; $options{IrushJobTitle} =3D $jobtitle; $options{StartIrush} =3D $startirush; my $errmsg =3D RushSubmitEx($submit, %options); return(($errmsg eq "") ? 0 : 1); } =20 -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= ----------------------------------------- --=20 Greg Ercolano, erco@(email surpressed) Seriss Corporation Rush Render Queue, http://seriss.com/rush/ Tel: (Tel# suppressed)ext.23 Fax: (Tel# suppressed) Cel: (Tel# suppressed) --------------060608090304000807070800 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit On 01/09/12 17:48, Mr. Daniel Browne wrote:
In certain situations, some users wanted the ability to re-render elements individually. I've gone with simply adding an extra flag to RushSubmit in .common.pl to bypass the "ok" message window when desired.

    Sounds good.

    Just so you know how I handled this in the newer releases of Rush:

    So as not to break old scripts, I left the old RushSubmit() function's argument
    list untouched, and made a new function called RushSubmitEx() which takes a
    single hash as its argument, so that many flags can be optionally set as needed.

    This way the new function can have new args added without affecting the calling syntax,
    new scripts can use the new function, and old scripts can continue to use the old function,
    which just turns around and calls the new function to do all the work, eg:



# [NEW] SUBMIT A JOB TO RUSH, WITH OPTIONS TO CONTROL SUBMIT BEHAVIOR
#     Returns "" if submitted OK with $ENV{RUSH_JOBID} containing the jobid.
#     Returns error message if submit failed, $ENV{RUSH_JOBID} is unchanged.
#
#     $1 - text to submit
#     $2 - REFERENCE: hash of options. Can be an empty hash for defaults.
# [..docs of all flags snipped to keep this email short..]
#
sub RushSubmitEx($%)
{
   ..does the actual work..
}

# [OLD] SUBMIT A JOB TO RUSH, SHOW CONFIRMATIONS, START IRUSH
#     Returns 0 if ok with $ENV{RUSH_JOBID} containing the jobid, or 1 on error.
#     If you want more features, use the newer RushSubmitEx().
#     $1 - submit host
#     $2 - text to submit
#     $3 - job title (can be "")
#     $4 - start irush (yes/no/ask)
#
sub RushSubmit($$$$)
{
    my ($submithost, $submit, $jobtitle, $startirush) = @_;
    my %options;
    $options{SubmitHost}    = $submithost;
    $options{IrushJobTitle} = $jobtitle;
    $options{StartIrush}    = $startirush;
    my $errmsg = RushSubmitEx($submit, %options);
    return(($errmsg eq "") ? 0 : 1);
}  



-- 
Greg Ercolano, erco@(email surpressed)
Seriss Corporation
Rush Render Queue, http://seriss.com/rush/
Tel: (Tel# suppressed)ext.23
Fax: (Tel# suppressed)
Cel: (Tel# suppressed)

--------------060608090304000807070800-- *** ***************************************************** *** Message #2188 ***************************************************** *** ***************************************************** Subject: Re: Submit Confirmation From: "Mr. Daniel Browne" Date: Mon, 09 Jan 2012 20:48:25 -0500 --Apple-Mail-1--39450338 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="us-ascii" In certain situations, some users wanted the ability to re-render = elements individually. I've gone with simply adding an extra flag to = RushSubmit in .common.pl to bypass the "ok" message window when desired. On Jan 6, 2012, at 10:18 AM, Greg Ercolano wrote: On 01/05/12 21:18, Dan Rosen wrote: >=20 > Greg, >=20 > As Dan said we didn't know about that floating point number thing. How = do th=3D > e numbers correlate to Write nodes? To convert the numbers to write node names, use the number as an = index into the list of names. So if your node names are A,B,C,D.. then save them to a file, one = name per line, and then the render script uses the numbers at render time to pick = which line in the file as a way to convert the numbers into names. So for instance, at render time let's say RUSH_FRAME ends up being = "10.3", so you parse out the frame number (10) and the writenode number (3), then use the '3' to pick the third line in the file, which would = have "C" in it. Now you have a node name that you can use for rendering. Hust save the list of your write node names to a file in the job's = log directory on submit, so that the render script can access it easily at render = time. > As Dan also mentioned we list the Write n=3D > odes by name in the Rush submit so that users can turn off any Writes = on the=3D > fly. We initially get that list from the Write nodes that they have = selecte=3D > d or all Write nodes if nothing is selected. We also ignore disabled = Write n=3D > odes, etc, etc.=3D20 >=20 > We normally render all Writes in one job, but this special case we = have ligh=3D > ting td's that want each Write to be a separate job for a workflow = reason. S=3D > ounds like you've given us an i between option to think about. Hmm, if you want the jobs to be separate for a "workflow reason", I guess I'd need more info to understand why that's better than having one job handle all the write nodes. Certainly its easy to get nuke to run each frame (or batch of = frames) to render *all* the nodes in a single process, but I was thinking you were perhaps using separate jobs just so that each writenode = runs on a separate machine for speed. If that's the only reason, then I = think the above floating point frame trick would be better, to avoid = having lots and lots of jobs. But if there's some other reason to have each node be a separate job (eg. some more important than others, etc), then yes, forget the=20 floating point thing and submit them as separate jobs. Note too, with the floating point frame trick, you can include the node names in the 'NOTES' field of the frames report. When the submit script builds the 'frames' command, it could do something like this: [..] frames 0001.1:Node_A frames 0001.2:Node_B : frames 0005.4:Node_D frames 0005.5:Node_E frameflags keepnotes [..] (The 'frameflags keepnotes' makes sure the note names don't get = cleared when the renders start rendering.) With the above, your "frames" report ends up looking something like = this: STAT FRAME TRY HOSTNAME PID JOBID START = ELAPSED NOTES Done 0001.1 1 ta 7254 ta.197 01/06,10:01:24 = 00:00:02 Node_A Done 0001.2 1 ta 7257 ta.197 01/06,10:01:28 = 00:00:02 Node_B Que 0001.3 0 - 0 ta.197 00/00,00:00:00 = 00:00:00 Node_C An example of this overloading of floating point frames is used in the 'tile' versions of the submit scripts, eg. submit-maya-tile, etc. Note that you can add frame padding to the number after the decimal, and this will be preserved in the frames report, so you can have as = many digits as you need for your write node count. So if you know you = need 2 digits, pad with 2 digits, eg: frames 0001.01 frames 0001.02 : frames 0001.59 frames 0001.60 Whatever padding you use to the right of the decimal will be = preserved. --=20 Greg Ercolano, erco@(email surpressed) Seriss Corporation Rush Render Queue, http://seriss.com/rush/ Tel: (Tel# suppressed)ext.23 Fax: (Tel# suppressed) Cel: (Tel# suppressed) ---------- Dan "Doc" Browne System Administrator Evil Eye Pictures dbrowne@(email surpressed) Office: (415) 777-0666 x105 --Apple-Mail-1--39450338 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" In = certain situations, some users wanted the ability to re-render elements = individually. I've gone with simply adding an extra flag to RushSubmit = in .common.pl to bypass the "ok" message window when = desired.


On Jan 6, 2012, at 10:18 AM, = Greg Ercolano wrote:

=20 =20
On 01/05/12 21:18, Dan Rosen wrote:
Greg,

As Dan said we didn't know about that floating point number thing. How =
do th=3D
e numbers correlate to Write nodes?
    To convert the numbers to write node names, use = the number as an index into the list
    of names.

    So if your node names are A,B,C,D.. then save = them to a file, one name per line,
    and then the render script uses the numbers at render = time to pick which line in the
    file as a way to convert the numbers into = names.

    So for instance, at render time let's say = RUSH_FRAME ends up being "10.3",
    so you parse out the frame number (10) and the = writenode number (3),
    then use the '3' to pick the third line in the = file, which would have "C" in it.
    Now you have a node name that you can use for = rendering.

    Hust save the list of your write node names to a = file in the job's log directory
    on submit, so that the render script can access = it easily at render time.

 As Dan also mentioned we list the Write n=3D
odes by name in the Rush submit so that users can turn off any Writes on =
the=3D
 fly. We initially get that list from the Write nodes that they have =
selecte=3D
d or all Write nodes if nothing is selected. We also ignore disabled =
Write n=3D
odes, etc, etc.=3D20

We normally render all Writes in one job, but this special case we have =
ligh=3D
ting td's that want each Write to be a separate job for a workflow =
reason. S=3D
ounds like you've given us an i between option to think about.
    Hmm, if you want the jobs to be separate for a = "workflow reason",
    I guess I'd need more info to understand why = that's better than
    having one job handle all the write nodes.

    Certainly its easy to get nuke to run each frame = (or batch of frames)
    to render *all* the nodes in a single process, = but I was thinking
    you were perhaps using separate jobs just so that = each writenode runs
    on a separate machine for speed. If that's the = only reason, then I think
    the above floating point frame trick would be = better, to avoid having
    lots and lots of jobs.

    But if there's some other reason to have each = node be a separate job
    (eg. some more important than others, etc), then = yes, forget the
    floating point thing and submit them as separate = jobs.

    Note too, with the floating point frame trick, = you can include
    the node names in the 'NOTES' field of the frames = report.
    When the submit script builds the 'frames' = command, it could do
    something like this:


[..]
frames 0001.1:Node_A
frames 0001.2:Node_B
:
frames 0005.4:Node_D
frames 0005.5:Node_E

frameflags keepnotes
[..]



    (The 'frameflags keepnotes' makes sure the note = names don't get cleared
    when the renders start rendering.)

    With the above,  your "frames" report ends = up looking something like this:

STAT FRAME   TRY = HOSTNAME        = PID     = JOBID            START          = ELAPSED  NOTES
Done 0001.1  1   = ta            =   7254    = ta.197           01/06,10:01:24 00:00:02 Node_A
Done 0001.2  1   = ta            =   7257    = ta.197           01/06,10:01:28 00:00:02 Node_B
Que  0001.3  0   = -            &= nbsp;  0       = ta.197           00/00,00:00:00 00:00:00 Node_C

    An example of this overloading of floating = point frames is used
    in the 'tile' versions of the submit scripts, eg. submit-maya-tile,
    etc.

    Note that you can add frame padding to the number = after the decimal,
    and this will be preserved in the frames report, = so you can have as many
    digits as you need for your write node count. So = if you know you need 2
    digits, pad with 2 digits, eg:

frames 0001.01
frames 0001.02
:
frames 0001.59
frames 0001.60


    Whatever padding you use to the right of the = decimal will be preserved.

--=20
Greg Ercolano, erco@(email surpressed)
Seriss Corporation
Rush Render Queue, http://seriss.com/rush/
Tel: (Tel# suppressed)ext.23
Fax: (Tel# suppressed)
Cel: (Tel# suppressed)


System = Administrator
Evil Eye = Pictures


= --Apple-Mail-1--39450338-- *** ***************************************************** *** Message #2187 ***************************************************** *** ***************************************************** Subject: Re: Submit Confirmation From: Greg Ercolano Date: Fri, 06 Jan 2012 13:18:33 -0500 This is a multi-part message in MIME format. --------------030201020501030802070802 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable On 01/05/12 21:18, Dan Rosen wrote: > Greg, > > As Dan said we didn't know about that floating point number thing. How = do th=3D > e numbers correlate to Write nodes? To convert the numbers to write node names, use the number as an inde= x into the list of names. So if your node names are A,B,C,D.. then save them to a file, one nam= e per line, and then the render script uses the numbers at render time to pick wh= ich line in the file as a way to convert the numbers into names. So for instance, at render time let's say RUSH_FRAME ends up being "1= 0.3", so you parse out the frame number (10) and the writenode number (3), then use the '3' to pick the third line in the file, which would have= "C" in it. Now you have a node name that you can use for rendering. Just save the list of your write node names to a file in the job's lo= g directory on submit, so that the render script can access it easily at render t= ime. > As Dan also mentioned we list the Write n=3D > odes by name in the Rush submit so that users can turn off any Writes o= n the=3D > fly. We initially get that list from the Write nodes that they have se= lecte=3D > d or all Write nodes if nothing is selected. We also ignore disabled Wr= ite n=3D > odes, etc, etc.=3D20 > > We normally render all Writes in one job, but this special case we have= ligh=3D > ting td's that want each Write to be a separate job for a workflow reas= on. S=3D > ounds like you've given us an i between option to think about. Hmm, if you want the jobs to be separate for a "workflow reason", I guess I'd need more info to understand why that's better than having one job handle all the write nodes. Certainly its easy to get nuke to run each frame (or batch of frames)= to render *all* the nodes in a single process, but I was thinking you were perhaps using separate jobs just so that each writenode runs= on a separate machine for speed. If that's the only reason, then I th= ink the above floating point frame trick would be better, to avoid having= lots and lots of jobs. But if there's some other reason to have each node be a separate job (eg. some more important than others, etc), then yes, forget the floating point thing and submit them as separate jobs. Note too, with the floating point frame trick, you can include the node names in the 'NOTES' field of the frames report. When the submit script builds the 'frames' command, it could do something like this: -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= ----------------------------------------- [..] frames 0001.1:Node_A frames 0001.2:Node_B : frames 0005.4:Node_D frames 0005.5:Node_E frameflags keepnotes [..] -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= ----------------------------------------- (The 'frameflags keepnotes' makes sure the note names don't get clear= ed when the renders start rendering.) With the above, your "frames" report ends up looking something like = this: STAT FRAME TRY HOSTNAME PID JOBID START = ELAPSED NOTES Done 0001.1 1 ta 7254 ta.197 01/06,10:01:24 = 00:00:02 Node_A Done 0001.2 1 ta 7257 ta.197 01/06,10:01:28 = 00:00:02 Node_B Que 0001.3 0 - 0 ta.197 00/00,00:00:00 = 00:00:00 Node_C An example of this overloading of floating point frames is used in the 'tile' versions of the submit scripts, eg. submit-maya-tile, etc. Note that you can add frame padding to the number after the decimal, and this will be preserved in the frames report, so you can have as m= any digits as you need for your write node count. So if you know you need= 2 digits, pad with 2 digits, eg: frames 0001.01 frames 0001.02 : frames 0001.59 frames 0001.60 Whatever padding you use to the right of the decimal will be preserve= d. --=20 Greg Ercolano, erco@(email surpressed) Seriss Corporation Rush Render Queue, http://seriss.com/rush/ Tel: (Tel# suppressed)ext.23 Fax: (Tel# suppressed) Cel: (Tel# suppressed) --------------030201020501030802070802 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit On 01/05/12 21:18, Dan Rosen wrote:
Greg,

As Dan said we didn't know about that floating point number thing. How do th=
e numbers correlate to Write nodes?
    To convert the numbers to write node names, use the number as an index into the list
    of names.

    So if your node names are A,B,C,D.. then save them to a file, one name per line,
    and then the render script uses the numbers at render time to pick which line in the
    file as a way to convert the numbers into names.

    So for instance, at render time let's say RUSH_FRAME ends up being "10.3",
    so you parse out the frame number (10) and the writenode number (3),
    then use the '3' to pick the third line in the file, which would have "C" in it.
    Now you have a node name that you can use for rendering.

    Hust save the list of your write node names to a file in the job's log directory
    on submit, so that the render script can access it easily at render time.

 As Dan also mentioned we list the Write n=
odes by name in the Rush submit so that users can turn off any Writes on the=
 fly. We initially get that list from the Write nodes that they have selecte=
d or all Write nodes if nothing is selected. We also ignore disabled Write n=
odes, etc, etc.=20

We normally render all Writes in one job, but this special case we have ligh=
ting td's that want each Write to be a separate job for a workflow reason. S=
ounds like you've given us an i between option to think about.
    Hmm, if you want the jobs to be separate for a "workflow reason",
    I guess I'd need more info to understand why that's better than
    having one job handle all the write nodes.

    Certainly its easy to get nuke to run each frame (or batch of frames)
    to render *all* the nodes in a single process, but I was thinking
    you were perhaps using separate jobs just so that each writenode runs
    on a separate machine for speed. If that's the only reason, then I think
    the above floating point frame trick would be better, to avoid having
    lots and lots of jobs.

    But if there's some other reason to have each node be a separate job
    (eg. some more important than others, etc), then yes, forget the
    floating point thing and submit them as separate jobs.

    Note too, with the floating point frame trick, you can include
    the node names in the 'NOTES' field of the frames report.
    When the submit script builds the 'frames' command, it could do
    something like this:


[..]
frames 0001.1:Node_A
frames 0001.2:Node_B
:
frames 0005.4:Node_D
frames 0005.5:Node_E

frameflags keepnotes
[..]



    (The 'frameflags keepnotes' makes sure the note names don't get cleared
    when the renders start rendering.)

    With the above,  your "frames" report ends up looking something like this:

STAT FRAME   TRY HOSTNAME        PID     JOBID            START          ELAPSED  NOTES
Done 0001.1  1   ta              7254    ta.197           01/06,10:01:24 00:00:02 Node_A
Done 0001.2  1   ta              7257    ta.197           01/06,10:01:28 00:00:02 Node_B
Que  0001.3  0   -               0       ta.197           00/00,00:00:00 00:00:00 Node_C

    An example of this overloading of floating point frames is used
    in the 'tile' versions of the submit scripts, eg. submit-maya-tile,
    etc.

    Note that you can add frame padding to the number after the decimal,
    and this will be preserved in the frames report, so you can have as many
    digits as you need for your write node count. So if you know you need 2
    digits, pad with 2 digits, eg:

frames 0001.01
frames 0001.02
:
frames 0001.59
frames 0001.60


    Whatever padding you use to the right of the decimal will be preserved.

-- 
Greg Ercolano, erco@(email surpressed)
Seriss Corporation
Rush Render Queue, http://seriss.com/rush/
Tel: (Tel# suppressed)ext.23
Fax: (Tel# suppressed)
Cel: (Tel# suppressed)

--------------030201020501030802070802-- *** ***************************************************** *** Message #2186 ***************************************************** *** ***************************************************** Subject: Re: Submit Confirmation From: Dan Rosen Date: Fri, 06 Jan 2012 00:18:14 -0500 Greg, As Dan said we didn't know about that floating point number thing. How do th= e numbers correlate to Write nodes? As Dan also mentioned we list the Write n= odes by name in the Rush submit so that users can turn off any Writes on the= fly. We initially get that list from the Write nodes that they have selecte= d or all Write nodes if nothing is selected. We also ignore disabled Write n= odes, etc, etc.=20 We normally render all Writes in one job, but this special case we have ligh= ting td's that want each Write to be a separate job for a workflow reason. S= ounds like you've given us an i between option to think about. Thanks, Dan On Jan 5, 2012, at 5:49 PM, "Mr. Daniel Browne" wrote: > [posted to rush.general] >=20 > That sounds like it would switch the confirmation off across all apps; I =3D= > simply one to reduce it down to one, so it sounds like I have to make a =3D= > modification myself to .common.pl. >=20 > I wasn't aware of the ability to address write nodes that way, however =3D= > we've gone a more user friendly direction by breaking them up into =3D > fields in the submit window. >=20 >=20 >=20 > On Jan 5, 2012, at 2:48 PM, Greg Ercolano wrote: >=20 > On 01/04/12 17:49, Mr. Daniel Browne wrote: >> [posted to rush.general] >> =3D20 >> Hi Greg, Happy New Year. >> =3D20 >> Before the holidays I had made a modification to our Nuke submit to =3D3D= >> split off each write node into a separate job. The downside is that if =3D= > =3D3D >> you have a lot of write nodes, you have to click through a whole lot =3D > of =3D3D >> "Ok" messages after hitting the submit button. Is there an easy way to =3D= > =3D3D >> suppress this, or do I have to customize the RushSubmit() routine =3D > inside =3D3D >> .common.pl? >=20 > There are a few things I'd suggest. >=20 > The newer .common.pl files have an option to turn off the > OK messages. If you email me your .common.pl file, I can send > back the file with the newer code for RushSubmit() that you can > use to disable those dialogs. >=20 > Also: if you have a *lot* of write nodes, I'd suggest trying > to consolidate them into a single job by using rush's ability > to use floating point frame numbers. >=20 > For instance, if you have a range of 5 frames specified as: >=20 > frames 1-5 >=20 > ..which gets you: >=20 > 0001 > 0002 > 0003 > 0004 > 0005 >=20 > ..but let's say you have 3 write nodes (A, B and C). > Then you can use rush's floating point frames so that > the number to the left of the decimal is used as the > frame number, and the number to the right of the decimal > is used as the write node. >=20 > So for instance: >=20 > frames 1.1 1.2 1.3 2.1 2.2 2.3 3.1 3.2 3.3 4.1 4.2 4.3 5.1 5.2 5.3 >=20 > ..would get you: >=20 > 0001.1 -- renders frame 1, node 'A' > 0001.2 -- renders frame 1, node 'B' > 0001.3 -- renders frame 1, node 'C' > 0002.1 -- renders frame 2, node 'A' > 0002.2 -- renders frame 2, node 'B' > : > etc > : > 0004.3 -- renders frame 4, node 'C' > 0005.1 -- renders frame 5, node 'A' > 0005.2 -- renders frame 5, node 'B' > 0005.3 -- renders frame 5, node 'C' >=20 > You can have as many nodes as you want, since > you can control how many digits in the frame specification. > So if you had 100 nodes, you might have: >=20 > frames 1.001 1.002 .. 1.099 1.100 2.001 2.002 .. 2.099 2.100 3.001 =3D > ..etc.. >=20 > ..which would get you: >=20 > 0001.001 -- renders frame 1, node #1 > 0001.002 -- renders frame 1, node #2 > : > etc > : > 0001.099 -- renders frame 1, node 99 > 0001.100 -- renders frame 1, node 100 > 0002.001 -- renders frame 1, node 1 > : > etc > : >=20 > It's pretty easy to have the script parse out the digits > to the left and to the right of the decimal at render time > from the floating point value in the RUSH_FRAME variable, eg: >=20 > if ( $ENV{RUSH_FRAME} =3D3D~ /(\d+)\.(\d+)/ ) { > my $frame =3D3D $1; > my $node =3D3D $2; > ..etc.. > } >=20 > This way /one/ job can render all the nodes on separate =3D > processors, > with clear logs and simple control without having dozens of =3D > separate > jobs that have to be managed separately. >=20 >=20 > --=3D20 > Greg Ercolano, erco@(email surpressed) > Seriss Corporation > Rush Render Queue, http://seriss.com/rush/ > Tel: (Tel# suppressed)ext.23 > Fax: (Tel# suppressed) > Cel: (Tel# suppressed) >=20 >=20 *** ***************************************************** *** Message #2185 ***************************************************** *** ***************************************************** Subject: Re: Submit Confirmation From: Greg Ercolano Date: Thu, 05 Jan 2012 20:54:54 -0500 On 01/05/12 17:49, Mr. Daniel Browne wrote: > That sounds like it would switch the confirmation off across all apps No, it just makes it an option that is default off. > I simply one to reduce it down to one, so it sounds like I have > to make a modification myself to .common.pl. No, it would be a different function call (RushSubmitEx()) which takes extra optional arguments. It would be added to the .common.pl, and is not used by the older scripts, so that they'd be unaffected by the change. In fact, you can add the RushSubmitEx() function to just the nuke script if you want, so that the .common.pl doesn't have to change, and the nuke script can call that local function to do the submits. When you send me your scripts (send both .common.pl and your submit-nuke), I'll show you how to do it without causing trouble with the other scripts. Rush always tries to remain backwards compatible with the older scripts. > I wasn't aware of the ability to address write nodes that way, > however we've gone a more user friendly direction by breaking > them up into fields in the submit window. Contact me offline, and I can recommend some approaches on how to do that. Depends what you want it to do. -- Greg Ercolano, erco@(email surpressed) Seriss Corporation Rush Render Queue, http://seriss.com/rush/ Tel: (Tel# suppressed)ext.23 Fax: (Tel# suppressed) Cel: (Tel# suppressed) *** ***************************************************** *** Message #2184 ***************************************************** *** ***************************************************** Subject: Re: Submit Confirmation From: "Mr. Daniel Browne" Date: Thu, 05 Jan 2012 20:49:29 -0500 That sounds like it would switch the confirmation off across all apps; I = simply one to reduce it down to one, so it sounds like I have to make a = modification myself to .common.pl. I wasn't aware of the ability to address write nodes that way, however = we've gone a more user friendly direction by breaking them up into = fields in the submit window. On Jan 5, 2012, at 2:48 PM, Greg Ercolano wrote: On 01/04/12 17:49, Mr. Daniel Browne wrote: > [posted to rush.general] >=20 > Hi Greg, Happy New Year. >=20 > Before the holidays I had made a modification to our Nuke submit to =3D > split off each write node into a separate job. The downside is that if = =3D > you have a lot of write nodes, you have to click through a whole lot = of =3D > "Ok" messages after hitting the submit button. Is there an easy way to = =3D > suppress this, or do I have to customize the RushSubmit() routine = inside =3D > .common.pl? There are a few things I'd suggest. The newer .common.pl files have an option to turn off the OK messages. If you email me your .common.pl file, I can send back the file with the newer code for RushSubmit() that you can use to disable those dialogs. Also: if you have a *lot* of write nodes, I'd suggest trying to consolidate them into a single job by using rush's ability to use floating point frame numbers. For instance, if you have a range of 5 frames specified as: frames 1-5 ..which gets you: 0001 0002 0003 0004 0005 ..but let's say you have 3 write nodes (A, B and C). Then you can use rush's floating point frames so that the number to the left of the decimal is used as the frame number, and the number to the right of the decimal is used as the write node. So for instance: frames 1.1 1.2 1.3 2.1 2.2 2.3 3.1 3.2 3.3 4.1 4.2 4.3 5.1 5.2 5.3 ..would get you: 0001.1 -- renders frame 1, node 'A' 0001.2 -- renders frame 1, node 'B' 0001.3 -- renders frame 1, node 'C' 0002.1 -- renders frame 2, node 'A' 0002.2 -- renders frame 2, node 'B' : etc : 0004.3 -- renders frame 4, node 'C' 0005.1 -- renders frame 5, node 'A' 0005.2 -- renders frame 5, node 'B' 0005.3 -- renders frame 5, node 'C' You can have as many nodes as you want, since you can control how many digits in the frame specification. So if you had 100 nodes, you might have: frames 1.001 1.002 .. 1.099 1.100 2.001 2.002 .. 2.099 2.100 3.001 = ..etc.. ..which would get you: 0001.001 -- renders frame 1, node #1 0001.002 -- renders frame 1, node #2 : etc : 0001.099 -- renders frame 1, node 99 0001.100 -- renders frame 1, node 100 0002.001 -- renders frame 1, node 1 : etc : It's pretty easy to have the script parse out the digits to the left and to the right of the decimal at render time from the floating point value in the RUSH_FRAME variable, eg: if ( $ENV{RUSH_FRAME} =3D~ /(\d+)\.(\d+)/ ) { my $frame =3D $1; my $node =3D $2; ..etc.. } This way /one/ job can render all the nodes on separate = processors, with clear logs and simple control without having dozens of = separate jobs that have to be managed separately. --=20 Greg Ercolano, erco@(email surpressed) Seriss Corporation Rush Render Queue, http://seriss.com/rush/ Tel: (Tel# suppressed)ext.23 Fax: (Tel# suppressed) Cel: (Tel# suppressed) *** ***************************************************** *** Message #2183 ***************************************************** *** ***************************************************** Subject: Re: Submit Confirmation From: Greg Ercolano Date: Thu, 05 Jan 2012 17:48:44 -0500 On 01/04/12 17:49, Mr. Daniel Browne wrote: > [posted to rush.general] > > Hi Greg, Happy New Year. > > Before the holidays I had made a modification to our Nuke submit to = > split off each write node into a separate job. The downside is that if = > you have a lot of write nodes, you have to click through a whole lot of = > "Ok" messages after hitting the submit button. Is there an easy way to = > suppress this, or do I have to customize the RushSubmit() routine inside = > .common.pl? There are a few things I'd suggest. The newer .common.pl files have an option to turn off the OK messages. If you email me your .common.pl file, I can send back the file with the newer code for RushSubmit() that you can use to disable those dialogs. Also: if you have a *lot* of write nodes, I'd suggest trying to consolidate them into a single job by using rush's ability to use floating point frame numbers. For instance, if you have a range of 5 frames specified as: frames 1-5 ..which gets you: 0001 0002 0003 0004 0005 ..but let's say you have 3 write nodes (A, B and C). Then you can use rush's floating point frames so that the number to the left of the decimal is used as the frame number, and the number to the right of the decimal is used as the write node. So for instance: frames 1.1 1.2 1.3 2.1 2.2 2.3 3.1 3.2 3.3 4.1 4.2 4.3 5.1 5.2 5.3 ..would get you: 0001.1 -- renders frame 1, node 'A' 0001.2 -- renders frame 1, node 'B' 0001.3 -- renders frame 1, node 'C' 0002.1 -- renders frame 2, node 'A' 0002.2 -- renders frame 2, node 'B' : etc : 0004.3 -- renders frame 4, node 'C' 0005.1 -- renders frame 5, node 'A' 0005.2 -- renders frame 5, node 'B' 0005.3 -- renders frame 5, node 'C' You can have as many nodes as you want, since you can control how many digits in the frame specification. So if you had 100 nodes, you might have: frames 1.001 1.002 .. 1.099 1.100 2.001 2.002 .. 2.099 2.100 3.001 ..etc.. ..which would get you: 0001.001 -- renders frame 1, node #1 0001.002 -- renders frame 1, node #2 : etc : 0001.099 -- renders frame 1, node 99 0001.100 -- renders frame 1, node 100 0002.001 -- renders frame 1, node 1 : etc : It's pretty easy to have the script parse out the digits to the left and to the right of the decimal at render time from the floating point value in the RUSH_FRAME variable, eg: if ( $ENV{RUSH_FRAME} =~ /(\d+)\.(\d+)/ ) { my $frame = $1; my $node = $2; ..etc.. } This way /one/ job can render all the nodes on separate processors, with clear logs and simple control without having dozens of separate jobs that have to be managed separately. -- Greg Ercolano, erco@(email surpressed) Seriss Corporation Rush Render Queue, http://seriss.com/rush/ Tel: (Tel# suppressed)ext.23 Fax: (Tel# suppressed) Cel: (Tel# suppressed) *** ***************************************************** *** Message #2182 ***************************************************** *** ***************************************************** Subject: Submit Confirmation From: "Mr. Daniel Browne" Date: Wed, 04 Jan 2012 20:49:14 -0500 Hi Greg, Happy New Year. Before the holidays I had made a modification to our Nuke submit to = split off each write node into a separate job. The downside is that if = you have a lot of write nodes, you have to click through a whole lot of = "Ok" messages after hitting the submit button. Is there an easy way to = suppress this, or do I have to customize the RushSubmit() routine inside = .common.pl? -Dan= *** ***************************************************** *** Message #2181 ***************************************************** *** ***************************************************** Subject: [Q+A] FIFO scheduling in rush? From: Greg Ercolano Date: Thu, 29 Dec 2011 23:59:43 -0500 > We'd like to render our jobs in the order we submitted them. > Is there a way to do this in rush? > > Currently our jobs run all together at the same time and use priorities. > While we see that might be useful, we prefer running jobs in the order > they're submitted, one at a time. Yes, rush supports FIFO, it's been an option for several years, and is stable in 102.42a9c. The default is "round robin", but it can be changed if you change the following line in your rush.conf file: sched rr ..to instead be: sched fifo ..and jobs of equal priority will run in FIFO order, i.e. the order jobs were submitted. Here's some time lapse screenshots of irush showing how jobs run with Round Robin vs. FIFO scheduling, whose graphics should make clear how the two schemes operate: http://www.seriss.com/rush-current/rush/rush-priority.html#FIFO%20Scheduling There's also the rush.conf docs for this flag here: http://www.seriss.com/rush-current/rush/rush-conf.html#Sched *** ***************************************************** *** Message #2180 ***************************************************** *** ***************************************************** Subject: Re: nuke renders with central tools From: Greg Ercolano Date: Wed, 21 Dec 2011 13:21:49 -0500 On 12/21/11 08:44, Gary Jaeger wrote: > So i changed that, but it looks like there is another reference to an explicit path in the nuke submit (in our script line 373-375): > > my $command = ($G::ismac ? "/Applications/Nuke6.3v5/Nuke6.3v5.app/Nuke6.3v5": "nuke") . " $opt{NukeFlags} ". > "-x $opt{NukeScript} ". > "$opt{ScriptArgs} $opt{sfrm},$opt{efrm}"; > Yes, you have the OLD submit script there, so you need to change that first line to just 'nuke', eg: my $command = "nuke $opt{NukeFlags} ". "-x $opt{NukeScript} ". "$opt{ScriptArgs} $opt{sfrm},$opt{efrm}"; -- Greg Ercolano, erco@(email surpressed) Seriss Corporation Rush Render Queue, http://seriss.com/rush/ Tel: (Tel# suppressed)ext.23 Fax: (Tel# suppressed) Cel: (Tel# suppressed) *** ***************************************************** *** Message #2179 ***************************************************** *** ***************************************************** Subject: Re: nuke renders with central tools From: Gary Jaeger Date: Wed, 21 Dec 2011 11:44:18 -0500 --002354332986f82d2204b49ce462 Content-Type: text/plain; charset=ISO-8859-1 So i changed that, but it looks like there is another reference to an explicit path in the nuke submit (in our script line 373-375): my $command = ($G::ismac ? "/Applications/Nuke6.3v5/Nuke6.3v5.app/Nuke6.3v5": "nuke") . " $opt{NukeFlags} ". "-x $opt{NukeScript} ". "$opt{ScriptArgs} $opt{sfrm},$opt{efrm}"; On Tue, Dec 20, 2011 at 10:06 AM, Greg Ercolano wrote: > ..which you'd want to change to read: > > elsif ( $G::ismac ) > { > ### MAC > $ENV{PATH} = "/usr/bin:$ENV{PATH}"; > $ENV{NUKECMD} = "nuke"; > } > > ..and you should be good. > -- Gary Jaeger // Core Studio 249 Princeton Avenue Half Moon Bay, CA 94019 (Tel# suppressed) http://corestudio.com --002354332986f82d2204b49ce462 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable So i changed that, but it looks like there is another reference to an expli= cit path in the nuke submit (in our script =A0line 373-375):

=
=A0 =A0 my $command =3D ($G::ismac ? "/Applications/Nuke6.3v= 5/Nuke6.3v5.app/Nuke6.3v5": "nuke") . " $opt{NukeFlags}= ".
&qu= ot;-x $opt{NukeScript} ".
"$opt{ScriptArgs} $opt{sfrm},$opt{efr= m}";


On Tue, Dec 20, 20= 11 at 10:06 AM, Greg Ercolano <erco@(email surpressed)> wrote:
=A0=A0=A0 ..which you'd want = to change to read:

elsif ( $G::ismac )
{
=A0=A0=A0 ### MAC
=A0=A0=A0 $ENV{PATH}=A0=A0=A0 =3D "/usr/= bin:$ENV{PATH}";
=A0=A0=A0 $ENV{NUKECMD} =3D "nuke= ";
}

=A0=A0=A0 ..and you should be good.



--
Gary Jaeger // Core Studio
249 Princeton Avenue
Half Moon= Bay, CA 94019
650 728 7060
http://corestudio.com

--002354332986f82d2204b49ce462-- *** ***************************************************** *** Message #2178 ***************************************************** *** ***************************************************** Subject: Re: nuke renders with central tools From: Greg Ercolano Date: Tue, 20 Dec 2011 17:06:49 -0500 On 12/20/11 06:46, Gary Jaeger wrote: >> Whatever you do, DON'T do the seemingly obvious thing >> by making /usr/bin/nuke a symlink to the script on your NFS >> server.... > > OK, but what we *could* do is make a Mac alias to that file > and put it in the Dock, so freelancers and employees could > simply go to the dock as usual and click or double click. > I'll have to decide which route to go. Yes, feel free to do whatever you want on the desktop to make that run. Though I'm not sure what you describe is the right way to make a script 'clickable'. I believe the right Mac voodoo for making a Mac app bundle for a script of any kind, in this case your /usr/bin/nuke script would be as follows: mkdir -m 755 nuke.app mkdir -m 755 nuke.app/Contents mkdir -m 755 nuke.app/Contents/MacOS mkdir -m 755 nuke.app/Contents/Resources echo APPLnone > nuke.app/Contents/PkgInfo cp /usr/local/rush/examples/Applications/submit-maya.app/Contents/Resources/icon.icns nuke.app/Contents/ cat /usr/local/rush/examples/Applications/submit-maya.app/Contents/Info.plist | sed 's/submit-maya/nuke/' > nuke.app/Contents/Info.plist chmod 644 nuke.app/Contents/PkgInfo chmod 644 nuke.app/Contents/icon.icns chmod 644 nuke.app/Contents/Info.plist cp /usr/bin/nuke nuke.app/Contents/MacOS/nuke chmod 755 nuke.app/Contents/MacOS/nuke What this does is creates a Mac 'Bundle' around a copy of your bash script (or for that matter, any script; bash, csh, python, perl..) Once you have that 'nuke.app', you can move it to wherever you want, and make Mac aliases to it. There should be no terminal popping open. Just don't change the name of 'nuke.app' to something else; that breaks the app bundle. (the names of files in the dir and Info.plist would have to change accordingly) There are other ways to do this, but this is the way I use because it's 'scriptable'.. you can use this same technique to make a .app bundle out of any script (just be sure to change all instances of 'nuke' in the above to be the name of your script; if the name of the bundle is foo.app, then you have to make sure 'foo' is the name of the file in the MacOS dir, and 'foo' is in the Info.plist file, etc.) This is how Apple likes to make 'clickable' things. You can change the icon.icns file in the above to something more apropos for Nuke; you can probably use nuke's own icon.icns file for instance. (you may need to restart the finder to see the icon change). Anyway, sorry for the complexity of the above, but that's how you play ball on Macs to make executables 'clickable'. *** ***************************************************** *** Message #2177 ***************************************************** *** ***************************************************** Subject: Re: Render Log Paths From: Greg Ercolano Date: Tue, 20 Dec 2011 15:45:40 -0500 This is a multi-part message in MIME format. --------------090802070008000702050804 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable On 12/19/11 18:59, Mr. Daniel Browne wrote: > [posted to rush.general] > > I noticed that when the logs flag is set to "keep last" that the =3D > jobstartcommand log doesn't show up in iRush. That would be a bug if so. But hrm, I can't seem to replicate with 102.42a9c (which I think is t= he release you'd be running; it came out in 2009 and has been the 'current' rele= ase since). Make sure in irush you have *Edit -> Preferences -> Show Job Command = Logs* enabled, as without that, the message won't show up in irush. Here's what I tried to verify rush is working correctly using the '%s= ' in the logdir and with the logflags set to 'keeplast': -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= ----------------------------------------- $ *rush -version* Rush 102.42a9c, Build Date: 11/23/09,13:58 (R) Rush is a registered trademark (C) Copyright 2009 Seriss Corporation. All rights reserved. $ *rush -submit << EOF* ? frames 1-5 ? jobstartcommand printenv ? *logflags keeplast* ? *logdir /net/tmp/logs/%s* ? cpus tahoe=3D1 ? command printenv ? EOF setenv RUSH_JOBID tahoe.5 $ *rush -lf tahoe.5 -x* STAT FRAME TRY HOSTNAME PID JOBID START = ELAPSED NOTES Done 0001 1 tahoe 31020 tahoe.5 12/20,12:34:40 = 00:00:01 Done 0002 1 tahoe 31023 tahoe.5 12/20,12:34:42 = 00:00:01 Done 0003 1 tahoe 31026 tahoe.5 12/20,12:34:44 = 00:00:02 Done 0004 1 tahoe 31030 tahoe.5 12/20,12:34:46 = 00:00:01 Done 0005 1 tahoe 31034 tahoe.5 12/20,12:34:48 = 00:00:01 **** LOGFILE: tahoe.5 jobstartcommand.log* $ *rush -log jobstartcommand.log tahoe.5* ### ### ta.5: */net/tmp/logs/tahoe.5/jobstartcommand.log* ### --------------- Rush 102.42a9c -------------- -- Host: tahoe -- Pid: 31017 [..] -- Tmpdir: /var/tmp/.RUSH_TMP.22 -- LogFile: */net/tmp/logs/tahoe.5/jobstartcommand.log* -- Command: printenv [..] -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= ----------------------------------------- This should be showing up in irush too, assuming that Edit -> Prefere= nces flag is enabled. If you still see a problem, run these three commands from the termina= l: *rush -version* *rush -lf -x JOBID* *rush -ljf JOBID* ..where JOBID is the jobid of the job in question, and I can perhaps = tell from that. --=20 Greg Ercolano, erco@(email surpressed) Seriss Corporation Rush Render Queue, http://seriss.com/rush/ Tel: (Tel# suppressed)ext.23 Fax: (Tel# suppressed) Cel: (Tel# suppressed) --------------090802070008000702050804 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit On 12/19/11 18:59, Mr. Daniel Browne wrote:
[posted to rush.general]

I noticed that when the logs flag is set to "keep last" that the =
jobstartcommand log doesn't show up in iRush.
    That would be a bug if so.

    But hrm, I can't seem to replicate with 102.42a9c (which I think is the release
    you'd be running; it came out in 2009 and has been the 'current' release since).

    Make sure in irush you have Edit -> Preferences -> Show Job Command Logs
    enabled, as without that, the message won't show up in irush.

    Here's what I tried to verify rush is working correctly using the '%s' in the logdir
    and with the logflags set to 'keeplast':



$ rush -version
Rush 102.42a9c, Build Date: 11/23/09,13:58
(R) Rush is a registered trademark
(C) Copyright 2009 Seriss Corporation. All rights reserved.

$ rush -submit << EOF
? frames          1-5
? jobstartcommand printenv
? logflags        keeplast
? logdir          /net/tmp/logs/%s
? cpus            tahoe=1
? command         printenv
? EOF
setenv RUSH_JOBID tahoe.5

$ rush -lf tahoe.5 -x
STAT FRAME   TRY HOSTNAME        PID     JOBID            START          ELAPSED  NOTES
Done 0001    1   tahoe           31020   tahoe.5          12/20,12:34:40 00:00:01
Done 0002    1   tahoe           31023   tahoe.5          12/20,12:34:42 00:00:01
Done 0003    1   tahoe           31026   tahoe.5          12/20,12:34:44 00:00:02
Done 0004    1   tahoe           31030   tahoe.5          12/20,12:34:46 00:00:01
Done 0005    1   tahoe           31034   tahoe.5          12/20,12:34:48 00:00:01
*** LOGFILE: tahoe.5       jobstartcommand.log

$ rush -log jobstartcommand.log tahoe.5
###
### ta.5: /net/tmp/logs/tahoe.5/jobstartcommand.log
###
--------------- Rush 102.42a9c --------------
--       Host: tahoe
--        Pid: 31017
[..]
--     Tmpdir: /var/tmp/.RUSH_TMP.22
--    LogFile: /net/tmp/logs/tahoe.5/jobstartcommand.log
--    Command: printenv
[..]




    This should be showing up in irush too, assuming that Edit -> Preferences flag
    is enabled.

    If you still see a problem, run these three commands from the terminal:

        rush -version
        rush -lf -x JOBID
        rush -ljf JOBID

    ..where JOBID is the jobid of the job in question, and I can perhaps tell from that.
-- 
Greg Ercolano, erco@(email surpressed)
Seriss Corporation
Rush Render Queue, http://seriss.com/rush/
Tel: (Tel# suppressed)ext.23
Fax: (Tel# suppressed)
Cel: (Tel# suppressed)

--------------090802070008000702050804-- *** ***************************************************** *** Message #2176 ***************************************************** *** ***************************************************** Subject: Re: nuke renders with central tools From: Greg Ercolano Date: Tue, 20 Dec 2011 13:06:12 -0500 This is a multi-part message in MIME format. --------------050700070003090204020001 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable On 12/20/11 09:16, Gary Jaeger wrote: > OK so assuming we go the /usr/bin route what do I need to modify in our= rush-submit? Is it just this line: > > $ENV{PATH} =3D "/Applications/Nuke6.3v5/Nuke6.3v5.app:$ENV{PATH}"; > > so would that end up being: > > $ENV{PATH} =3D "nuke"; > > ? I would set the PATH to just include /usr/bin in the MAC section, and make sure the nuke command the script runs is just 'nuke' (and no= t eg. 'Nuke5.1v5') So to be specific: _*NEW SUBMIT NUKE SCRIPTS*_ If you have a 'new' submit-nuke script, the MAC section will look lik= e this: elsif ( $G::ismac ) { ### MAC $ENV{PATH} =3D "/Applications/Nuke5.1v5/Nuke5.1v5.app/Contents/Mac= OS:$ENV{PATH}"; $ENV{NUKECMD} =3D "Nuke5.1v5"; } ..which you'd want to change to read: elsif ( $G::ismac ) { ### MAC $ENV{PATH} =3D "/usr/bin:$ENV{PATH}"; $ENV{NUKECMD} =3D "nuke"; } ..and you should be good. -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= ----------------------------------------- _*OLD SUBMIT NUKE SCRIPTS*_ If you have an 'old' submit-nuke script, the MAC section will look li= ke this: elsif ( $G::ismac ) { ### MAC # $ENV{PATH} =3D "/Applications/D2Software/nuke4/bin:$ENV{PATH}"; } ..notably the NUKECMD variable setting will be absent. In that case, *_uncomment_* the PATH setting (remove the leading '#')= and change it to read: elsif ( $G::ismac ) { ### MAC $ENV{PATH} =3D "/usr/bin:$ENV{PATH}"; } ..then search for the string "NUKE COMMAND", which should take you to= a section that reads: # NUKE COMMAND # Frame range must be last. # my $command =3D "*nuke* $opt{NukeFlags} ". "-x $opt{NukeScript} ". "$opt{ScriptArgs} $opt{sfrm},$opt{efrm}"; ..make sure that *nuke *is in there, and not *Nuke5.1v5* or some othe= r command name. With that, the submit-nuke script should just run your 'nuke' which w= ill be in /usr/bin. If you have a mix of Macs and other machines, then you might need to = put a little logic in there to use "nuke" if it's a Mac, or whatever else for the = other platforms. (This is why the newer submit-nuke scripts let you set the command na= me on a per-platform basis) --=20 Greg Ercolano, erco@(email surpressed) Seriss Corporation Rush Render Queue, http://seriss.com/rush/ Tel: (Tel# suppressed)ext.23 Fax: (Tel# suppressed) Cel: (Tel# suppressed) --------------050700070003090204020001 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit On 12/20/11 09:16, Gary Jaeger wrote:
OK so assuming we go the /usr/bin route what do I need to modify in our rush-submit? Is it just this line:

   $ENV{PATH} = "/Applications/Nuke6.3v5/Nuke6.3v5.app:$ENV{PATH}";

so would that end up being:

   $ENV{PATH} = "nuke";

?
    I would set the PATH to just include /usr/bin in the MAC section,
    and make sure the nuke command the script runs is just 'nuke' (and not eg. 'Nuke5.1v5')

    So to be specific:

NEW SUBMIT NUKE SCRIPTS

    If you have a 'new' submit-nuke script, the MAC section will look like this:

elsif ( $G::ismac )
{
    ### MAC
    $ENV{PATH}    = "/Applications/Nuke5.1v5/Nuke5.1v5.app/Contents/MacOS:$ENV{PATH}";
    $ENV{NUKECMD} = "Nuke5.1v5";
}

    ..which you'd want to change to read:

elsif ( $G::ismac )
{
    ### MAC
    $ENV{PATH}    = "/usr/bin:$ENV{PATH}";
    $ENV{NUKECMD} = "nuke";
}

    ..and you should be good.




OLD SUBMIT NUKE SCRIPTS

    If you have an 'old' submit-nuke script, the MAC section will look like this:

elsif ( $G::ismac )
{
    ### MAC
#   $ENV{PATH} = "/Applications/D2Software/nuke4/bin:$ENV{PATH}";
}

    ..notably the NUKECMD variable setting will be absent.
    In that case, uncomment the PATH setting (remove the leading '#') and change it to read:

elsif ( $G::ismac )
{
    ### MAC
    $ENV{PATH} = "/usr/bin:$ENV{PATH}";
}

    ..then search for the string "NUKE COMMAND", which should take you to a section that reads:

    # NUKE COMMAND
    #     Frame range must be last.
    #
    my $command = "nuke $opt{NukeFlags} ".
                        "-x $opt{NukeScript} ".
                        "$opt{ScriptArgs} $opt{sfrm},$opt{efrm}";

    ..make sure that nuke is in there, and not Nuke5.1v5 or some other command name.
    With that, the submit-nuke script should just run your 'nuke' which will be in /usr/bin.

    If you have a mix of Macs and other machines, then you might need to put a little
    logic in there to use "nuke" if it's a Mac, or whatever else for the other platforms.
    (This is why the newer submit-nuke scripts let you set the command name on a
    per-platform basis)

-- 
Greg Ercolano, erco@(email surpressed)
Seriss Corporation
Rush Render Queue, http://seriss.com/rush/
Tel: (Tel# suppressed)ext.23
Fax: (Tel# suppressed)
Cel: (Tel# suppressed)

--------------050700070003090204020001-- *** ***************************************************** *** Message #2175 ***************************************************** *** ***************************************************** Subject: Re: nuke renders with central tools From: Greg Ercolano Date: Tue, 20 Dec 2011 12:38:07 -0500 On 12/20/11 09:01, Gary Jaeger wrote: > Sorry for my lack of terminal fu, but when I do this method, I get a permission denied. but if I do sudo it works: > > gfx11:~ gfx11$ nuke > -bash: /usr/bin/nuke: Permission denied chmod 755 /usr/bin/nuke -- Greg Ercolano, erco@(email surpressed) Seriss Corporation Rush Render Queue, http://seriss.com/rush/ Tel: (Tel# suppressed)ext.23 Fax: (Tel# suppressed) Cel: (Tel# suppressed) *** ***************************************************** *** Message #2174 ***************************************************** *** ***************************************************** Subject: Re: nuke renders with central tools From: Gary Jaeger Date: Tue, 20 Dec 2011 12:16:20 -0500 --002354332986b9871e04b4893923 Content-Type: text/plain; charset=ISO-8859-1 OK so assuming we go the /usr/bin route what do I need to modify in our rush-submit? Is it just this line: $ENV{PATH} = "/Applications/Nuke6.3v5/Nuke6.3v5.app:$ENV{PATH}"; so would that end up being: $ENV{PATH} = "nuke"; ? On Tue, Dec 20, 2011 at 5:22 AM, Greg Ercolano wrote: > The submit-nuke script doesn't read .bashrc files > because it's a perl script. > -- Gary Jaeger // Core Studio 249 Princeton Avenue Half Moon Bay, CA 94019 (Tel# suppressed) http://corestudio.com --002354332986b9871e04b4893923 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable OK so assuming we go the /usr/bin route what do I need to modify in our rus= h-submit? Is it just this line:

=A0 =A0$ENV{PATH} = =3D "/Applications/Nuke6.3v5/Nuke6.3v5.app:$ENV{PATH}";

so would that end up being:

=A0 = =A0$ENV{PATH} =3D "nuke";

?
<= br>

--

--002354332986b9871e04b4893923-- *** ***************************************************** *** Message #2173 ***************************************************** *** ***************************************************** Subject: Re: nuke renders with central tools From: Gary Jaeger Date: Tue, 20 Dec 2011 12:01:31 -0500 --20cf3074d904b97d4704b48904e2 Content-Type: text/plain; charset=ISO-8859-1 Sorry for my lack of terminal fu, but when I do this method, I get a permission denied. but if I do sudo it works: gfx11:~ gfx11$ nuke -bash: /usr/bin/nuke: Permission denied gfx11:~ gfx11$ sudo nuke Password: Nuke 6.3v6, 64 bit, built Nov 30 2011. Copyright (c) 2011 The Foundry Visionmongers Ltd. All Rights Reserved. tips on how I get it so it just executes? Thanks Greg! On Tue, Dec 20, 2011 at 5:22 AM, Greg Ercolano wrote: > Perhaps what you want to do to solve the issue for 'everyone' > is to make a nuke 'wrapper' script called /usr/bin/nuke > that sets the environment you want before running nuke. > -- Gary Jaeger // Core Studio 249 Princeton Avenue Half Moon Bay, CA 94019 (Tel# suppressed) http://corestudio.com --20cf3074d904b97d4704b48904e2 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Sorry for my lack of terminal fu, but when I do this method, I get a permis= sion denied. but if I do sudo it works:

gfx11:~ gfx= 11$ nuke
-bash: /usr/bin/nuke: Permission denied
gfx11:= ~ gfx11$ sudo nuke
Password:
Nuke 6.3v6, 64 bit, built Nov 30 2011.
C= opyright (c) 2011 The Foundry Visionmongers Ltd. =A0All Rights Reserved.

tips on how I get it so it just executes? Thanks Gre= g!


On Tue, Dec 20, 2011 at 5:22 = AM, Greg Ercolano <= erco@(email surpressed)> wrote:
Perhaps what you want to do to solve the issue for 'ev= eryone'
=A0 =A0 =A0 =A0is to make a nuke 'wrapper' script called /usr/bin/= nuke
=A0 =A0 =A0 =A0that sets the environment you want before running nuke.



--
Gary Jaeger // Core Studio
249 Princeton Avenue
Half Moon= Bay, CA 94019
650 728 7060
http://corestudio.com

--20cf3074d904b97d4704b48904e2-- *** ***************************************************** *** Message #2172 ***************************************************** *** ***************************************************** Subject: Re: nuke renders with central tools From: Gary Jaeger Date: Tue, 20 Dec 2011 09:46:04 -0500 --Apple-Mail-1-340292097 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii Great answer as usual Greg. Thanks.=20 I think the /usr/bin idea is the best. One of my overall goals is to cut = down on the manual work to do every time I want to deploy a plug-in or a = new version of nuke comes out. Doing the /usr/bin thing would take care = of that as well as ensuring I don't also have to modify my nuke submit = every time. On Dec 20, 2011, at 5:22 AM, Greg Ercolano wrote: > Perhaps what you want to do to solve the issue for 'everyone' > is to make a nuke 'wrapper' script called /usr/bin/nuke > that sets the enviro... >=20 > Or, have the above script simply run a script on your server > so that you can centrally manage the variable settings, and not > have to update all /usr/bin/nuke scripts whenever you want to > make a small change to the script. eg: >=20 > #!/bin/sh > exec /Volumes/somewhere/nuke "$@" # <-- quotes important around $@ >=20 > Whatever you do, DON'T do the seemingly obvious thing > by making /usr/bin/nuke a symlink to the script on your NFS > server.... OK, but what we *could* do is make a Mac alias to that file and put it = in the Dock, so freelancers and employees could simply go to the dock as = usual and click or double click. I'll have to decide which route to go.=20= As I side note, I do notice *slightly* different behavior on quit = between the two methods. If I just type nuke in the terminal, then hit = Cmd-Q in the resulting GUI the terminal returns to normal. If I double = click an alias to that file, then hit Cmd-Q in the resulting GUI the = terminal, the terminal stays with=20 [Process completed] displayed and never gets back to the prompt (is that the right term?) = anyway sort of interesting.=20 Thanks again Greg. Gary Jaeger // Core Studio 249 Princeton Avenue Half Moon Bay, CA 94019 (Tel# suppressed) http://corestudio.com=09 --Apple-Mail-1-340292097 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=us-ascii Great = answer as usual Greg. Thanks. 

I think the = /usr/bin idea is the best. One of my overall goals is to cut down on the = manual work to do every time I want to deploy a plug-in or a new version = of nuke comes out. Doing the /usr/bin thing would take care of that as = well as ensuring I don't also have to modify my nuke submit every = time.

On Dec 20, 2011, at 5:22 AM, Greg Ercolano = wrote:

Perhaps = what you want to do to solve the issue for 'everyone'
is to = make a nuke 'wrapper' script called /usr/bin/nuke
that sets = the enviro...

Or, have the above script simply run a script on your = server
= so that you can centrally manage the variable settings, and = not
= have to update all /usr/bin/nuke scripts whenever you want = to
= make a small change to the script. eg:

#!/bin/sh
exec = /Volumes/somewhere/nuke "$@" # <-- quotes important around = $@

= Whatever you do, DON'T do the seemingly obvious thing
by making = /usr/bin/nuke a symlink to the script on your NFS
= server....

OK, but what we = *could* do is make a Mac alias to that file and put it in the Dock, so = freelancers and employees could simply go to the dock as usual and click = or double click. I'll have to decide which route to = go. 

As I side note, I do notice = *slightly* different behavior on quit between the two methods. If I just = type nuke in the terminal, then hit Cmd-Q in the resulting GUI the = terminal returns to normal. If I double click an alias to that file, = then hit Cmd-Q in the resulting GUI the terminal, the terminal stays = with 

[Process = completed]

displayed and never gets back to the = prompt (is that the right term?) anyway sort of = interesting. 

Thanks again = Greg.

Gary Jaeger // Core = Studio
249 Princeton = Avenue
Half Moon Bay, = CA 94019
650 728 = 7060

= --Apple-Mail-1-340292097-- *** ***************************************************** *** Message #2171 ***************************************************** *** ***************************************************** Subject: Re: nuke renders with central tools From: Greg Ercolano Date: Tue, 20 Dec 2011 08:22:03 -0500 On 12/19/11 22:58, Gary Jaeger wrote: > So we moved our plug-ins, gizmos scripts etc to a central server. > We did this by setting our NUKE_PATH with an environment.plist in > ~.MacOSX/environment.plist Rush isn't going to look at that file, because only MacOS can parse it. For the rush perl render scripts to see the setting, add this variable setting to the top of the submit-nuke.pl file in with the 'MAC' settings, eg: elsif ( $G::ismac ) { ### MAC $ENV{PATH} = "/Applications/Nuke6.3v5/Nuke6.3v5.app:$ENV{PATH}"; # CHANGE THIS $ENV{NUKECMD} = "Nuke6.3v5"; # CHANGE THIS $ENV{NUKE_PATH} = "/Volumes/nuke_tools"; # ADD THIS $ENV{OFX_PLUGIN_PATH} = "/Volumes/nuke_tools/OFX"; # ADD THIS $ENV{RLM_LICENSE} = "5053\@corefileserver"; # ADD THIS } This will ensure that when the submit-nuke script runs, it runs THAT version of nuke with THAT plugin path, etc. and will for sure do what you want at render time, .plist and /etc/profile and ~/.bashrc files be damned. ;) > I also noticed that I got the same errors when I tried to ssh > into a workstations and run a render. I think there's a more centralized plist file that affects all users, but Apple keeps moving stuff around each release so I can never keep track of it. more recently they started making these plist files *binary format* for some fool reason. Don't get me started on how Apple has not only ignored the wisdom of Unix philosophy: "use text files for everything", "avoid binary files and databases", /etc/passwd, /etc/fstab.. but has often walked in the completely opposite direction: use binary formatted xml, use databases and daemons to replace /etc/passwd and /etc/fstab, etc.. (*shakes head*) I think in the newer versions of OSX this might now be part of the launchctl/launchd stuff now, not sure. > On the nuke list it was suggested I try setting a .bash_profile > instead of the .plist method. While this worked for the terminal > (and presumably ssh though I forgot to try it) it still doesn't > work for rush, The submit-nuke script doesn't read .bashrc files because it's a perl script. The right place to make such changes for Rush is in the submit-nuke script, so that (for instance) different submit-nuke scripts can run different versions of nuke, and/or different renders without getting crosstalk between all the environment/PATH configs. You could try having the perl script parse the plist file, but that's kinda a nutty route to go. Perhaps what you want to do to solve the issue for 'everyone' is to make a nuke 'wrapper' script called /usr/bin/nuke that sets the environment you want before running nuke. Then you can have rush renders AND users just invoke 'nuke'. A *simple* example: #!/bin/sh # Force these environment settings export PATH="/Applications/Nuke6.3v5/Nuke6.3v5.app:$PATH" export NUKE_PATH="/Volumes/nuke_tools" export OFX_PLUGIN_PATH="/Volumes/nuke_tools/OFX" export RLM_LICENSE="5053@corefileserver" # Run nuke with args that were passed to this script exec Nuke6.3v5 "$@" # <-- quotes important around $@ Then you can have both users and rush run 'nuke' instead, so that everyone gets the same version of nuke, with plugins and license variables set to what's needed. You might want to add logic to that script to check to see if these variables are already set, and optionally include those settings in addition to your own, so that user's scripts can add other plugin dirs besides the ones you supply. Or, have the above script simply run a script on your server so that you can centrally manage the variable settings, and not have to update all /usr/bin/nuke scripts whenever you want to make a small change to the script. eg: #!/bin/sh exec /Volumes/somewhere/nuke "$@" # <-- quotes important around $@ Whatever you do, DON'T do the seemingly obvious thing by making /usr/bin/nuke a symlink to the script on your NFS server. Symlinks to NFS servers in /usr/bin will cause *all* logins to hang if the NFS server is acting up, so you won't be able to login as root to fix things. (whenever the root login walks the /usr/bin dir, it'll hit that NFS link and freeze up) > and if I want to also be able to launch nuke by double clicking > the icon (which I do) it would mean keeping both .bash_profile > AND environment.plist files. This seems wrong to me. I can't advise, because IIRC the default profile for bash in /etc/profile overwrites the PATH with a static string, blowing away anything MacOS/plist files might have provided, eg: $ more /etc/profile # System-wide .profile for sh(1) PATH="/bin:/sbin:/usr/bin:/usr/sbin" <-- BLOWS AWAY PREVIOUS PATH SETTINGS (!) export PATH [..] It's because of that PATH line in /etc/profile that any PATH settings in a .plist will be overridden whenever a sh(1) login is started. You could try jamming your settings in there, but then you'll affect all users (including root), and again, putting anything into root's path that includes NFS or remote drives is a Bad Idea. > Could this be something about users? i.e. rush running as something other than the current user? There's many things at play here; ssh+sh is probably not looking at .plist files all all, whereas a GUI environment with terminal+sh(1) will (with the above exception for PATH) Anyway, it gets messy fast. If you want to reign in control over all this, you might try the above 'nuke wrapper' technique, where you jam a script in /usr/bin called 'nuke' that forces the variables the way you want, and have everything (nuke, ssh, terminal, icons) run that. To get an icon to run a bash script involves making a .app wrapper for it, fodder for a whole other message thread. > Anyway, so I'm asking here. How do Mac facilities keep a central > install of all their 3rd party tools and init.py etc for both > workstations and renderfarms? I'll let folks respond, but it's tricky if you try to use global plist and bashrc files because these aren't always going to be in effect; perl scripts don't read bashrc files, bash/ssh doesn't read plists, and lord knows when these plist files get sourced and by what. My advice is to change as little global stuff as possible, esp when it comes to centrally managed programs, so that you don't get the whole OS addicted to your NFS servers. -- Greg Ercolano, erco@(email surpressed) Seriss Corporation Rush Render Queue, http://seriss.com/rush/ Tel: (Tel# suppressed)ext.23 Fax: (Tel# suppressed) Cel: (Tel# suppressed) *** ***************************************************** *** Message #2170 ***************************************************** *** ***************************************************** Subject: nuke renders with central tools From: Gary Jaeger Date: Tue, 20 Dec 2011 01:58:08 -0500 --Apple-Mail-1-312216497 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii So we moved our plug-ins, gizmos scripts etc to a central server. We did = this by setting our NUKE_PATH with an environment.plist in=20 ~.MacOSX/environment.plist That file looks like this, for instance: NUKE_PATH /Volumes/nuke_tools OFX_PLUGIN_PATH //Volumes/nuke_tools/OFX RLM_LICENSE 5053@corefileserver While this has been working great for the workstations, when I tried to = use rush I got errors about missing plugins and gizmos and the render = fails. The render machines are set up the same as the workstations with = the same environment.plist. In fact nuke wouldn't recognize the plug-ins = if I launched nuke from the terminal i.e.=20 gfx00$ /Applications/Nuke6.3v5/Nuke6.3v5.app/Nuke6.3v5=20 So something isn't right. I also noticed that I got the same errors when = I tried to ssh into a workstations and run a render. On the nuke list it = was suggested I try setting a .bash_profile instead of the .plist = method. While this worked for the terminal (and presumably ssh though I = forgot to try it) it still doesn't work for rush, and if I want to also = be able to launch nuke by double clicking the icon (which I do) it would = mean keeping both .bash_profile AND environment.plist files. This seems = wrong to me. Could this be something about users? i.e. rush running as something = other than the current user? Can I just put either the .plist or the = bash file in a place that makes it appear for ALL users? Do I need to = put some kind of "export NUKE_PATH..." in my rush nuke submit scripts? Anyway, so I'm asking here. How do Mac facilities keep a central install = of all their 3rd party tools and init.py etc for both workstations and = renderfarms?=20 Gary Jaeger // Core Studio 249 Princeton Avenue Half Moon Bay, CA 94019 (Tel# suppressed) http://corestudio.com=09 --Apple-Mail-1-312216497 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=us-ascii
<!DOCTYPE plist PUBLIC "-//Apple = Computer//DTD PLIST 1.0//
<plist = version=3D"1.0">
<dict>
= <key>NUKE_PATH</key>
= <string>/Volumes/nuke_tools</string>
= <key>OFX_PLUGIN_PATH</key>
= <string>//Volumes/nuke_tools/OFX</string>
= <key>RLM_LICENSE</key>
= <string>5053@corefileserver</string>
</dic= t>
</plist>

While = this has been working great for the workstations, when I tried to use = rush I got errors about missing plugins and gizmos and the render fails. = The render machines are set up the same as the workstations with the = same environment.plist. In fact nuke wouldn't recognize the plug-ins if = I launched nuke from the terminal = i.e. 

gfx00$ = /Applications/Nuke6.3v5/Nuke6.3v5.app/Nuke6.3v5 

=
So something isn't right. I also noticed that I got the same = errors when I tried to ssh into a workstations and run a render. On the = nuke list it was suggested I try setting a .bash_profile instead of the = .plist method. While this worked for the terminal (and presumably ssh = though I forgot to try it) it still doesn't work for rush, and if I want = to also be able to launch nuke by double clicking the icon (which I do) = it would mean keeping both .bash_profile AND environment.plist files. = This seems wrong to me.

Could this be something = about users? i.e. rush running as something other than the current user? = Can I just put either the .plist or the bash file in a place that makes = it appear for ALL users? Do I need to put some kind of "export = NUKE_PATH..." in my rush nuke submit = scripts?

Anyway, so I'm asking here. How do Mac = facilities keep a central install of all their 3rd party tools and = init.py etc for both workstations and renderfarms? 


Gary Jaeger // Core = Studio
249 Princeton = Avenue
Half Moon Bay, = CA 94019
650 728 = 7060

= --Apple-Mail-1-312216497-- *** ***************************************************** *** Message #2169 ***************************************************** *** ***************************************************** Subject: Re: Render Log Paths From: "Mr. Daniel Browne" Date: Mon, 19 Dec 2011 21:59:45 -0500 I noticed that when the logs flag is set to "keep last" that the = jobstartcommand log doesn't show up in iRush. On Dec 19, 2011, at 3:57 PM, Greg Ercolano wrote: [posted to rush.general] On 12/19/11 14:19, Mr. Daniel Browne wrote: > I can't seem to get either $ENV{RUSH_LOGFILE} or $ENV{RUSH_LOGDIR} (or = =3D > variations) to resolve in the jobstartcommand script in Perl. Hmm, try having your perl jobstartcommand script run the = following: system("printenv|sort"); # Unix system("set"); # Windows ..and then paste the contents of your jobstartcommand.log file = here, including the headers at the top. --=20 Greg Ercolano, erco@(email surpressed) Seriss Corporation Rush Render Queue, http://seriss.com/rush/ Tel: (Tel# suppressed)ext.23 Fax: (Tel# suppressed) Cel: (Tel# suppressed) *** ***************************************************** *** Message #2168 ***************************************************** *** ***************************************************** Subject: Re: Render Log Paths From: Greg Ercolano Date: Mon, 19 Dec 2011 20:31:37 -0500 On 12/19/11 16:36, Mr. Daniel Browne wrote: > Though I am a little puzzled why part > of the output appears at the top of the log file. Probably stdout buffering in perl. Try adding: $|=1; ..at the top of your perl script to disable stdout buffering. This should help output be synchronized with stderr and system(). -- Greg Ercolano, erco@(email surpressed) Seriss Corporation Rush Render Queue, http://seriss.com/rush/ Tel: (Tel# suppressed)ext.23 Fax: (Tel# suppressed) Cel: (Tel# suppressed) *** ***************************************************** *** Message #2167 ***************************************************** *** ***************************************************** Subject: Re: Render Log Paths From: "Mr. Daniel Browne" Date: Mon, 19 Dec 2011 19:36:49 -0500 I'm not sure syntactically what I was doing wrong, but = $ENV{RUSH_LOGFILE} is working now. Though I am a little puzzled why part = of the output appears at the top of the log file. On Dec 19, 2011, at 3:57 PM, Greg Ercolano wrote: system("printenv|sort"); *** ***************************************************** *** Message #2166 ***************************************************** *** ***************************************************** Subject: Re: Render Log Paths From: Greg Ercolano Date: Mon, 19 Dec 2011 18:57:06 -0500 On 12/19/11 14:19, Mr. Daniel Browne wrote: > I can't seem to get either $ENV{RUSH_LOGFILE} or $ENV{RUSH_LOGDIR} (or = > variations) to resolve in the jobstartcommand script in Perl. Hmm, try having your perl jobstartcommand script run the following: system("printenv|sort"); # Unix system("set"); # Windows ..and then paste the contents of your jobstartcommand.log file here, including the headers at the top. -- Greg Ercolano, erco@(email surpressed) Seriss Corporation Rush Render Queue, http://seriss.com/rush/ Tel: (Tel# suppressed)ext.23 Fax: (Tel# suppressed) Cel: (Tel# suppressed) *** ***************************************************** *** Message #2165 ***************************************************** *** ***************************************************** Subject: Re: Render Log Paths From: "Mr. Daniel Browne" Date: Mon, 19 Dec 2011 17:19:32 -0500 I can't seem to get either $ENV{RUSH_LOGFILE} or $ENV{RUSH_LOGDIR} (or = variations) to resolve in the jobstartcommand script in Perl. On Dec 16, 2011, at 7:46 PM, Greg Ercolano wrote: The jobstartcommand will be passed the logdir (via the RUSH_LOGFILE and/or RUSH_LOGDIR env variables) and the command's own output will in fact be sent to the jobstartcommand.log in the logdir. *** ***************************************************** *** Message #2164 ***************************************************** *** ***************************************************** Subject: Re: Render Log Paths From: "Mr. Daniel Browne" Date: Fri, 16 Dec 2011 23:58:46 -0500 Ah of course, I forgot about jobstartcommand; I'm losing my mind. Thanks Greg. On Dec 16, 2011, at 7:46 PM, Greg Ercolano wrote: [posted to rush.general] On 12/16/11 18:31, Mr. Daniel Browne wrote: > I've come upon a stumbling block; making a safety copy that the render = is run from. Though you can add the %s wildcard into the log directory = name for the JobID, that would mean having to make the copy into the job = sub-directory in the Render portion of the script which could lead to = race conditions. Is there another mechanism I can use? Is it possible = for me to have submit get passed back to itself so that the completion = happens and then the copy can take place in a single action before any = batches start? If you want to copy data into the job's log directory for storage, sounds like what the jobstartcommand is for. That's the cleanest way, I'd think. 1. JOBSTARTCOMMAND ------------------ The jobstartcommand runs just before the first frame starts. The jobstartcommand will be passed the logdir (via the RUSH_LOGFILE and/or RUSH_LOGDIR env variables) and the command's own output will in fact be sent to the jobstartcommand.log in the logdir. You can pass arguments to the script to tell it e.g where the source material is, or you can point to a file that is a manifest of data. The jobstartcommand can be the submit script itself, passed a special argument to tell it what to do. For instance I often have the submit scripts understand these arguments: -submit -- handle submitting the job -render -- handle rendering a frame -jobstartcommand -- handle the jobstartcommand (if any) -jobdonecommand -- handle the jobdonecommand (if any) [..etc..] This way the submit script can set up the render queue to use itself to do all the different operations. 2. PAUSE APPROACH ----------------- The other way would be to again submit the job in either the paused state, or with 0 cpus assigned to it, so you can then do your work, then kick the job into gear once you're done. Or an even different route: don't use the jobid at all.. 3. CREATE A UNIQUE DIRNAME -------------------------- Use some combo of time of day, username, hostname, and even the pid of the script itself if need be. That way you always end up with a unique pathname for the job, so you don't end up with any races by depending on attributes of the job. (ie. define your own attributes, then use those) * * * If you still have trouble, give me the whole picture of what you're doing, as choosing the best route to take often involves knowing the big picture first. --=20 Greg Ercolano, erco@(email surpressed) Seriss Corporation Rush Render Queue, http://seriss.com/rush/ Tel: (Tel# suppressed)ext.23 Fax: (Tel# suppressed) Cel: (Tel# suppressed) *** ***************************************************** *** Message #2163 ***************************************************** *** ***************************************************** Subject: Re: Render Log Paths From: Greg Ercolano Date: Fri, 16 Dec 2011 22:46:21 -0500 On 12/16/11 18:31, Mr. Daniel Browne wrote: > I've come upon a stumbling block; making a safety copy that the render is run from. Though you can add the %s wildcard into the log directory name for the JobID, that would mean having to make the copy into the job sub-directory in the Render portion of the script which could lead to race conditions. Is there another mechanism I can use? Is it possible for me to have submit get passed back to itself so that the completion happens and then the copy can take place in a single action before any batches start? If you want to copy data into the job's log directory for storage, sounds like what the jobstartcommand is for. That's the cleanest way, I'd think. 1. JOBSTARTCOMMAND ------------------ The jobstartcommand runs just before the first frame starts. The jobstartcommand will be passed the logdir (via the RUSH_LOGFILE and/or RUSH_LOGDIR env variables) and the command's own output will in fact be sent to the jobstartcommand.log in the logdir. You can pass arguments to the script to tell it e.g where the source material is, or you can point to a file that is a manifest of data. The jobstartcommand can be the submit script itself, passed a special argument to tell it what to do. For instance I often have the submit scripts understand these arguments: -submit -- handle submitting the job -render -- handle rendering a frame -jobstartcommand -- handle the jobstartcommand (if any) -jobdonecommand -- handle the jobdonecommand (if any) [..etc..] This way the submit script can set up the render queue to use itself to do all the different operations. 2. PAUSE APPROACH ----------------- The other way would be to again submit the job in either the paused state, or with 0 cpus assigned to it, so you can then do your work, then kick the job into gear once you're done. Or an even different route: don't use the jobid at all.. 3. CREATE A UNIQUE DIRNAME -------------------------- Use some combo of time of day, username, hostname, and even the pid of the script itself if need be. That way you always end up with a unique pathname for the job, so you don't end up with any races by depending on attributes of the job. (ie. define your own attributes, then use those) * * * If you still have trouble, give me the whole picture of what you're doing, as choosing the best route to take often involves knowing the big picture first. -- Greg Ercolano, erco@(email surpressed) Seriss Corporation Rush Render Queue, http://seriss.com/rush/ Tel: (Tel# suppressed)ext.23 Fax: (Tel# suppressed) Cel: (Tel# suppressed) *** ***************************************************** *** Message #2162 ***************************************************** *** ***************************************************** Subject: Re: Render Log Paths From: "Mr. Daniel Browne" Date: Fri, 16 Dec 2011 21:31:44 -0500 --Apple-Mail-13-37014439 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="us-ascii" I've come upon a stumbling block; making a safety copy that the render = is run from. Though you can add the %s wildcard into the log directory = name for the JobID, that would mean having to make the copy into the job = sub-directory in the Render portion of the script which could lead to = race conditions. Is there another mechanism I can use? Is it possible = for me to have submit get passed back to itself so that the completion = happens and then the copy can take place in a single action before any = batches start? On Dec 16, 2011, at 1:49 PM, Greg Ercolano wrote: On 12/16/11 13:33, Greg Ercolano wrote: >=20 > On 12/16/11 13:13, Mr. Daniel Browne wrote: >> Is it possible to establish the log directory within the render = portion =3D >> of a rush script? I'm trying to set up for Nuke jobs to generate =3D >> separate log dirs per job ID, but of course the job ID isn't assigned = =3D >> until you run the "rush -submit" command. I wasn't sure if the log =3D >> directory had to be settled on before you issue a submit, so I = thought =3D >> I'd ask. [Hmm, thought I'd add some clarification to that last post..] [added text in green, and emphasis in red --erco] Hi Dan, There's two common ways of doing this: 1) Add the '%s' suffix to the "logdir" pathname during = submit; the '%s' will be replaced with the jobid on submit, and rush will create the resulting dir for you, and will use it as the logdir for the job. Details here: = http://www.seriss.com/rush-current/rush/rush-submit-cmds.html#LogDir - OR - 2) Submit the job in the /pause/ state, get the jobid, create the dir with the jobid returned, assign the = job the new logdir path you want with "rush -logdir" and then unpause the job with "rush -cont" #1 is probably the best approach, and certainly easiest. So for instance: rush -submit << EOF .. logdir /some/path/%s .. EOF ..assuming the directory "/some/path/" exists, rush will expand "%s" into the jobid, and then runs a mkdir() on the expanded = pathname to create the subdir before the job actually starts running, and = uses that as the final log directory for the job. So for instance, using the above example, if the jobid turns out to be 'tahoe.34', then the resulting logdir pathname will be "/some/path/tahoe.34", and rush will create that as a directory and use it as the logdir for the job. The logic for this %s expansion and mkdir() is all in the rush core, not the submit scripts. So what you can do is in the MAIN_Submit() section of the = script, you can modify the code that determines the "LogDir" default (which is normally to create it based on the scene filename) and use your own path with the '%s' added instead. Warning: jobids are recycled, so they aren't guaranteed to be unique once a job is dumped. The other way to do it would be to submit the job in the paused state, eg: rush -submit << EOF .. state pause .. EOF .. that get your jobid after it submits while the job is paused, do your directory creation logic with the jobid in the submit = script, change the logdir with 'rush -logdir /new/path/whatever' with = the jobid in it, then use 'rush -cont ' to kick the job running. I think the %s technique is easier though.. but depends on what you want in your directory logic. --=20 Greg Ercolano, erco@(email surpressed) Seriss Corporation Rush Render Queue, http://seriss.com/rush/ Tel: (Tel# suppressed)ext.23 Fax: (Tel# suppressed) Cel: (Tel# suppressed) --Apple-Mail-13-37014439 Content-Transfer-Encoding: 7bit Content-Type: text/html; charset="us-ascii" I've come upon a stumbling block; making a safety copy that the render is run from. Though you can add the %s wildcard into the log directory name for the JobID, that would mean having to make the copy into the job sub-directory in the Render portion of the script which could lead to race conditions. Is there another mechanism I can use? Is it possible for me to have submit get passed back to itself so that the completion happens and then the copy can take place in a single action before any batches start?


On Dec 16, 2011, at 1:49 PM, Greg Ercolano wrote:

On 12/16/11 13:33, Greg Ercolano wrote:
On 12/16/11 13:13, Mr. Daniel Browne wrote:
Is it possible to establish the log directory within the render portion =
of a rush script? I'm trying to set up for Nuke jobs to generate =
separate log dirs per job ID, but of course the job ID isn't assigned =
until you run the "rush -submit" command. I wasn't sure if the log =
directory had to be settled on before you issue a submit, so I thought =
I'd ask.

    [Hmm, thought I'd add some clarification to that last post..]
    [added text in green, and emphasis in red --erco]

Hi Dan,

	There's two common ways of doing this:

		1) Add the '%s' suffix to the "logdir" pathname during submit;
		   the '%s' will be replaced with the jobid on submit,
		   and rush will create the resulting dir for you, and
		   will use it as the logdir for the job. Details here:
		   http://www.seriss.com/rush-current/rush/rush-submit-cmds.html#LogDir

	    - OR -

		2) Submit the job in the /pause/ state, get the jobid,
		   create the dir with the jobid returned, assign the job
		   the new logdir path you want with "rush -logdir"
		   and then unpause the job with "rush -cont"

	#1 is probably the best approach, and certainly easiest.
	So for instance:

rush -submit << EOF
..
logdir  /some/path/%s
..
EOF

	..assuming the directory "/some/path/" exists, rush will expand
	"%s" into the jobid, and then runs a mkdir() on the expanded pathname
        to create the subdir before the job actually starts running, and uses
	that as the final log directory for the job.

	So for instance, using the above example, if the jobid turns out
	to be 'tahoe.34', then the resulting logdir pathname will be
	"/some/path/tahoe.34", and rush will create that as a directory
	and use it as the logdir for the job.

	The logic for this %s expansion and mkdir() is all in the
	rush core, not the submit scripts.

	So what you can do is in the MAIN_Submit() section of the script,
	you can modify the code that determines the "LogDir" default
	(which is normally to create it based on the scene filename)
	and use your own path with the '%s' added instead.

	Warning: jobids are recycled, so they aren't guaranteed to
	be unique once a job is dumped.

	The other way to do it would be to submit the job in the paused
	state, eg:

rush -submit << EOF
..
state pause
..
EOF

	.. that get your jobid after it submits while the job is paused,
	 do your directory creation logic with the jobid in the submit script,
	change the logdir with 'rush -logdir /new/path/whatever' with the jobid
	in it, then use 'rush -cont <JOBID>' to kick the job running.

	I think the %s technique is easier though.. but depends on what
	you want in your directory logic.
-- 
Greg Ercolano, erco@(email surpressed)
Seriss Corporation
Rush Render Queue, http://seriss.com/rush/
Tel: (Tel# suppressed)ext.23
Fax: (Tel# suppressed)
Cel: (Tel# suppressed)


--Apple-Mail-13-37014439-- *** ***************************************************** *** Message #2161 ***************************************************** *** ***************************************************** Subject: Re: Render Log Paths From: "Mr. Daniel Browne" Date: Fri, 16 Dec 2011 17:16:44 -0500 --Apple-Mail-12-21726532 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="us-ascii" How festive :). Thanks Greg. On Dec 16, 2011, at 1:49 PM, Greg Ercolano wrote: On 12/16/11 13:33, Greg Ercolano wrote: > > On 12/16/11 13:13, Mr. Daniel Browne wrote: >> Is it possible to establish the log directory within the render portion = >> of a rush script? I'm trying to set up for Nuke jobs to generate = >> separate log dirs per job ID, but of course the job ID isn't assigned = >> until you run the "rush -submit" command. I wasn't sure if the log = >> directory had to be settled on before you issue a submit, so I thought = >> I'd ask. [Hmm, thought I'd add some clarification to that last post..] [added text in green, and emphasis in red --erco] Hi Dan, There's two common ways of doing this: 1) Add the '%s' suffix to the "logdir" pathname during submit; the '%s' will be replaced with the jobid on submit, and rush will create the resulting dir for you, and will use it as the logdir for the job. Details here: http://www.seriss.com/rush-current/rush/rush-submit-cmds.html#LogDir - OR - 2) Submit the job in the /pause/ state, get the jobid, create the dir with the jobid returned, assign the job the new logdir path you want with "rush -logdir" and then unpause the job with "rush -cont" #1 is probably the best approach, and certainly easiest. So for instance: rush -submit << EOF .. logdir /some/path/%s .. EOF ..assuming the directory "/some/path/" exists, rush will expand "%s" into the jobid, and then runs a mkdir() on the expanded pathname to create the subdir before the job actually starts running, and uses that as the final log directory for the job. So for instance, using the above example, if the jobid turns out to be 'tahoe.34', then the resulting logdir pathname will be "/some/path/tahoe.34", and rush will create that as a directory and use it as the logdir for the job. The logic for this %s expansion and mkdir() is all in the rush core, not the submit scripts. So what you can do is in the MAIN_Submit() section of the script, you can modify the code that determines the "LogDir" default (which is normally to create it based on the scene filename) and use your own path with the '%s' added instead. Warning: jobids are recycled, so they aren't guaranteed to be unique once a job is dumped. The other way to do it would be to submit the job in the paused state, eg: rush -submit << EOF .. state pause .. EOF .. that get your jobid after it submits while the job is paused, do your directory creation logic with the jobid in the submit script, change the logdir with 'rush -logdir /new/path/whatever' with the jobid in it, then use 'rush -cont ' to kick the job running. I think the %s technique is easier though.. but depends on what you want in your directory logic. -- Greg Ercolano, erco@(email surpressed) Seriss Corporation Rush Render Queue, http://seriss.com/rush/ Tel: (Tel# suppressed)ext.23 Fax: (Tel# suppressed) Cel: (Tel# suppressed) --Apple-Mail-12-21726532 Content-Transfer-Encoding: 7bit Content-Type: text/html; charset="us-ascii" How festive :). Thanks Greg.


On Dec 16, 2011, at 1:49 PM, Greg Ercolano wrote:

On 12/16/11 13:33, Greg Ercolano wrote:
On 12/16/11 13:13, Mr. Daniel Browne wrote:
Is it possible to establish the log directory within the render portion =
of a rush script? I'm trying to set up for Nuke jobs to generate =
separate log dirs per job ID, but of course the job ID isn't assigned =
until you run the "rush -submit" command. I wasn't sure if the log =
directory had to be settled on before you issue a submit, so I thought =
I'd ask.

    [Hmm, thought I'd add some clarification to that last post..]
    [added text in green, and emphasis in red --erco]

Hi Dan,

	There's two common ways of doing this:

		1) Add the '%s' suffix to the "logdir" pathname during submit;
		   the '%s' will be replaced with the jobid on submit,
		   and rush will create the resulting dir for you, and
		   will use it as the logdir for the job. Details here:
		   http://www.seriss.com/rush-current/rush/rush-submit-cmds.html#LogDir

	    - OR -

		2) Submit the job in the /pause/ state, get the jobid,
		   create the dir with the jobid returned, assign the job
		   the new logdir path you want with "rush -logdir"
		   and then unpause the job with "rush -cont"

	#1 is probably the best approach, and certainly easiest.
	So for instance:

rush -submit << EOF
..
logdir  /some/path/%s
..
EOF

	..assuming the directory "/some/path/" exists, rush will expand
	"%s" into the jobid, and then runs a mkdir() on the expanded pathname
        to create the subdir before the job actually starts running, and uses
	that as the final log directory for the job.

	So for instance, using the above example, if the jobid turns out
	to be 'tahoe.34', then the resulting logdir pathname will be
	"/some/path/tahoe.34", and rush will create that as a directory
	and use it as the logdir for the job.

	The logic for this %s expansion and mkdir() is all in the
	rush core, not the submit scripts.

	So what you can do is in the MAIN_Submit() section of the script,
	you can modify the code that determines the "LogDir" default
	(which is normally to create it based on the scene filename)
	and use your own path with the '%s' added instead.

	Warning: jobids are recycled, so they aren't guaranteed to
	be unique once a job is dumped.

	The other way to do it would be to submit the job in the paused
	state, eg:

rush -submit << EOF
..
state pause
..
EOF

	.. that get your jobid after it submits while the job is paused,
	 do your directory creation logic with the jobid in the submit script,
	change the logdir with 'rush -logdir /new/path/whatever' with the jobid
	in it, then use 'rush -cont <JOBID>' to kick the job running.

	I think the %s technique is easier though.. but depends on what
	you want in your directory logic.
-- 
Greg Ercolano, erco@(email surpressed)
Seriss Corporation
Rush Render Queue, http://seriss.com/rush/
Tel: (Tel# suppressed)ext.23
Fax: (Tel# suppressed)
Cel: (Tel# suppressed)


--Apple-Mail-12-21726532-- *** ***************************************************** *** Message #2160 ***************************************************** *** ***************************************************** Subject: Re: Render Log Paths From: Greg Ercolano Date: Fri, 16 Dec 2011 16:49:55 -0500 This is a multi-part message in MIME format. --------------050002030408040206030108 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit On 12/16/11 13:33, Greg Ercolano wrote: > On 12/16/11 13:13, Mr. Daniel Browne wrote: >> Is it possible to establish the log directory within the render portion = >> of a rush script? I'm trying to set up for Nuke jobs to generate = >> separate log dirs per job ID, but of course the job ID isn't assigned = >> until you run the "rush -submit" command. I wasn't sure if the log = >> directory had to be settled on before you issue a submit, so I thought = >> I'd ask. */ [Hmm, thought I'd add some clarification to that last post..] [added text in green, and emphasis in red --erco] /* Hi Dan, There's two common ways of doing this: 1) Add the '%s' suffix to the "logdir" pathname during submit; the '%s' will be replaced with the jobid on submit, and rush will create the resulting dir for you, and will use it as the logdir for the job. Details here: http://www.seriss.com/rush-current/rush/rush-submit-cmds.html#LogDir - OR - 2) Submit the job in the /pause/ state, get the jobid, create the dir with the jobid returned, assign the job the new logdir path you want with "rush -logdir" and then unpause the job with "rush -cont" #1 is probably the best approach, and certainly easiest. So for instance: rush -submit << EOF .. logdir /some/path/%s .. EOF ..assuming the directory "/some/path/" exists, rush will expand "%s" into the jobid, and then runs a mkdir() on the expanded pathname to create the subdir before the job actually starts running, and uses that as the final log directory for the job. So for instance, using the above example, if the jobid turns out to be 'tahoe.34', then the resulting logdir pathname will be "/some/path/tahoe.34", and rush will create that as a directory and use it as the logdir for the job. The logic for this %s expansion and mkdir() is all in the rush core, not the submit scripts. So what you can do is in the MAIN_Submit() section of the script, you can modify the code that determines the "LogDir" default (which is normally to create it based on the scene filename) and use your own path with the '%s' added instead. Warning: jobids are recycled, so they aren't guaranteed to be unique once a job is dumped. The other way to do it would be to submit the job in the paused state, eg: rush -submit << EOF .. state pause .. EOF .. that get your jobid after it submits while the job is paused, do your directory creation logic with the jobid in the submit script, change the logdir with 'rush -logdir /new/path/whatever' with the jobid in it, then use 'rush -cont ' to kick the job running. I think the %s technique is easier though.. but depends on what you want in your directory logic. -- Greg Ercolano, erco@(email surpressed) Seriss Corporation Rush Render Queue, http://seriss.com/rush/ Tel: (Tel# suppressed)ext.23 Fax: (Tel# suppressed) Cel: (Tel# suppressed) --------------050002030408040206030108 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit On 12/16/11 13:33, Greg Ercolano wrote:
On 12/16/11 13:13, Mr. Daniel Browne wrote:
Is it possible to establish the log directory within the render portion =
of a rush script? I'm trying to set up for Nuke jobs to generate =
separate log dirs per job ID, but of course the job ID isn't assigned =
until you run the "rush -submit" command. I wasn't sure if the log =
directory had to be settled on before you issue a submit, so I thought =
I'd ask.

    [Hmm, thought I'd add some clarification to that last post..]
    [added text in green, and emphasis in red --erco]

Hi Dan,

	There's two common ways of doing this:

		1) Add the '%s' suffix to the "logdir" pathname during submit;
		   the '%s' will be replaced with the jobid on submit,
		   and rush will create the resulting dir for you, and
		   will use it as the logdir for the job. Details here:
		   http://www.seriss.com/rush-current/rush/rush-submit-cmds.html#LogDir

	    - OR -

		2) Submit the job in the /pause/ state, get the jobid,
		   create the dir with the jobid returned, assign the job
		   the new logdir path you want with "rush -logdir"
		   and then unpause the job with "rush -cont"

	#1 is probably the best approach, and certainly easiest.
	So for instance:

rush -submit << EOF
..
logdir  /some/path/%s
..
EOF

	..assuming the directory "/some/path/" exists, rush will expand
	"%s" into the jobid, and then runs a mkdir() on the expanded pathname
        to create the subdir before the job actually starts running, and uses
	that as the final log directory for the job.

	So for instance, using the above example, if the jobid turns out
	to be 'tahoe.34', then the resulting logdir pathname will be
	"/some/path/tahoe.34", and rush will create that as a directory
	and use it as the logdir for the job.

	The logic for this %s expansion and mkdir() is all in the
	rush core, not the submit scripts.

	So what you can do is in the MAIN_Submit() section of the script,
	you can modify the code that determines the "LogDir" default
	(which is normally to create it based on the scene filename)
	and use your own path with the '%s' added instead.

	Warning: jobids are recycled, so they aren't guaranteed to
	be unique once a job is dumped.

	The other way to do it would be to submit the job in the paused
	state, eg:

rush -submit << EOF
..
state pause
..
EOF

	.. that get your jobid after it submits while the job is paused,
	 do your directory creation logic with the jobid in the submit script,
	change the logdir with 'rush -logdir /new/path/whatever' with the jobid
	in it, then use 'rush -cont <JOBID>' to kick the job running.

	I think the %s technique is easier though.. but depends on what
	you want in your directory logic.
-- 
Greg Ercolano, erco@(email surpressed)
Seriss Corporation
Rush Render Queue, http://seriss.com/rush/
Tel: (Tel# suppressed)ext.23
Fax: (Tel# suppressed)
Cel: (Tel# suppressed)

--------------050002030408040206030108-- *** ***************************************************** *** Message #2159 ***************************************************** *** ***************************************************** Subject: Re: Render Log Paths From: Greg Ercolano Date: Fri, 16 Dec 2011 16:33:20 -0500 On 12/16/11 13:13, Mr. Daniel Browne wrote: > Is it possible to establish the log directory within the render portion = > of a rush script? I'm trying to set up for Nuke jobs to generate = > separate log dirs per job ID, but of course the job ID isn't assigned = > until you run the "rush -submit" command. I wasn't sure if the log = > directory had to be settled on before you issue a submit, so I thought = > I'd ask. Hi Dan, There's two common ways of doing this: 1) Use the '%s' suffix on the "logdir" command during submit, and that will be expanded to be the jobid on submit, and rush will create the dir for you. Details here: http://www.seriss.com/rush-current/rush/rush-submit-cmds.html#LogDir - OR - 2) Submit the job in the /pause/ state, get the jobid, create the dir, assign the job the new logdir with "rush -logdir" and then unpause the job with "rush -cont" #1 is probably the best approach, and certainly easiest. So for instance: rush -submit << EOF .. logdir /some/path/%s .. EOF ..assuming the directory "/some/path/" exists, rush will expand the %s to the jobid, and then run a mkdir() command to create the subdir before the job actually starts running. The logic for this %s expansion and mkdir() is all in the rush core, not the submit scripts. So what you can do is in the MAIN_Submit() section of the script, you can modify the code that determines the "LogDir" default (which is normally to create it based on the scene filename) and use your own path with the '%s' added instead. Warning: jobids are recycled, so they aren't guaranteed to be unique once a job is dumped. The other way to do it would be to submit the job in the paused state, eg: rush -submit << EOF .. state pause .. EOF .. that get your jobid after it submits while the job is paused, do your directory creation logic with the jobid in the submit script, change the logdir with 'rush -logdir /new/path/whatever', then use 'rush -cont ' to kick the job running. I think the %s technique is easier though.. but depends on what you want in your directory logic. -- Greg Ercolano, erco@(email surpressed) Seriss Corporation Rush Render Queue, http://seriss.com/rush/ Tel: (Tel# suppressed)ext.23 Fax: (Tel# suppressed) Cel: (Tel# suppressed) *** ***************************************************** *** Message #2158 ***************************************************** *** ***************************************************** Subject: Render Log Paths From: "Mr. Daniel Browne" Date: Fri, 16 Dec 2011 16:13:27 -0500 Hi Greg, Is it possible to establish the log directory within the render portion = of a rush script? I'm trying to set up for Nuke jobs to generate = separate log dirs per job ID, but of course the job ID isn't assigned = until you run the "rush -submit" command. I wasn't sure if the log = directory had to be settled on before you issue a submit, so I thought = I'd ask. -Dan *** ***************************************************** *** Message #2157 ***************************************************** *** ***************************************************** Subject: Re: WaitFor question From: Greg Ercolano Date: Fri, 02 Dec 2011 20:12:40 -0500 On 12/02/11 16:16, Mr. Daniel Browne wrote: > Hi Greg, > > I was trying to help our editor alter the waitfor time on a large number > of dailies jobs, but the waitfor command in the terminal kept putting > the jobs into a run state: > > rush -fu seinfeld.165 -waitfor 22:00 > > The only way the job goes into waitfor correctly is if changing it from > iRush, and then only if you strip the date out of the waitfor field. > We're still running 102.42a9d Hi Dan, Hmm, irush is running the same command, so there really shouldn't be any difference I don't think. If a job is rendering, and you change it to 'waitfor 22:00' (ie. wait until 10pm tonight), it acts like 'pause': > new frames won't be started until 10pm > already running frames will continue to render (unless you use eg. 'rush -que run' to requeue them) Here's a test I just ran with 102.42a9d, and the results seem correct: $ rush -lj STATUS JOBID TITLE OWNER %DONE %FAIL BUSY ELAPSED REMARKS -------- ---------------- ------------------------- -------------- ----- ----- ---- ---------- -------- Run ta.1 TEST_WAITFOR erco %0 %0 1 00:00:02 $ rush -waitfor 22:00 -fu ta.1 waitfor 22:00: WaitFor Time=22:00,12/02/2011 $ rush -lj STATUS JOBID TITLE OWNER %DONE %FAIL BUSY ELAPSED REMARKS -------- ---------------- ------------------------- -------------- ----- ----- ---- ---------- -------- Wait ta.1 TEST_WAITFOR erco %0 %0 1 00:00:13 Wait for 22:00,12/02/2011 ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ You should immediately see the job enter the 'Wait' state (STATUS=Wait) after running the '-waitfor 22:00', but busy frames will still continue to run (BUSY=1) To also stop the rendering frames, you'd need to requeue them as a second step, with e.g. 'rush -que run ta.1 -fu' or similar. Then they too won't restart until 10pm. This all should be the expected behavior; let me know if you're seeing or expecting something else. -- Greg Ercolano, erco@(email surpressed) Seriss Corporation Rush Render Queue, http://seriss.com/rush/ Tel: (Tel# suppressed)ext.23 Fax: (Tel# suppressed) Cel: (Tel# suppressed) *** ***************************************************** *** Message #2156 ***************************************************** *** ***************************************************** Subject: WaitFor question From: "Mr. Daniel Browne" Date: Fri, 02 Dec 2011 19:16:27 -0500 Hi Greg, I was trying to help our editor alter the waitfor time on a large number = of dailies jobs, but the waitfor command in the terminal kept putting = the jobs into a run state: rush -fu seinfeld.165 -waitfor 22:00 The only way the job goes into waitfor correctly is if changing it from = iRush, and then only if you strip the date out of the waitfor field. = We're still running 102.42a9d= *** ***************************************************** *** Message #2155 ***************************************************** *** ***************************************************** Subject: Re: wildcard dump From: Stephan Kosinski Date: Tue, 29 Nov 2011 15:44:42 -0500 On 11/29/2011 10:04 AM, Greg Ercolano wrote: > os.system("echo rush -dump -fu " + jobid) Thank you Greg, that works great! -- ................ Stephan Kosinski *** ***************************************************** *** Message #2154 ***************************************************** *** ***************************************************** Subject: Re: wildcard dump From: Stephan Kosinski Date: Tue, 29 Nov 2011 15:44:38 -0500 On 11/29/2011 10:04 AM, Greg Ercolano wrote: > os.system("echo rush -dump -fu " + jobid) Thank you Greg, that works great! -- ................. Stephan Kosinski *** ***************************************************** *** Message #2153 ***************************************************** *** ***************************************************** Subject: Re: wildcard dump From: Greg Ercolano Date: Tue, 29 Nov 2011 13:04:43 -0500 On 11/28/11 19:05, Stephan Kosinski wrote: > Is there anyway to dump jobs base on the "Elapsed" wildcard? > Something like "rush -fu -dump all_the_job_older_than_300hours" > I know I can do that as "fu" in iRush but a command line would > allow a cron script to do the job for me every night. Yes, it's a one liner perl script to do that: rush -lj | perl -ne 'split(); if ($_[7] =~ /^(\d+):/) { $hours=$1; if ($hours > 300) { system("rush -dump -fu $_[1]"); }}' You can use 'rush -laj' instead of 'rush -lj' to hit the entire network if you want. If you want to /test/ the above (so that it doesn't actually dump anything), insert the word 'echo' followed by a space in front of 'rush -dump' command. This will print the dump commands instead of running them. eg. system("echo rush -dump.... If you don't like long one liners, make a script instead. Here's more or less the same thing in python, just to be different: -------------------------------------------------------- snip #!/usr/bin/python import os,sys,re cmd = "rush -lj" try: p = os.popen(cmd, "r") except (IOError, os.error), emsg: print >> sys.stderr, "%s: %s" % (cmd,emsg) sys.exit(1) while 1: line = p.readline() if not line: break fields = line.split() if len(fields) < 7: continue jobid = fields[1] elapsed = fields[7] try: hours = re.search("^(\d+):",elapsed).groups()[0] except: continue if int(hours) > 300: os.system("rush -dump -fu " + jobid) p.close() -------------------------------------------------------- snip Then you can invoke that from your crontab script. Again, replace the 'rush -lj' with 'rush -laj' to hit the whole network. And if you want to test it so that it only PRINTS the dump commands instead of actually running them, then do the same thing; insert the word 'echo ' in front of the 'rush -dump' command, eg: os.system("echo rush -dump -fu " + jobid) -- Greg Ercolano, erco@(email surpressed) Seriss Corporation Rush Render Queue, http://seriss.com/rush/ Tel: (Tel# suppressed)ext.23 Fax: (Tel# suppressed) Cel: (Tel# suppressed) *** ***************************************************** *** Message #2152 ***************************************************** *** ***************************************************** Subject: Re: wildcard dump From: Stephan Kosinski Date: Mon, 28 Nov 2011 22:05:32 -0500 Hello Greg, Most of the time users do not dump their older jobs. Is there anyway to dump jobs base on the "Elapsed" wildcard? Something like "rush -fu -dump all_the_job_older_than_300hours" I know I can do that as "fu" in iRush but a command line would allow a cron script to do the job for me every night. Thank you. On 04/29/2003 09:32 AM, Greg Ercolano wrote: > lewis kofsky wrote: >> is there a way to dump all jobs on a particular host? >> >> like rush -fu -dump apu.* >> >> it would be useful to dump reserve jobs without actually listing them. >> or really to make an unreservecpu command. > > Hi Lewis, > > It doesn't have that exactly, no. > > It /does/ let you dump all jobs on a host owned by a certain user, > eg: > > rush -dump erco@superior > > ..which dumps all jobs owned by erco on host 'superior'. > See the 'rush -dump' docs for more info: > http://seriss.com/rush-current/rush/rush-command-line-options.html#-dump > > > Also, you can: > > 1) Go in irush > 2) Type e.g. "superior.0" in the Jobid field > 3) Hit "Jobs" to list all the jobs on host 'superior' > 4) Select all the jobs > 5) Hit the red 'Dump' button at the left. > > ..which will dump all the jobs. > -- ................. Stephan Kosinski *** ***************************************************** *** Message #2151 ***************************************************** *** ***************************************************** Subject: [Q+A] Is there a way to have more than 12 hotkeys programmed in irush? From: Greg Ercolano Date: Thu, 17 Nov 2011 18:52:31 -0500 > We like making a lot of hotkey entries in Irush. > > Looks like we can define as many as we want and run them > by clicking on Hotkeys -> [name of our command]. > > But it seems for keyboard shortcuts, we're limited to the 12 function keys. > > Is there a way to define Ctrl- or Shift- > in irush, so we can make use of more keyboard shortcuts? Yes. Although the menu in the Hotkey -> Edit is limited to F1 - F12, you can manually hack the ~/.irushrc file to assign other key combos. If you look in your ~/.irushrc file, there's a large numeric value that represents the key code for the shortcut of each Hotkey command. For instance, in my .irushrc file I have the F2 key assigned to run a python script, eg: name My LAC Report command python /myserver/production/scripts/rush/my_lac_report.py fkey 65471 output Upper:AllCpus The 65471 in the above is irush key code for the F2 key. You can logically OR this value with values for the different Shift/Control/Alt/Meta keys, which are: Shift -- 0x10000 Ctrl -- 0x40000 Alt -- 0x80000 Meta -- 0x400000 So the Ctrl-F2 key would be 65471 | 0x40000. The following one-liner perl script tells us this is 327615: $ perl -e 'printf("%d\n",65471|0x40000);' 327615 <-- So if I *close* all the irush windows first (because it saves over the .irushrc on exit), then manually edit my .irushrc file and change the 65471 value to 327615, eg: name My LAC Report command python /myserver/production/scripts/rush/my_lac_report.py fkey 327615 output Upper:AllCpus ..Now when I open irush, I should see "Ctrl-F2" in the Hotkeys menu as the shortcut, and can hit Ctrl-F2 to invoke the command. Here's a quick table of the various shift key combos and their key codes: F1: 65470 Shift-F1: 131006 Ctrl-F1: 327614 Alt-F1: 589758 Meta-F1: 4259774 F2: 65471 Shift-F2: 131007 Ctrl-F2: 327615 Alt-F2: 589759 Meta-F2: 4259775 F3: 65472 Shift-F3: 131008 Ctrl-F3: 327616 Alt-F3: 589760 Meta-F3: 4259776 F4: 65473 Shift-F4: 131009 Ctrl-F4: 327617 Alt-F4: 589761 Meta-F4: 4259777 F5: 65474 Shift-F5: 131010 Ctrl-F5: 327618 Alt-F5: 589762 Meta-F5: 4259778 F6: 65475 Shift-F6: 131011 Ctrl-F6: 327619 Alt-F6: 589763 Meta-F6: 4259779 F7: 65476 Shift-F7: 131012 Ctrl-F7: 327620 Alt-F7: 589764 Meta-F7: 4259780 F8: 65477 Shift-F8: 131013 Ctrl-F8: 327621 Alt-F8: 589765 Meta-F8: 4259781 F9: 65478 Shift-F9: 131014 Ctrl-F9: 327622 Alt-F9: 589766 Meta-F9: 4259782 F10: 65479 Shift-F10: 131015 Ctrl-F10: 327623 Alt-F10: 589767 Meta-F10: 4259783 F11: 65480 Shift-F11: 131016 Ctrl-F11: 327624 Alt-F11: 589768 Meta-F11: 4259784 F12: 65481 Shift-F12: 131017 Ctrl-F12: 327625 Alt-F12: 589769 Meta-F12: 4259785 ..which was generated by the following one-liner perl script: perl -e '$k=65470; for($f=1;$f<=12;$f++,$k++) { printf("F$f: %d\tShift-F$f: %d\tCtrl-F$f:%d\tAlt-F$f:%d\tMeta-F$f:%d\n",$k,$k|0x10000,$k|0x40000,$k|0x80000,$k|0x400000); }' You can also get other combos like Ctrl-Shift-F1 the same way by OR'ing several masks with the raw F-key codes. Note that your window manager may use some of those codes for itself, so you won't be able to use those. These vary from one window manager to the other, so be wary. This same technique works for the master rush/etc/.irushrc file as well. AFAIK, such modifications should remain in effect, and works for all versions of Irush. Other key codes are possible as well for /all/ the keys on the keyboard. If that's desired, I can follow up with a more complete list. *** ***************************************************** *** Message #2150 ***************************************************** *** ***************************************************** Subject: Re: How to detect and handle Frame MaxTime failures From: Greg Ercolano Date: Fri, 04 Nov 2011 12:18:07 -0400 On 11/04/11 05:31, Lutz Paelike wrote: >> If I decide on vacationing in the sixth circle of hell, I can > follow up with the WIN32 equivalent code. > > Thanks for your example script. > If i use perl i will join you on your vacation ;) Ha, I guess I should have asked you if you were using python. > I will stick to python, these things are nicely encapsuled in the = > subprocess module. That's interesting; I guess you could do a non-blocking read on the subprocess.Popen() pipe, in which case that would probably work OK, because then your read loop wouldn't hang if the program stopped outputting data, so it can detect a timeout. If you can, post a simplified version of what you come up with. If I get a chance, I'll try to post some code that does what I describe above. I think the above technique could have been done in perl, but I didn't investigate non-blocking reads, as I knew waitpid() would work.. but that might be easier. It also gives you the option to parse the output of the render while it runs, so you can catch errors as they happen. Be aware when you 'kill' the render, the renderer MIGHT have started children, so you want to use a process group to be sure to kill not only the immediate child, but all its children too. For sure 'rush -fail $os.environ["RUSH_FRAME"]' would clean all this up for you, killing your own script as well as the render and any of its children. So if you're worried about using kill correctly, you could use that instead. (Just be sure that's the /last/ thing you do, as your script will probably be unceremoniously killed within the next fraction of a second. -- Greg Ercolano, erco@(email surpressed) Seriss Corporation Rush Render Queue, http://seriss.com/rush/ Tel: (Tel# suppressed)ext.23 Fax: (Tel# suppressed) Cel: (Tel# suppressed) *** ***************************************************** *** Message #2149 ***************************************************** *** ***************************************************** Subject: Re: How to detect and handle Frame MaxTime failures From: Lutz Paelike Date: Fri, 04 Nov 2011 08:31:12 -0400 Hey Greg, > I'd suggest instead of using MaxTime, to handle this > specific set of circumstances, you'd probably want to > instead put some logic in your script to handle the > more specific behavior you want. Ok i will change my script as you suggested. > If I decide on vacationing in the sixth circle of hell, I can = follow up with > the WIN32 equivalent code. Thanks for your example script. If i use perl i will join you on your vacation ;) I will stick to python, these things are nicely encapsuled in the = subprocess module. Cheers, Lutz Paelike Pipeline Supervisor D-Facto-Motion GmbH *** ***************************************************** *** Message #2148 ***************************************************** *** ***************************************************** Subject: Re: History From: Gary Jaeger Date: Fri, 04 Nov 2011 01:49:39 -0400 I know, that's what I meant about saving the forms. History would just save t= hem for you until you cleared your History. . . . . . . . . . . . . Gary Jaeger // Core Studio 249 Princeton Avenue Half Moon Bay, CA 94019 (Tel# suppressed) http://corestudio.com On Nov 3, 2011, at 4:32 PM, Greg Ercolano wrote: > [posted to rush.general] >=20 > On 11/03/11 16:10, Gary Jaeger wrote: >> It would be cool to have History functionality in the submit forms. Like a= browser, then we wouldn't have to save so many forms. We could just cmd-[ t= o bang through recent submits. >=20 > All the submit forms have a "Forms" menu at the top that lets > you save form settings, and give each one names. >=20 > You can then access them from the same menu, and it fills out > the whole form for you. >=20 > --=20 > Greg Ercolano, erco@(email surpressed) > Seriss Corporation > Rush Render Queue, http://seriss.com/rush/ > Tel: (Tel# suppressed)ext.23 > Fax: (Tel# suppressed) > Cel: (Tel# suppressed) >=20 *** ***************************************************** *** Message #2147 ***************************************************** *** ***************************************************** Subject: Re: How to detect and handle Frame MaxTime failures From: Greg Ercolano Date: Thu, 03 Nov 2011 20:54:18 -0400 On 11/03/11 15:58, Greg Ercolano wrote: > I'd suggest instead of using MaxTime, to handle this > specific set of circumstances, you'd probably want to > instead put some logic in your script to handle the > more specific behavior you want. > > For instance, I could see having your own "Render Max Time:" > field in the submit form that passes the value to the > render script, which in turn would take this value, > fork()s the render off as a child, and then monitors > the execution time of the render. > > This way the script can decide if it should kill the render, > and if so, implement its own logic to modify the job. As an actual perl coding example, here's a unix-specific technique that defines a function called 'RunCommandMaxTime()' that takes two arguments: the command to run, and the max # seconds. So calling it is as simple as: my $cmd = "yourcommand -arg1 -arg2 .."; # COMMAND TO RUN my $maxsecs = 800; # HOW MANY SECONDS IS 'TOO LONG'.. RunCommandMaxTime($cmd, $maxsecs); What follows is the definition of that function, which you can customize to include whatever post-kill logic you want (see '# ADD POST KILL LOGIC HERE'). You could add this function to the .common.pl file, so that any of the submit scripts could use it if you wanted. --- snip use POSIX; # RUN A COMMAND WITH A MAXIMUM TIME # Unix only. # $1 -- command to run # $2 -- maximum number of seconds command should take before being killed # sub RunCommandMaxTime($$) { my ($cmd, $maxtime) = @_; my $starttime = time(); my $pid = fork(); if ( $pid == -1 ) { # ERROR print "ERROR: fork() failed?! $!\n"; exit(1); } elsif ( $pid == 0 ) { # CHILD PROCESS POSIX::setsid(); exec($cmd); print "ERROR: exec() failed: $!\n"; exit(1); } else { # PARENT -- WATCH CHILD my $childpid = $pid; my $exitstatus = 0; my $killed = 0; while ( 1 ) { # WATCH THE CHILD PROCESS # See if it finished, and if so, reap. # If it didn't, see if maxtime expired. If so, kill and reap. # Otherwise, keep waiting.. # my $kid = POSIX::waitpid($childpid, WNOHANG); # see if child finished if ( $kid > 0 ) { $exitstatus = $?; last; } # finished? reap + break loop # SEE IF MAXTIME EXPIRED if ( ( time() - $starttime ) > $maxtime ) { print STDERR "\n--- MAXTIME EXPIRED! Killing child..\n"; kill(-9, $childpid); # -9 means kill *process group* $killed = 1; # Add logic here that you want to do if maxtime expired } sleep(1); } # CHILD FINISHED if ( $killed ) { print STDERR "--- Render took too long and was killed.\n"; exit(1); } print STDERR "Child finished in time. EXITCODE=" . ($exitstatus >> 8) . " (status=$exitstatus)\n"; } } --- snip PS. If you're instead using windows, you'd have to replace the fork()/exec() stuff with the WIN32 equivalent, which in activestate perl is possible with 'use Win32::Process;' and a combo of Win32::Process::Create() to background the child, and Wait() with some number of seconds, and GetExitCode(). There's actually an example of this in .common.pl To handle killing the process, I would stay away from any of the win32 stuff, and simply call 'rush -fail $ENV{RUSH_FRAME}' to cause the script to commit suicide "cleanly", as the logic for getting that right is tricky to do from a script. If I decide on vacationing in the sixth circle of hell, I can follow up with the WIN32 equivalent code. *** ***************************************************** *** Message #2146 ***************************************************** *** ***************************************************** Subject: Re: History From: Greg Ercolano Date: Thu, 03 Nov 2011 19:32:26 -0400 On 11/03/11 16:10, Gary Jaeger wrote: > It would be cool to have History functionality in the submit forms. Like a browser, then we wouldn't have to save so many forms. We could just cmd-[ to bang through recent submits. All the submit forms have a "Forms" menu at the top that lets you save form settings, and give each one names. You can then access them from the same menu, and it fills out the whole form for you. -- Greg Ercolano, erco@(email surpressed) Seriss Corporation Rush Render Queue, http://seriss.com/rush/ Tel: (Tel# suppressed)ext.23 Fax: (Tel# suppressed) Cel: (Tel# suppressed) *** ***************************************************** *** Message #2145 ***************************************************** *** ***************************************************** Subject: History From: Gary Jaeger Date: Thu, 03 Nov 2011 19:10:21 -0400 --0016e64dd4aa441f8a04b0dcb12c Content-Type: text/plain; charset=ISO-8859-1 It would be cool to have History functionality in the submit forms. Like a browser, then we wouldn't have to save so many forms. We could just cmd-[ to bang through recent submits. -- Gary Jaeger // Core Studio 249 Princeton Avenue Half Moon Bay, CA 94019 (Tel# suppressed) http://corestudio.com --0016e64dd4aa441f8a04b0dcb12c Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable It would be cool to have History functionality in the submit forms. Like a = browser, then we wouldn't have to save so many forms. We could just cmd= -[ to bang through recent submits.

--
Gary Jaeger // Core Studio
249 Princeton Avenue
Half Moon= Bay, CA 94019
650 728 7060
http://corestudio.com

--0016e64dd4aa441f8a04b0dcb12c-- *** ***************************************************** *** Message #2144 ***************************************************** *** ***************************************************** Subject: Re: How to detect and handle Frame MaxTime failures From: Greg Ercolano Date: Thu, 03 Nov 2011 18:58:03 -0400 On 11/03/11 11:03, Lutz Paelike wrote: > we have sometimes some MaxTime failures in our rush queue and the frames = > are then killed after MaxTime is reached. This is fine but still every = > frame is rendered, reaches MaxTime and is finally killed. > We would like to monitor a job and if more then, let's say 5 frames, > are killed due to Maxtime the job (or a series of jobs) should be = > skipped completely and no more frames should be renderered.=20 I'd suggest instead of using MaxTime, to handle this specific set of circumstances, you'd probably want to instead put some logic in your script to handle the more specific behavior you want. For instance, I could see having your own "Render Max Time:" field in the submit form that passes the value to the render script, which in turn would take this value, fork()s the render off as a child, and then monitors the execution time of the render. This way the script can decide if it should kill the render, and if so, implement its own logic to modify the job. For instance, I could see logic that adds a job remark (rush -jobremark) and frame notes (rush -notes) to tell the user what happened, and have the script then either pause the job (rush -pause) or have it fail all the Que frames (rush -fail que) so that the job simply fails itself quickly. > Because we usually chain several jobs together with the WaitFor command, > a single jobs with 100 frames reaching MaxTime blocks the renderfarm for = > several hours which is mostly a problem at night when the farm is not = > watched. If you used the above technique to 'Fail' all the Que frames, then the job would suddenly fail itself, allowing other the other waitfor jobs to start running. Just curious though: are you using 'waitfor' to simulate a FIFO queue? If so, did you rule out using rush's FIFO scheduling? (eg. 'sched fifo' in the rush.conf file) Perhaps that's not what you need, but since it sounds like you want the other jobs to continue if this one keeps hanging, then I imagine the jobs really shouldn't be dependent on each other, and perhaps just FIFO scheduled.. > A solution would be to have something like a TimeOutCommand, that > calls a script that can take appropriate action (This would be on a per = > frame basis), or even better a general StatusCommand that could be = > called for every frame, or for every job and additional information = > could be passed via environment variables. I think this kind of thing is best done as logic in the script itself; background the command, and monitor its execution time.. if it exceeds the max, the script can choose what to do. > Since the killing of the process is initiated by rush, my custom render > script can not detect that it was killed because it reached MaxTime. Right -- a good reason not to use it in this case, and use the above instead, I would think. > The only solution i can think of right now is to go through every job in > the queue and parse the log files if there is any MAXTIME entry. I once investigated trying to make a 'callback option' for maxtime so that when it expires, a script could be run to do post-kill logic.. but I soon realized there would need to be all kinds of options to do what someone would want; run the script BEFORE the kill occurs, or AFTER it occurs, or have the script decide whether to kill it or not, etc. Seemed best to implement such things in the script itself. -- Greg Ercolano, erco@(email surpressed) Seriss Corporation Rush Render Queue, http://seriss.com/rush/ Tel: (Tel# suppressed)ext.23 Fax: (Tel# suppressed) Cel: (Tel# suppressed) *** ***************************************************** *** Message #2143 ***************************************************** *** ***************************************************** Subject: Re: simple priority question From: Kevin Sallee Date: Thu, 03 Nov 2011 18:31:30 -0400 On 10/28/2011 11:09 AM, Greg Ercolano wrote: > On 10/27/11 14:59, Kevin Sallee wrote: >> Hello: i have some jobs that are executed on my farm, and i would like >> another job i'm sending to be executed only when all the other jobs i >> sent are finished. how do i do that without specifying a dependency? > > Hi Kevin, > > Set the job to a lower priority than the others, and it shouldn't > pick up unless the other jobs can't use any more cpus. (eg. if > your job is @1 and the others are @2 or higher, those other jobs > will always win cpus if they aren't constrained by some limit) > > This does mean, however, it may start rendering while the > other jobs are still finishing their renders. > > If you really want that last job to start /only/ when the > other jobs have /completely/ finished (and /not/ start even if > there are cpus available but the other jobs are still > working on rendering their last few frames), then 'waitfor ' > would be the way to go, as that really is a dependency type > of behavior. > > To get what you want without a dependency, I think you'd have > to write a custom submit script that submits your job in the > Pause state, and polls the network with 'rush -laj' until > there are no Run jobs, then it would unpause the job to start it. > I can suggest code that would do this, but it's an odd case. > > If you think that would be a handy feature, I could investigate > adding such a thing. > > > Hi greg, sorry i didn't see your answer before... I already found a workaround as you said, a little script that uses rush -lj. It's just i'm not sending rendering jobs but animation baking jobs. So i have this scene where you can bake animation for all assets, and then build a custom scene with all the rigged assets references switched to cached references. For the scene building, i want to wait for all the baking jobs to be finished. Since it's user-based, i used rush -lj instead of rush -laj. It's just using time.sleep if baking jobs (identified by their titles) sent by the user are not finished. It's really an odd case so no need to dig it much more. Thank you for your answer though Kevin *** ***************************************************** *** Message #2142 ***************************************************** *** ***************************************************** Subject: How to detect and handle Frame MaxTime failures From: Lutz Paelike Date: Thu, 03 Nov 2011 14:03:54 -0400 Hi, we have sometimes some MaxTime failures in our rush queue and the frames = are then killed after MaxTime is reached. This is fine but still every = frame is rendered, reaches MaxTime and is finally killed. We would like to monitor a job and if more then, let's say 5 frames, are killed due to Maxtime the job (or a series of jobs) should be = skipped completely and no more frames should be renderered.=20 Because we usually chain several jobs together with the WaitFor command, a single jobs with 100 frames reaching MaxTime blocks the renderfarm for = several hours which is mostly a problem at night when the farm is not = watched. A solution would be to have something like a TimeOutCommand, that calls a script that can take appropriate action (This would be on a per = frame basis), or even better a general StatusCommand that could be = called for every frame, or for every job and additional information = could be passed via environment variables. Since the killing of the process is initiated by rush, my custom render script can not detect that it was killed because it reached MaxTime. The only solution i can think of right now is to go through every job in the queue and parse the log files if there is any MAXTIME entry. Am i missing something here or what would be the best approach for this = problem? Cheers, Lutz Paelike Pipeline Supervisor D-Facto-Motion GmbH *** ***************************************************** *** Message #2141 ***************************************************** *** ***************************************************** Subject: Re: simple priority question From: Greg Ercolano Date: Fri, 28 Oct 2011 12:09:44 -0400 On 10/27/11 14:59, Kevin Sallee wrote: > Hello: i have some jobs that are executed on my farm, and i would like > another job i'm sending to be executed only when all the other jobs i > sent are finished. how do i do that without specifying a dependency? Hi Kevin, Set the job to a lower priority than the others, and it shouldn't pick up unless the other jobs can't use any more cpus. (eg. if your job is @1 and the others are @2 or higher, those other jobs will always win cpus if they aren't constrained by some limit) This does mean, however, it may start rendering while the other jobs are still finishing their renders. If you really want that last job to start /only/ when the other jobs have /completely/ finished (and /not/ start even if there are cpus available but the other jobs are still working on rendering their last few frames), then 'waitfor ' would be the way to go, as that really is a dependency type of behavior. To get what you want without a dependency, I think you'd have to write a custom submit script that submits your job in the Pause state, and polls the network with 'rush -laj' until there are no Run jobs, then it would unpause the job to start it. I can suggest code that would do this, but it's an odd case. If you think that would be a handy feature, I could investigate adding such a thing. -- Greg Ercolano, erco@(email surpressed) Seriss Corporation Rush Render Queue, http://seriss.com/rush/ Tel: (Tel# suppressed)ext.23 Fax: (Tel# suppressed) Cel: (Tel# suppressed) *** ***************************************************** *** Message #2140 ***************************************************** *** ***************************************************** Subject: simple priority question From: Kevin Sallee Date: Thu, 27 Oct 2011 17:59:06 -0400 Hello: i have some jobs that are executed on my farm, and i would like another job i'm sending to be executed only when all the other jobs i sent are finished. how do i do that without specifying a dependency? *** ***************************************************** *** Message #2139 ***************************************************** *** ***************************************************** Subject: Re: how to deal with missing Nuke plugin licenses From: Greg Ercolano Date: Thu, 27 Oct 2011 11:47:36 -0400 On 10/26/11 06:49, Abraham Schneider wrote: > For Nuke itself, we have enough render licenses to use the whole farm > for rendering. But for some of the plugins (Furnace, Ocula, ...) we > have only a limited number of licenses. I'm wondering now how to deal > with this on a rush renderfarm. I see three possibilites there: > > 1. limit the cpus used by the job to the amount of available licenses. > Seems to be fine, but has two disadvantages: it only works if you have > 1 job on the farm that uses this plugin. If you start a second job, it > will try to render on the other free machines and will fail. Second > problem is that sometimes license servers will not release the > licenses as fast as the jobs jump from machine to machine. So even if > I limit the job to the correct amount of cpus, there may be a missing > license when one machine finishes a frame and a different machine > wants to start a new frame. > > 2. use the hosts file to define groups of machines which only contain > the correct amount of machines. This should avoid the problems above, > but handling this is painful. A machine or two may be down, then you > have to change the hosts file again. Yes; defining a hostgroup such as +furnace would be one way to go. Yes, if one of the machines in the group is taken down, you'd have to modify that hostgroup's membership.. but I'd think that'd be part of regular network administration to enable/disable machines when they're taken down. (As opposed to a machine that just needs a reboot) > You have slower and faster > machines, how do you distribute them to the different groups? You can make two sub-groups if you want control over machine speed. eg: +furnace -- all the 'furnace' machines +furnace_fast -- just the fast ones in the furnace group +furnace_slow -- just the slow ones in the furnace group ..so if you have a job that needs to keep at least 2 cpus busy on the fast machines, then have that job ask for the +furnace_fast machines at a higher priority, eg: +furnace=10@100 +furnace_fast=2@900 > It's a possible solution but doesn't feel like THE solution :) A centralized 'license counter' is perhaps what you're wanting, but it has its own issues; random interactive use counts against licenses, a single machine would have to be responsible for keeping track of license counts, etc. > 3. Use something like the licpause function of Rush. Problems with > licpause: it pauses the JOB, not the frame/batch frames of the machine > that has the license problem. Yes; this is because the job really shouldn't try to pick up on more machines if the software it's running is out of licenses; it doesn't make sense to tie up newly available cpus with a job that will not be able to run. So the licpause gives newly available cpus a shot at other jobs when a job can't get more licenses. > And the normal license pause function of > the submit-nuke.pl will not work, because some of the plugins will not > raise an error exit code, so there is a license error, That should be OK; if you can identify all the license error messages, the script can check for these messages (even if the exit code is zero) to detect the license error, and handle it accordingly. If you supply me with the complete frame log showing the license error messages, I can tell you how to add those checks to the script. Or, send me both the error messages and the script, and I can make the change for you so you can see how to add your own. > So because of my very limited Perl knowledge I have two questions: > - How can I check (for example by doing something like a grep of the > logfile) for license problems inside of the submit-nuke.pl and raise a > different exitcode, so the normal licpause function will also work? There is a global LogCheck() function built into the .common.pl (which all the scripts load for 'common' functions) that can be called to 'grep' the log file for certain messages. This takes into account retries, so that error messages aren't retriggered by older messages due to retries in the same log. With the above complete frame logs showing the license errors I can show you what to change. > - what would be a good way to do something like the license pause on a > per-frame base instead of doing it per job? Any suggestions? You can do things like sleep() and retry the command again repeatedly until it works.. that's not hard. But that ties up the cpu until a license becomes available.. it might be better if the cpu becomes available to other jobs, in which case you can just do a sleep and exit(2) so that rush requeues the frame, allowing the scheduler to 'round robin' select some other job. (The sleep prevents the scheduler from 'spinning' the reque frame too quickly, in case there are no other jobs) -- Greg Ercolano, erco@(email surpressed) Seriss Corporation Rush Render Queue, http://seriss.com/rush/ Tel: (Tel# suppressed)ext.23 Fax: (Tel# suppressed) Cel: (Tel# suppressed) *** ***************************************************** *** Message #2138 ***************************************************** *** ***************************************************** Subject: how to deal with missing Nuke plugin licenses From: "Abraham Schneider" Date: Wed, 26 Oct 2011 09:49:10 -0400 Hi there! For Nuke itself, we have enough render licenses to use the whole farm for rendering. But for some of the plugins (Furnace, Ocula, ...) we have only a limited number of licenses. I'm wondering now how to deal with this on a rush renderfarm. I see three possibilites there: 1. limit the cpus used by the job to the amount of available licenses. Seems to be fine, but has two disadvantages: it only works if you have 1 job on the farm that uses this plugin. If you start a second job, it will try to render on the other free machines and will fail. Second problem is that sometimes license servers will not release the licenses as fast as the jobs jump from machine to machine. So even if I limit the job to the correct amount of cpus, there may be a missing license when one machine finishes a frame and a different machine wants to start a new frame. 2. use the hosts file to define groups of machines which only contain the correct amount of machines. This should avoid the problems above, but handling this is painful. A machine or two may be down, then you have to change the hosts file again. You have slower and faster machines, how do you distribute them to the different groups? It's a possible solution but doesn't feel like THE solution :) 3. Use something like the licpause function of Rush. Problems with licpause: it pauses the JOB, not the frame/batch frames of the machine that has the license problem. And the normal license pause function of the submit-nuke.pl will not work, because some of the plugins will not raise an error exit code, so there is a license error, but the exitcode is 0 and Rush assumes that the rendering went well. So because of my very limited Perl knowledge I have two questions: - How can I check (for example by doing something like a grep of the logfile) for license problems inside of the submit-nuke.pl and raise a different exitcode, so the normal licpause function will also work? - what would be a good way to do something like the license pause on a per-frame base instead of doing it per job? Any suggestions? Thanks, Abraham PS: here is an example of a log file which shows a license problem with the furnace plugin: Executing: logtrim -s 0 -c nuke -V -m 4 -c 1600M -x /mnt/frozone/ projects/filmschulfestivaltrailer_49554/002_010/nuke/ 002_010_degrain_v01_as.nk 4,4 Nuke 6.3v4, 64 bit, built Sep 22 2011. Copyright (c) 2011 The Foundry Visionmongers Ltd. All Rights Reserved. Loading /usr/local/Nuke6.3v4-64/plugins/init.tcl Loading /usr/local/Nuke6.3v4-64/plugins/init.py Loading /usr/local/Nuke6.3v4-64/plugins/setenv.tcl Loading /usr/local/Nuke6.3v4-64/plugins/Tracker3.so Loading /usr/local/Nuke6.3v4-64/plugins/formats.tcl Loading /mnt/libs/nukelib/plugins/init.py Loading /mnt/homes/aschneid/.nuke/init.py Loading /usr/local/Nuke6.3v4-64/plugins/getenv.tcl Loading /usr/local/Nuke6.3v4-64/plugins/dpxReader.so Loading /mnt/libs/nukelib/plugins/gizmos/HandleMarker.gizmo Loading /usr/local/Nuke6.3v4-64/plugins/Constant.so Loading /usr/local/Nuke6.3v4-64/plugins/Mirror.so Loading /usr/local/Nuke6.3v4-64/plugins/Merge2.so Loading /usr/local/Nuke6.3v4-64/plugins/ColorCorrect.so Loading /usr/local/Nuke6.3v4-64/plugins/Reformat.so Loading /usr/local/Nuke6.3v4-64/plugins/ShuffleViews.so Loading /mnt/libs/nukelib/plugins/gizmos/MainFileOut.gizmo Loading /usr/local/Nuke6.3v4-64/plugins/movReader.tcl Loading /usr/local/Nuke6.3v4-64/plugins/ffmpegReader.so Loading /usr/local/Nuke6.3v4-64/plugins/Crop.so Loading /mnt/libs/nukelib/plugins/gizmos/GlobalVars.gizmo Loading /usr/local/Nuke6.3v4-64/plugins/dpxWriter.so Writing /mnt/frozone/projects/filmschulfestivaltrailer_49554/002_010/ precomp/002_010_degrain_v01_as/002_010_degrain_v01_as.0004.dpx DDImage message: FOUNDRY LICENSE ERROR REPORT Abraham Schneider Senior VFX Compositor =20 ARRI Film & TV Services GmbH Tuerkenstr. 89 D-80799 Muenchen / Germany Phone (Tel# suppressed) EMail aschneider@arri.de www.arri.de/filmtv ---------------------------- Timestamp: Wed Oct 26 09:29:17 2011 License Requested: furnace 4.2 for ofx render only with options all f_degrain Extended Info: F_DeGrain on uk.co.thefoundry.nuke (Render) 4.0 Environment Info: /mnt/libs/nukelib/licenses FLEXlm LICENSE DIAGNOSTICS --------------------------- Licensed number of users already reached. Feature: furnace_ofx_r License path: /mnt/libs/nukelib/licenses/license.lic:/mnt/libs/ nukelib/licenes:/usr/local/foundry/FLEXlm: FLEXnet Licensing error:-4,132. System Error: 115 "Operation now in progress" For further information, refer to the FLEXnet Licensing documentation, available at "www.acresso.com". FOUNDRY LICENSE DIAGNOSTICS --------------------------- Error : Maximum user counted exceeded. 6.9 Writing /mnt/frozone/projects/filmschulfestivaltrailer_49554/002_010/ precomp/002_010_degrain_v01_as/002_010_degrain_v01_as.0004.dpx took 1.70 seconds Frame 4 (1 of 1) Total render time: 1.70 seconds Allocated 88.2MiB, 6% of usage limit of 1.56GiB, sbrk =3D 232MiB. free_*() calls: 0, new_handler() cleanups: 0. Tile Cache: Cache Report =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Current Size: 000 B Max Size: 1.00663 GB Percentage Used: 0 HandleMarker1.Merge1: 12.8MB 2048x1556 rgb 100% w 31120 F_DeGrain in F_DeGrain1: output image :6.49MB HandleMarker1.RotoPaint1: 28.7MB 2048x1168 rgb 100% w 27 F_DeGrain in F_DeGrain1: output image :6.36MB F_DeGrain in F_DeGrain1: output image :6.36MB F_DeGrain in F_DeGrain1: output image :6.36MB F_DeGrain in F_DeGrain1: output image :6.36MB F_DeGrain in F_DeGrain1: output image :6.36MB F_DeGrain in F_DeGrain1: output image :6.36MB F_DeGrain in F_DeGrain1: output image :6.36MB --- NUKE SUCCEEDS ________________________________ ARRI Film & TV Services GmbH Sitz: M=C3=BCnchen Registergericht: Amtsgericht M=C3=BCnchen Handelsregisternummer: HRB 69396 Gesch=C3=A4ftsf=C3=BChrer: Franz Kraus, Dr. Martin Prillmann, Josef = Reidinger *** ***************************************************** *** Message #2137 ***************************************************** *** ***************************************************** Subject: Re: Newbie submit script not working From: Kevin Sallee Date: Mon, 24 Oct 2011 18:54:52 -0400 On 10/24/2011 05:35 PM, Greg Ercolano wrote: > On 10/24/11 15:23, Kevin Sallee wrote: >> On 10/24/2011 05:20 PM, Greg Ercolano wrote: >>> On 10/24/11 15:08, Kevin Sallee wrote: >>> [..] >>>> Error: Cannot find procedure "AbcExport". >>>> >>>> So it seems it's not finding the plugins. where should i specify the >>>> path for the plugins? >>>> >>> Probably a separate MAYA_PLUG_IN_PATH environment variable, eg: >>> >>> os.environ["MAYA_PLUG_IN_PATH"] = "/some/path/to/your/plugins" > >> Ok that's a great answer! thank you very much, i'm gonna try it right >> away :) > > Great.. and feel free to keep progress updated on the thread, > which I've cc'ed here. > > BTW, note you can get one script to do both the submit and render; > just add a special flag (eg. -render) which the 'submit' part of > the script can specify as the command it sends to rush, so when > the script runs on the render nodes, it runs a different part of > the script to handle the rendering. > > It's a cool way of getting one script to do the work of two. It will be a good idea for rendering scripts, but we're kind of using rush just to send other kind of jobs to the farm. This is a geometry baking job that will be introduced between animation and ligthing/texturing > > This is a special form of "recursion" that you have to handle > carefully, otherwise you'll end up with a 'network worm' where > you create a job that submits jobs..! > > You can end up with that situation even with two scripts, where > you accidentally submit a job that runs the submitter script > instead of the render script. > > To prevent that, add some code in your submit code as follows > to protect it from accidentally being run as if it were a render. > > The daemons always set the RUSH_ISDAEMON variable before running > a render, so you can check this variable just before submitting > the job to "short-circuit" such a problem before it goes out of > control. eg: > > if os.environ.is_key("RUSH_ISDAEMON"): > print "Avoiding recursion: exiting" > sys.exit(1) > else: > # Submit the job > submit = os.popen("rush -submit", 'w') > [..] Yeah i saw that in the original script and kept that part of it for the moment, but as i said this job will probably not do renders. So I tried to specify my environment vars but it doesn't seem to be working. if i do something like this: #!/usr/bin/env python import os, commands, sys os.environ["PATH"] = "/usr/autodesk/maya/bin" os.environ["MAYA_LOCATION"] = "/usr/autodesk/maya" os.environ["MAYA_PLUG_IN_PATH"] = "/mnt/springfield/.coatlicue/maya/plugins:/opt/pixar/RenderManStudio/plug-ins:/opt/bakery/licenses/relight-1.1.2.7_22217/plugins/maya_2011:/usr/local/alembic-1.0.2/maya/plug-ins" os.system("maya -batch -file /home/kevinsallee/alembicTests/testbatch.mb -command 'AbcExport -v -jobArg \"-ro -uvWrite -frameRange 1 20 -file /home/kevinsallee/alembicTests/testbatch.abc\";'") he doesn't find maya, and neither does he find AbcExport. For the moment i managed to do it by doing it like this: #!/usr/bin/env python import os, commands, sys #os.environ["PATH"] = "/usr/autodesk/maya/bin" #os.environ["MAYA_LOCATION"] = "/usr/autodesk/maya" #os.environ["MAYA_PLUG_IN_PATH"] = "/mnt/springfield/.coatlicue/maya/plugins:/opt/pixar/RenderManStudio/plug-ins:/opt/bakery/licenses/relight-1.1.2.7_22217/plugins/maya_2011:/usr/local/alembic-1.0.2/maya/plug-ins" os.system("/usr/autodesk/maya/bin/maya -batch -file /home/kevinsallee/alembicTests/testbatch.mb -command 'loadPlugin \"/mnt/springfield/.coatlicue/maya/plugins/AbcExport.so\"; AbcExport -v -jobArg \"-ro -uvWrite -frameRange 1 20 -file /home/kevinsallee/alembicTests/testbatch.abc\";'") which isn't very clean for me, but hey, for the moment it works. I don't understand why it's not taking into account my environment vars. thanks for the help kevin *** ***************************************************** *** Message #2136 ***************************************************** *** ***************************************************** Subject: Re: Newbie submit script not working From: Greg Ercolano Date: Mon, 24 Oct 2011 18:35:55 -0400 On 10/24/11 15:23, Kevin Sallee wrote: > On 10/24/2011 05:20 PM, Greg Ercolano wrote: >> On 10/24/11 15:08, Kevin Sallee wrote: >> [..] >>> Error: Cannot find procedure "AbcExport". >>> >>> So it seems it's not finding the plugins. where should i specify the >>> path for the plugins? >>> >> Probably a separate MAYA_PLUG_IN_PATH environment variable, eg: >> >> os.environ["MAYA_PLUG_IN_PATH"] = "/some/path/to/your/plugins" > Ok that's a great answer! thank you very much, i'm gonna try it right > away :) Great.. and feel free to keep progress updated on the thread, which I've cc'ed here. BTW, note you can get one script to do both the submit and render; just add a special flag (eg. -render) which the 'submit' part of the script can specify as the command it sends to rush, so when the script runs on the render nodes, it runs a different part of the script to handle the rendering. It's a cool way of getting one script to do the work of two. This is a special form of "recursion" that you have to handle carefully, otherwise you'll end up with a 'network worm' where you create a job that submits jobs..! You can end up with that situation even with two scripts, where you accidentally submit a job that runs the submitter script instead of the render script. To prevent that, add some code in your submit code as follows to protect it from accidentally being run as if it were a render. The daemons always set the RUSH_ISDAEMON variable before running a render, so you can check this variable just before submitting the job to "short-circuit" such a problem before it goes out of control. eg: if os.environ.is_key("RUSH_ISDAEMON"): print "Avoiding recursion: exiting" sys.exit(1) else: # Submit the job submit = os.popen("rush -submit", 'w') [..] -- Greg Ercolano, erco@(email surpressed) Seriss Corporation Rush Render Queue, http://seriss.com/rush/ Tel: (Tel# suppressed)ext.23 Fax: (Tel# suppressed) Cel: (Tel# suppressed) *** ***************************************************** *** Message #2135 ***************************************************** *** ***************************************************** Subject: Re: Newbie submit script not working From: Greg Ercolano Date: Mon, 24 Oct 2011 18:20:35 -0400 On 10/24/11 15:08, Kevin Sallee wrote: > Once again forget about my last messages! I'm sorry about the spamming > but i'm finding some answers by myself along the way. LOL, that's good.. makes our job easier, and we get to learn with you ;) > so i still have my main file that contains: > [..] > 'command python /home/kevinsallee/alembicTests/myTest.py\n ' + Right; you might want to pass the scene file's name and other things as arguments to the script, so you don't have to hardcode the MyTest.py render script, but perhaps that's for later. > and myTest.py contains: > #!/usr/bin/env python > import os, commands, sys > os.system("/usr/autodesk/maya/bin/maya -batch -file /home/kevinsallee/alembicTests/testbatch.mb -command [..] Be sure to set any PATH and other environment variables in your script, eg: os.environ["PATH"] = "/usr/autodesk/maya/bin:" + os.environ["PATH"] > AbcExport is an Alembic command that comes in the maya plugin > AbcExport.so, which i put in the main plug ins folder of maya. > > If i run this, my log shows this: > Error: > Error: Syntax error > File read in 0 seconds. > Result: /home/kevinsallee/alembicTests/testbatch.mb > Error: Cannot find procedure "AbcExport". > > So it seems it's not finding the plugins. where should i specify the > path for the plugins? Probably a separate MAYA_PLUG_IN_PATH environment variable, eg: os.environ["MAYA_PLUG_IN_PATH"] = "/some/path/to/your/plugins" Take a look at your environment variables for a working unix shell command line test, and make sure any of those that are maya related are set in your MyTest.py script. -- Greg Ercolano, erco@(email surpressed) Seriss Corporation Rush Render Queue, http://seriss.com/rush/ Tel: (Tel# suppressed)ext.23 Fax: (Tel# suppressed) Cel: (Tel# suppressed) *** ***************************************************** *** Message #2134 ***************************************************** *** ***************************************************** Subject: Newbie submit script not working From: Kevin Sallee Date: Mon, 24 Oct 2011 18:08:04 -0400 Once again forget about my last messages! I'm sorry about the spamming but i'm finding some answers by myself along the way. Ok, so i managed to call a script that should execute a maya batch command. so i still have my main file that contains: # Submit the job submit = os.popen("rush -submit", 'w') submit.write('title SHOW/SHOT\n' + 'ram 250\n' + 'frames 1-1\n' + 'logdir %s\n' % logdir + 'command python /home/kevinsallee/alembicTests/myTest.py\n ' + 'cpus +any=5@1\n') err = submit.close() and myTest.py contains: #!/usr/bin/env python import os, commands, sys os.system("/usr/autodesk/maya/bin/maya -batch -file /home/kevinsallee/alembicTests/testbatch.mb -command 'AbcExport -v -jobArg \"-ro -uvWrite -frameRange 1 20 -file /home/kevinsallee/alembicTests/testbatch.abc\"'") AbcExport is an Alembic command that comes in the maya plugin AbcExport.so, which i put in the main plug ins folder of maya. If i run this, my log shows this: Error: Error: Syntax error File read in 0 seconds. Result: /home/kevinsallee/alembicTests/testbatch.mb Error: Cannot find procedure "AbcExport". So it seems it's not finding the plugins. where should i specify the path for the plugins? thank you kevin *** ***************************************************** *** Message #2133 ***************************************************** *** ***************************************************** Subject: Newbie submit script not working From: Kevin Sallee Date: Mon, 24 Oct 2011 17:45:43 -0400 Ok don't mind my first message. I am one step further now :) ok so i have my submit script that looks like this: submit = os.popen("rush -submit", 'w') submit.write('title SHOW/SHOT\n' + 'ram 250\n' + 'frames 1-1\n' + 'logdir %s\n' % logdir + 'command python /home/kevinsallee/alembicTests/myTest.py\n ' + 'cpus +any=5@1\n') err = submit.close() and my file myTest.py that looks like this: #!/usr/bin/env python import os, commands, sys os.system("maya -batch -file /home/kevinsallee/alembicTests/testbatch.mb -command 'AbcExport -v -jobArg \"-ro -uvWrite -frameRange 1 20 -file /home/kevinsallee/alembicTests/testbatch.abc\"'") In the log, i get this: --------------- Rush 102.42a9c -------------- -- Host: nuclearpowerplant01 -- Pid: 6560 -- Title: SHOW/SHOT -- Jobid: mixmaster.673 -- Frame: 0001 -- Tries: 0 -- Owner: kevinsallee (1091/100) -- RunningAs: kevinsallee (1091/100) -- Priority: 1 -- Nice: 10 -- Tmpdir: /var/tmp/.RUSH_TMP.867 -- LogFile: /home/kevinsallee/alembicTests/testbatch.mb.log/0001 -- Command: python /home/kevinsallee/alembicTests/myTest.py -- Started: Mon Oct 24 16:41:44 2011 -------------------------------------------- sh: maya: command not found why is maya command not found?? thanks for the help Kevin *** ***************************************************** *** Message #2132 ***************************************************** *** ***************************************************** Subject: Newbie submit script not working From: Kevin Sallee Date: Mon, 24 Oct 2011 17:24:29 -0400 Hello, I am a R&D engineer at Cluster studio and I am trying to write a submit script for rush inspired by the one i found in the reference manual. my submit looks like this: submit.write('title SHOW/SHOT\n' + 'ram 250\n' + 'frames 1-1\n' + 'logdir %s\n' % logdir + 'command os.system(\"maya\") \n'+ 'cpus +any=5@1\n') of course my command won't be that one at the end, i need to execute a command maya -batch AbcExport (alembic plugin). The problem is when i do that i get this message from the log: os.system("maya"): No such file or directory I'm probably doing something very stupid, so i'm pretty sure the answer will be quite simple, but any help is very welcome thank you and sorry for the newbie question Kevin R&D engineer at Cluster Studio *** ***************************************************** *** Message #2131 ***************************************************** *** ***************************************************** Subject: [Q+A] Is there a way to list "Fail" frames for *all* jobs on the From: Greg Ercolano Date: Mon, 17 Oct 2011 20:32:11 -0400 > Is there a way to get a list of all the Fail frames > for *all* jobs on the network inside Irush? > > Sometimes we get a fair of Fail frames, and want an easy way to see > if there's a network-wide trend across all jobs causing the problem. > (eg. if one particular host is responsible for all the failures, > or if there's a problem with one of the file servers or license managers. Yes, you can create a script that generates this report, and the report will show up in irush such that you can view logs and requeue frames using the Frame controls as you'd expect. The script would a) get a list of all the jobids in the shop, and b) run 'rush -lf | grep ^Fail' to get a list of all the fail frames from each job. To get such a report, you could create a script like the following which does just that, and add it as a hotkey in Irush so that you can see it as its own "Frames" report: 1) Save the below script as '/your/server/bin/all-fail-frames' 2) Go into irush Hotkeys -> Edit 3) Click New, and fill out the form: Name: "All Fail Frames" Command: perl /your/server/bin/all-fail-frames.pl Hotkey: F1 Output: Upper:Frame 4) Hit Done Then, when you hit F1, you'll get a list of all the failed frames in Irush with the 'Frames' controls you're used to, so you can double click frames to view the logs, etc. Here's the 'all-fail-frames.pl' script: --- snip #!/usr/bin/perl $| = 1; my $jobids = ""; # LIST ALL JOBS open(LAJ, "rush -laj|"); while ( ) { if ( /^Run\s+(\S+)/ || /^Fail\s+(\S+)/ || /^Pause\s+(\S+)/ ) { $jobids .= "$1 "; } } close(LAJ); # LIST FAIL FRAMES IN ALL JOBS open(LF, "rush -lf $jobids -t 5|"); my $header = 0; while ( ) { # Print header only once if ( /^Status/ && ! $header ) { $header = 1; print $_; } # Print any failed frames if ( /^Fail/ ) { print $_; } } close(LF); --- snip *** ***************************************************** *** Message #2130 ***************************************************** *** ***************************************************** Subject: A note about Centos 6.0 / 64bit + LDAP From: Greg Ercolano Date: Thu, 22 Sep 2011 19:56:24 -0400 If you're running Rush on Centos 6.0/64bit and are using LDAP, be sure to install the 64bit version of rush. Although the 32bit rush binaries will seem to run OK on Centos 6.0/64, the 32bit LDAP compatibility library that comes with the OS doesn't handle lookups correctly, causing "unknown uid" errors during rendering for LDAP users. So when running 64bit linux, be sure to use the 64bit binaries of Rush to avoid problems with LDAP environments. *** ***************************************************** *** Message #2129 ***************************************************** *** ***************************************************** Subject: Re: [CINEMA 4D] Submit Plug-in/script within Cinema4D From: Stephan Kosinski Date: Tue, 06 Sep 2011 22:20:01 -0400 Hey Greg On 09/06/2011 06:58 PM, Greg Ercolano wrote: > On 09/06/11 18:35, Stephan Kosinski wrote: >> Dear rush-mates, >> Anybody knows if any plug-in or any script exist in order to submit >> render to rush within Cinema4D? > There's the submit-cinema4d.pl script to render outside of > cinema4d, and it can be invoked with -field flags to set > eg. the frame range and scene filename from within C4D, eg: > > perl //yourserver/rushscripts/submit-cinema4d.pl -field C4DSceneFile /xxx/yyy/foo.c4d -field Frames 1-123 > > But I don't have any C4D scripts that run within c4d > that will fire that command off. Yes, this is the one I successfully am using. I was just wondering if anybody had any clue how to get the rendering parameters from Cinema4D's setting in order to be able to send them to the Perl script. > >> Just checking before going into trying to write something from scratch. > If you do come up with something, feel free to post what you > come up with here as a starting point for others. Often that's > how things get rolling. > > If it can be done, I'm sure there are likely examples on the web > where you can form a command like the above, and fire it off as > a shell command like the above to bring up the submit-cinema4d > form with the fields pre-loaded. > > I'd be happy to help if you run into trouble; I have R12 here, > so I can run tests. Ok, thank you. If I come with something surely I will share it. No, I'm not calling you Shirley. -- ................. Stephan Kosinski *** ***************************************************** *** Message #2128 ***************************************************** *** ***************************************************** Subject: Re: [CINEMA 4D] Submit Plug-in/script within Cinema4D From: Greg Ercolano Date: Tue, 06 Sep 2011 21:58:11 -0400 On 09/06/11 18:35, Stephan Kosinski wrote: > Dear rush-mates, > Anybody knows if any plug-in or any script exist in order to submit > render to rush within Cinema4D? There's the submit-cinema4d.pl script to render outside of cinema4d, and it can be invoked with -field flags to set eg. the frame range and scene filename from within C4D, eg: perl //yourserver/rushscripts/submit-cinema4d.pl -field C4DSceneFile /xxx/yyy/foo.c4d -field Frames 1-123 But I don't have any C4D scripts that run within c4d that will fire that command off. > Just checking before going into trying to write something from scratch. If you do come up with something, feel free to post what you come up with here as a starting point for others. Often that's how things get rolling. If it can be done, I'm sure there are likely examples on the web where you can form a command like the above, and fire it off as a shell command like the above to bring up the submit-cinema4d form with the fields pre-loaded. I'd be happy to help if you run into trouble; I have R12 here, so I can run tests. -- Greg Ercolano, erco@(email surpressed) Seriss Corporation Rush Render Queue, http://seriss.com/rush/ Tel: (Tel# suppressed)ext.23 Fax: (Tel# suppressed) Cel: (Tel# suppressed) *** ***************************************************** *** Message #2127 ***************************************************** *** ***************************************************** Subject: [CINEMA 4D] Submit Plug-in/script within Cinema4D From: Stephan Kosinski Date: Tue, 06 Sep 2011 21:35:51 -0400 Dear rush-mates, Anybody knows if any plug-in or any script exist in order to submit render to rush within Cinema4D? Just checking before going into trying to write something from scratch. Thank you. -- ................. Stephan Kosinski *** ***************************************************** *** Message #2126 ***************************************************** *** ***************************************************** Subject: [SYSADMIN/AFTERFX] AE license errors on OSX can end up in system.log From: Greg Ercolano Date: Wed, 31 Aug 2011 01:11:44 -0400 Guess I never noticed this, but it seems when After Effects (CS5.5) on OSX encounters a license problem, aerender will just show a few PROGRESS lines, then exits with 0, eg: aerender version 10.5.1x2 PROGRESS: Launching After Effects... PROGRESS: ...After Effects successfully launched No message at all about licenses to stdout or err. However, aerender /does/ throw a license error to /var/log/system.log, eg: Aug 20 00:00:00 render1 [0x0-0xdd8dd8].com.adobe.aerendercore[1234]: After Effects error: Unable to obtain a license. Please run the full application to correct the problem or get a more detailed message. I guess that's a useful AE debugging tip; if AE seems to just exit without an error before even loading the scene file, do a tail of the system.log on that machine to see if there's any errors about aerender.. it may give a clue as to what the problem is. Someone report a bug to Adobe that aerender should at least also throw the license errors to stdout/err, and exit with a 1. :/ *** ***************************************************** *** Message #2125 ***************************************************** *** ***************************************************** Subject: Re: Rush Python and ImageCommand From: Daniel Browne Date: Wed, 24 Aug 2011 19:39:29 -0400 It was a runtime environment settings issue; I've got it now. Thanks Greg. On Aug 24, 2011, at 1:53 PM, Greg Ercolano wrote: [posted to rush.general] On 08/24/11 13:04, Daniel Browne wrote: > I have a python script which is the launcher for our flipbook tool. It do= es=3D > n't appear that this will work in iRush when it's entered in the job's Im= ag=3D > eCommand field, correct?=20 It should work fine; irush doesn't care what scripting language the script is written in. What's the command line look like, and how is the frame range passed to it?=09 =09 > Will iRush only acknowledge perl or a known executable tool? irush will just run the command, whatever it is. If it's a python script, have the command be: python //path/to/your/script.py -arg -arg ..and if it's perl: perl //path/to/your/script.pl -arg -arg --=20 Greg Ercolano, erco@(email surpressed) Seriss Corporation Rush Render Queue, http://seriss.com/rush/ Tel: (Tel# suppressed)ext.23 Fax: (Tel# suppressed) Cel: (Tel# suppressed) ---------- Dan "Doc" Browne System Administrator Evil Eye Pictures dbrowne@(email surpressed) Office: (415) 777-0666 x105 *** ***************************************************** *** Message #2124 ***************************************************** *** ***************************************************** Subject: Re: Rush Python and ImageCommand From: Greg Ercolano Date: Wed, 24 Aug 2011 16:53:32 -0400 On 08/24/11 13:04, Daniel Browne wrote: > I have a python script which is the launcher for our flipbook tool. It does= > n't appear that this will work in iRush when it's entered in the job's Imag= > eCommand field, correct? It should work fine; irush doesn't care what scripting language the script is written in. What's the command line look like, and how is the frame range passed to it? > Will iRush only acknowledge perl or a known executable tool? irush will just run the command, whatever it is. If it's a python script, have the command be: python //path/to/your/script.py -arg -arg ..and if it's perl: perl //path/to/your/script.pl -arg -arg -- Greg Ercolano, erco@(email surpressed) Seriss Corporation Rush Render Queue, http://seriss.com/rush/ Tel: (Tel# suppressed)ext.23 Fax: (Tel# suppressed) Cel: (Tel# suppressed) *** ***************************************************** *** Message #2123 ***************************************************** *** ***************************************************** Subject: Rush Python and ImageCommand From: Daniel Browne Date: Wed, 24 Aug 2011 16:04:33 -0400 Hi Greg, I have a python script which is the launcher for our flipbook tool. It does= n't appear that this will work in iRush when it's entered in the job's Imag= eCommand field, correct? Will iRush only acknowledge perl or a known execut= able tool? -Dan ---------- Dan "Doc" Browne System Administrator Evil Eye Pictures dbrowne@(email surpressed) Office: (415) 777-0666 x105 *** ***************************************************** *** Message #2122 ***************************************************** *** ***************************************************** Subject: [SYSADMIN Q+A] Linux Management From: Daniel Browne Date: Mon, 22 Aug 2011 22:08:04 -0400 Greetings all, Though slightly OT I thought I would ask everyone's opinion as to what is t= he best system management tool for Linux. I have about 20 CentOS boxes in m= y render farm now and no workstations (yet), but I'm sure that number will = grow eventually. The first solution I've looked at is RedHat Satellite/Spacewalk, which seem= s oriented around large scale server farm management. Two others I've come = across are CFEngine and Puppet. The latter two have the advantage of suppor= ting multiple operating systems, but I have no plans to use/support multipl= e distros. Your input is much appreciated, -Dan ---------- Dan "Doc" Browne System Administrator Evil Eye Pictures dbrowne@(email surpressed) Office: (415) 777-0666 x105 *** ***************************************************** *** Message #2121 ***************************************************** *** ***************************************************** Subject: Re: Job Edit From: Gary Jaeger Date: Fri, 19 Aug 2011 13:53:27 -0400 I'll check and get back to you On Aug 19, 2011, at 9:54 AM, Greg Ercolano wrote: > Hmm, no, it should take effect right away. . . . . . . . . . . . . Gary Jaeger // Core Studio 86 Graham Street, Suite 120 San Francisco, CA 94129 (Tel# suppressed) http://corestudio.com *** ***************************************************** *** Message #2120 ***************************************************** *** ***************************************************** Subject: Re: Job Edit From: Greg Ercolano Date: Fri, 19 Aug 2011 12:54:43 -0400 On 08/19/11 09:09, Gary Jaeger wrote: > I'm confused by the Job Edit.. function. Let's say I submit a job with a = > fail time set to 5:00. Most frames render but a few don't. So I do Job = > Edit... and change the fail time to 10:00 and re-que those frames. But = > they still fail at 5:00. > Is that how it's supposed to work? Hmm, no, it should take effect right away. Even frames that are in progress should be affected, as the job server keeps track of managing frame maxtimes. Are you sure after you change the value in job edit, if you go back into job edit, does it still show the old value? Perhaps there's a complaint about not being the job owner, preventing job edit from making your changes. (ie. if you're editing someone else's job, be sure to enable the FU mode) If not and this is repeatable, it would be good if you could show me some reports showing the problem. For instance, I tried to replicate this here, but it seems to work OK, even in irush. Here I submit a job that takes 40 secs per frame, but set the maxtime to 30, and it keeps requeing. Then I change the timeout to 50, then it runs OK: % ( echo frames 1-50 ; echo command sleep 40 ; echo cpus tahoe; echo maxtime 00:00:30 ) | rush -submit setenv RUSH_JOBID ta.106 % setenv RUSH_JOBID ta.106 % rush -lf | head -3 Status Frame Try Hostname Pid Jobid Start Elapsed Notes Run 0001 0 ta 7805 ta.106 08/19,09:43:43 00:00:29 - <-- 29 secs Que 0002 0 - 0 ta.106 00/00,00:00:00 00:00:00 - % rush -lf | head -3 Status Frame Try Hostname Pid Jobid Start Elapsed Notes Run 0001 1 ta 7830 ta.106 08/19,09:44:20 00:00:00 - <-- always resets at 30 secs Que 0002 0 - 0 ta.106 00/00,00:00:00 00:00:00 - % rush -maxtime 00:00:50 <-- change timeout to 50 secs (renders take 40 secs) ta.106: maxtime is now '00:00:50' % rush -lf | head -3 Status Frame Try Hostname Pid Jobid Start Elapsed Notes Done 0001 3 ta 7971 ta.106 08/19,09:50:48 00:00:41 - <-- finishes Done 0002 1 ta 8000 ta.106 08/19,09:51:30 00:00:41 - <-- finishes -- Greg Ercolano, erco@(email surpressed) Seriss Corporation Rush Render Queue, http://seriss.com/rush/ Tel: (Tel# suppressed)ext.23 Fax: (Tel# suppressed) Cel: (Tel# suppressed) *** ***************************************************** *** Message #2119 ***************************************************** *** ***************************************************** Subject: Job Edit From: Gary Jaeger Date: Fri, 19 Aug 2011 12:09:35 -0400 I'm confused by the Job Edit.. function. Let's say I submit a job with a = fail time set to 5:00. Most frames render but a few don't. So I do Job = Edit... and change the fail time to 10:00 and re-que those frames. But = they still fail at 5:00. Is that how it's supposed to work? . . . . . . . . . . . . Gary Jaeger // Core Studio 86 Graham Street, Suite 120 San Francisco, CA 94129 (Tel# suppressed) http://corestudio.com=09 *** ***************************************************** *** Message #2118 ***************************************************** *** ***************************************************** Subject: Re: specify number of cpus per machine From: Greg Ercolano Date: Fri, 19 Aug 2011 00:12:45 -0400 On 08/18/11 20:34, Greg Ercolano wrote: > On 08/18/11 19:32, Gary Jaeger wrote: >> I can't recall how to submit this. Suppose all the machines in the group >> "fubar" have two physical procs, but we only want to submit to 10 >> machines, and have each of the machines only use a single proc? > > That would be +fubar=10.1 > > The docs for the 'cpus' submit command cover all the possible syntax > for this field: > http://www.seriss.com/rush-current/rush/rush-submit-cmds.html#Cpus > > I should probably make sure all the "?" buttons for the "Cpus" > fields in the submit form cover all these options as well. Oh, and by the way, that causes /only that job/ to start one render per machine. It doesn't prevent /other/ jobs from starting renders on the unused procs. If you want to prevent that, submit with the Ram value set to the maximum amount of RAM rush thinks each machine has. That will make rush think your job needs the whole machine, leaving nothing for other jobs to use. If you have your rush/etc/hosts file set up with the CPUS field set to 1, then you don't need to do any of this; rush will only start one render per machine (even though the boxes might have 2 or more processors, the renders will still thread using both). You can set the rush/etc/hosts file with CPUS set to 1 to simplify things ONLY if *all* your renders are multi-threaded. (ie. each single render on each machine will use of all the processors on that box) If, however, some of your renders are single threaded, then to support those types of jobs along with multithreaded, you'd want the rush/etc/hosts CPUS value set to '2', so that rush can starts up to 2 renders on each machine. If that's the case, and you have a multithreaded job that you want to start only one render per box, and exclude other jobs from using it too, then submit with the Ram: value to prevent other jobs from picking up. For instance, let's say your rush/etc/hosts file has all machines with CPUS set to 2 and RAM set to 100 (so that the RAM value represents a percentage of the machine) To submit a multithreaded job that starts one render per machine but threads on both processors, and doesn't allow other renders to share the machines, fill out the submit form with: Threads: 2 Cpus: +fubar=10.1 Ram: 100 <-- this field is under the 'Rush' tab in the submit form This way rush will think your job needs 100% of each machine it runs on, and will only start one render per box, and the render will start two threads. Rush will think all the ram is being reserved by your render, so it won't let other jobs share the machine. This use of the RAM field in the rush/etc/hosts file as a percentage (setting it to 100) works for more complex situations too, so you can submit with 25 to use 25% of the machine, or 50 to use 50%. This way, you can get patterns of use on each machine where you can end up with a machine running: * 1 job asking for 100% * 2 jobs, each asking for 50% * 4 jobs, each asking for 25% * 3 jobs each asking for 33% * 3 jobs, one needing 50% and the other two needing 25% ..etc.. -- Greg Ercolano, erco@(email surpressed) Seriss Corporation Rush Render Queue, http://seriss.com/rush/ Tel: (Tel# suppressed)ext.23 Fax: (Tel# suppressed) Cel: (Tel# suppressed) *** ***************************************************** *** Message #2117 ***************************************************** *** ***************************************************** Subject: Re: specify number of cpus per machine From: Greg Ercolano Date: Thu, 18 Aug 2011 23:34:37 -0400 On 08/18/11 19:32, Gary Jaeger wrote: > I can't recall how to submit this. Suppose all the machines in the group > "fubar" have two physical procs, but we only want to submit to 10 > machines, and have each of the machines only use a single proc? That would be +fubar=10.1 The docs for the 'cpus' submit command cover all the possible syntax for this field: http://www.seriss.com/rush-current/rush/rush-submit-cmds.html#Cpus I should probably make sure all the "?" buttons for the "Cpus" fields in the submit form cover all these options as well. -- Greg Ercolano, erco@(email surpressed) Seriss Corporation Rush Render Queue, http://seriss.com/rush/ Tel: (Tel# suppressed)ext.23 Fax: (Tel# suppressed) Cel: (Tel# suppressed) *** ***************************************************** *** Message #2116 ***************************************************** *** ***************************************************** Subject: specify number of cpus per machine From: Gary Jaeger Date: Thu, 18 Aug 2011 22:32:57 -0400 I can't recall how to submit this. Suppose all the machines in the group = "fubar" have two physical procs, but we only want to submit to 10 = machines, and have each of the machines only use a single proc?=20 . . . . . . . . . . . . Gary Jaeger // Core Studio 86 Graham Street, Suite 120 San Francisco, CA 94129 (Tel# suppressed) http://corestudio.com=09 *** ***************************************************** *** Message #2115 ***************************************************** *** ***************************************************** Subject: [Q+A] Managing multiple Nuke versions, and how do submit scripts From: Greg Ercolano Date: Fri, 05 Aug 2011 11:42:44 -0400 > Is there a way to have the rush submit scripts run different > versions of Nuke? I would suggest instead making separate copies of the submit-nuke script (eg. submit-nuke-63v2, submit-nuke-62v1, etc), and modify the env variable settings at the top of each to run that particular version of nuke. This way the user can control which version of nuke is used by running the appropriate submit script. > We use different versions of Nuke for different productions, > but all running on the farm concurrently. Is there a way to > have it run the version of Nuke the user is using? If you've hot wired nuke to have a 'Rush' pulldown menu in it for submitting jobs, eg: http://seriss.com/cgi-bin/rush/newsgroup-threaded.cgi?-view+1973+1971+1972+1973+1974+1991+1992+1993 ..then you can include logic in that code to determine the current nuke version, and to then invoke the correct submit-nuke-xxx script (described above). > I was looking at the submit-nuke example program, and am curious > how Rush identifies the job being submitted is a 'Maya' job, > and not a Nuke job, or some other renderer. Does it check > the extensions for .ma and .nk to determine this? The submit-maya script submits itself to run on the farm, so it's constructed to run maya. 'Rush' itself (the C++ code) does not know about any of the renderers; it just runs commands and manages the queue. The submit scripts do all the work of running the different renderers. These scripts submit themselves (ie. use recursion) to do the work, and therefore are self contained to handle all the logic for both submitting and rendering jobs. So no, it does not look at the extension, but rather, it depends on which submit script the user invoked that determines what type of job is being rendered, and what renderer to use. Here's some info on how the mechanics of these submit scripts work. The submit scripts for maya (both perl and python) work the same way, and have several sections (functions) that do different types of work: def MAIN_Input(): -- this brings up the submit form def MAIN_Submit(): -- this handles when the user hits 'Submit' in the form def MAIN_Render(): -- this handles rendering frames on all the machines When you run the submit script to bring up the interface, it runs MAIN_Input(). This constructs a form, and sets up the 'Submit' button to run itself with "-submit" as a command line option. When the user hits 'Submit', it invokes the script again with the -submit flag which invokes the MAIN_Submit() code. This parses the form and tells rush to submit the job, using itself as the command to run on all the machines, but passing a "-render" flag (instead of -submit). Whenever a processor becomes available on the remotes, rush invokes the script with the -render flag which runs the MAIN_Render() code, which in the case of submit-maya constructs a maya command to render the scene, and uses the RUSH_FRAME environment variable (passed from rush) to determine which frame(s) to render. The script has a few other routines, like MAIN_ImgCommand() which is invoked whenever someone middle-clicks on a frame in irush, which determines how to bring up an image viewer to show the rendered image. There's also MAIN_Defaults() which is invoked when the user hits the 'Defaults' button in the submit form to clear out the form. Rush itself knows nothing about the submit scripts. The scripts use rush the way a csh script might use rsh(1) to run itself on some other machine. 'Rush' is just a glorified rsh(1) with priorities and the concept of frames, error logging, and some other goodies tied in. This is why you can write your own submit scripts that are very simple and use other scripting languages. Rush (the core utility) has no ties to any specific scripting language; you can use csh, python, ruby, etc. For examples of simple submit scripts in other scripting languages, see: http://www.seriss.com/rush-current/rush/rush-submit.html *** ***************************************************** *** Message #2114 ***************************************************** *** ***************************************************** Subject: Rush 102.42a9d runs verified to operate normally on Lion (OSX 10.7) From: Greg Ercolano Date: Wed, 03 Aug 2011 20:30:24 -0400 Rush verified to run normally on Apple's new operating system, Lion (OSX 10.7). Installs and runs normally. If there are any caveats, please follow up to this thread in the rush.general newsgroup/mailing list. *** ***************************************************** *** Message #2113 ***************************************************** *** ***************************************************** Subject: [Q+A] After Effects: Is there a way to open the Rush submit form From: Greg Ercolano Date: Thu, 07 Jul 2011 17:38:55 -0400 > Is there a way to open the 'submit-afterfx' form from within > the Mac OSX version of After Effects? (We're using CS5) > > We'd like it so that the submit form opens with the Scene File, > Frames, Comp Name, etc. all preset, so that in most cases > the user can just hit 'Submit' to submit the job without filling > out any of the fields. Yes; many folks have been writing their own AE scripts to do this. Here's one that Simon Bjork and I have worked together on. To install it: 1) Save the below script as 'Rush.jsx' in the 'Scripts' directory of Adobe After Effects. So for example: OSX with AE CS5, save it as: /Applications/Adobe After Effects CS5/Scripts/Rush.jsx (Make sure your newsreader doesn't line-wrap the script; make your reader window as wide as possible before copy/pasting!) 2) Customize the settings at the top of the script for your network (eg. the section "USER VARIABLES: CHANGE THESE!!!") At very least, you'll need to change this setting: var SCRIPT = "/your/server/rushscripts/submit-afterfx.pl"; // path to submit-afterfx.pl on your server ------------------------------------------ ..to be the path to the submit-afterfx.pl script that is on your file server. To use this script: 1) Run After Effects. 2) Load a scene file that you want to render, and optionally make changes as needed. 3) When you want to render the scene, go into the AE menubar to run the new Rush.jsx script: File > Scripts > Rush.jsx This will open the submit-afterfx.pl form with the currently loaded scene file, frame range, and comp. Feel free to modify the script to taste. Some of the code is optional, eg. forcing the Cpus: to a certain value, setting the Job Title (normally the script does this if you leave the title blank). Be sure to make the minimum modifications described above, otherwise the submit form won't open at all. This script should work in all Mac versions of AE from 6.5 on up to CS5, and beyond. As written, the script is OSX oriented, but it can be modified to work under Windows as well if you modify the "> /dev/null" lines accordingly. I, or possibly someone else here can follow up with a version that works for both OSX and Windows. (The trick is to make sure the submit form doesn't freeze up the AE interface). What follows is the Rush.jsx script: /////////////////////////////////////////////////////////////////////// // Rush.jsx // // This script brings up the submit-afterfx interface from within AfterFX // with the values for scene file, frame range, compname, etc. preset in the form. // // To install, save this script as "/Applications/Adobe After Effects/Scripts/Rush.jsx" // It will then automatically show up in the Files -> Scripts menu of AE. // // TODO: Currently supports Mac OSX only. Should be modified to support Windows. // // by Simon Bjork with the help of Greg Ercolano. // Based on a Nuke script by Greg Ercolano. // // February 2011. Version 1.4 -- Simon Bjork and Greg Ercolano // July 2011. Version 1.5 -- Greg Ercolano -- added check if no scene loaded, code cleanup // /////////////////////////////////////////////////////////////////////// //// USER VARIABLES: CHANGE THESE!!! // CUSTOMIZE THIS PATHNAME FOR YOUR ENVIRONMENT // | // \|/ // v var SCRIPT = "/your/server/rushscripts/submit-afterfx.pl"; // path to submit-afterfx.pl on your server var CPUS = "+any=5@100"; // default cpu specification var BATCH = 5; // default frame batching value //////////////////////////////////// // See if scene file is loaded if ( ! app.project.file ) { // No scene file loaded? Just open default submit form alert("No scene file loaded.\n" + "Using previously rendered submit defaults."); // Run submit script with no arguments. Assume defaults from last submit. var cmd = "perl " + SCRIPT + " " + " > /dev/null 2>&1 < /dev/null &"; var out = system.callSystem(cmd); } else { // Scene file loaded? Get scene filename, frame range, comp name, etc. var mycomp = app.project.activeItem; // The comp to be submitted. var projectPath = app.project.file.fsName.toString(); // Path of current AE project file. app.project.timecodeDisplayType = TimecodeDisplayType.FRAMES; // Sets time code display to frames. // Start and End frames of workarea in frames. var wa_start = mycomp.workAreaStart; var wa_end = mycomp.workAreaDuration + wa_start; var sfrm = timeToCurrentFormat(wa_start, mycomp.frameRate, false); var efrm = timeToCurrentFormat(wa_end, mycomp.frameRate, false); sfrm = parseFloat(sfrm); efrm = parseFloat(efrm); // Name of AE project file and remove .aep extension. var aeproj = app.project.file.name.replace(/%20/gi," "); var aeproj_no_ext = aeproj.substring(0,aeproj.length-4); var jobtitle = aeproj_no_ext; var compname = mycomp.name; // Run submit script var cmd = "perl " + SCRIPT + " " + "-field JobTitle: " + jobtitle + " " + "-field Frames: " + sfrm + "-" + efrm + " " + "-field ScenePath: " + projectPath + " " + "-field CompName: \"" + compname + "\" " + "-field BatchFrames: " + BATCH + " " + "-field Cpus: \"" + CPUS + "\" " + " > /dev/null 2>&1 < /dev/null &"; var out = system.callSystem(cmd); } /// END: Rush.jsx *** ***************************************************** *** Message #2112 ***************************************************** *** ***************************************************** Subject: [SYSADMIN Q+A] How to use Rush to run one command on each machine From: Greg Ercolano Date: Tue, 05 Jul 2011 20:05:49 -0400 > I'd like to use Rush to run a single command once on each > of the Macs on our network to run some administrative commands. > > Is there a way to use rush to run a command once, and only once, > on each machine? Yes, you can do this either with a custom submit script (see example below) or with submit-generic. To ensure rush only runs the command once on each machine: 1) Submit with cpus set to include ".1" as part of the cpu specification to prevent parallel execution (eg. +any=100.1) 2) Follow the command you want to run with 'rush -an localhost' so it doesn't run your command more than once on each machine. 3) Submit the job with just enough frames for each machine to run on. So for instance, here's a script with some variables at the top. When you run this script, it submits itself to run $CMDS on all the machines in $HOSTGROUP at priority $PRIORITY using $LOGDIR to log the output. -------------------------------------------------------- snip: START #!/usr/bin/perl -w use strict; $|=1; ### ### ### CHANGE THESE! ### ### ### my $LOGDIR = "//net/tmp/logs"; # empty dir on file server my $TITLE = "RUN_ONCE"; # title of job my $HOSTGROUP = "+any"; # hostgroup to run commands on my $PRIORITY = "100"; # priority of job my $CMDS = "hostname; id"; # command(s) to run # RETURN HOW MANY HOSTS ARE IN THE SPECIFIED HOSTGROUP sub NumHostsInHostGroup($) { my ($hostgroup) = @_; my @hosts = `rush -lhg $hostgroup`; return($#hosts); } ### MAIN # NO ARGS? SUBMIT JOB if ( ! defined($ARGV[0]) ) { if ( defined($ENV{RUSH_ISDAEMON}) ) { exit(1); } # Prevent worms if ( ! -d $LOGDIR ) { # create log directory if none unless(mkdir($LOGDIR, 0777)) { print STDERR "mkdir ${LOGDIR}: $!\n"; exit(1); } } my $numhosts = NumHostsInHostGroup($HOSTGROUP); # SUBMIT JOB open(SUBMIT, "|rush -submit"); print SUBMIT <<"EOF"; title ${TITLE} frames 1-${numhosts} logdir ${LOGDIR} command perl ${0} -render cpus ${HOSTGROUP}=${numhosts}.1\@${PRIORITY} EOF close(SUBMIT); if ( $? >> 8 ) { print STDERR "--- Submit failed\n"; exit(1); } exit(0); } # ARG IS "-render"? RUNNING ON REMOTE MACHINE if ( $ARGV[0] eq "-render" ) { print "--- Working on frame $ENV{RUSH_FRAME}\n"; my $err = system($CMDS); system("rush -an $ENV{RUSH_HOSTNAME}"); # add this machine to neverhosts for job exit( $err == 0 ? 0 : 1 ); # Fail if commands returned non-zero } -------------------------------------------------------- snip: END Note: If you want to run things as root, you'd have to either use sudo or a setuid shell, as rush won't allow you to submit jobs as root. *** ***************************************************** *** Message #2111 ***************************************************** *** ***************************************************** Subject: Re: Python Library Paths From: Greg Ercolano Date: Fri, 10 Jun 2011 16:34:48 -0400 On 06/10/11 13:14, Daniel Browne wrote: > [posted to rush.general] > > Hi to all the python experts on the list, > > We try to centralize scripts and libraries on our NAS-based NFS shares. On= > e issue I've encountered which I'm not sure how to resolve is creating a ne= > twork based python library, i.e. "/NFS/Python/" and have all of the sub dir= > ectories within it be automatically traversed and searched for modules to l= > oad. At the moment any sub-directories (i.e. /NFS/Python/2.6 or /NFS/Pyth= > on/common) have to be appended explicitly with sys.path.append(). From what= > I have read this appears to be an inherent "safety" feature of Python, but= > is there a way to override it without having to alter config files on each= > individual client machine? From a programming and maintenance standpoint i= > t's incredibly inconvenient to have to do so many explicit appends or make = > constant additions to the PYTHONPATH environment variable. I can't weigh in on the safety features of python (you might want to ask on one of the python forums about this). But if you want the PYTHONPATH variable to be initialized at render time before python is executed, I'd consider two approaches that should be relatively easy to maintain from a sysadmin's point of view: 1) If the target machines are unix, modify the rush/etc/S99rush boot script to set the PYTHONPATH environment variable. Restart the daemon for the change to take effect. 2) If the target machines are windows, you can change environment variables with the 'setenv' command that comes with rush (c:\rush\etc\bin\setenv.exe). In fact, the install.bat script uses this program to add rush to the system PATH. Just run that program without any arguments to see its usage. (C source code was included for this public domain program, in case you're curious) The other way to approach this would be to write a wrapper script that sets the variable before executing the python script. -- Greg Ercolano, erco@(email surpressed) Seriss Corporation Rush Render Queue, http://seriss.com/rush/ Tel: (Tel# suppressed)ext.23 Fax: (Tel# suppressed) Cel: (Tel# suppressed) *** ***************************************************** *** Message #2110 ***************************************************** *** ***************************************************** Subject: Python Library Paths From: Daniel Browne Date: Fri, 10 Jun 2011 16:14:49 -0400 Hi to all the python experts on the list, We try to centralize scripts and libraries on our NAS-based NFS shares. On= e issue I've encountered which I'm not sure how to resolve is creating a ne= twork based python library, i.e. "/NFS/Python/" and have all of the sub dir= ectories within it be automatically traversed and searched for modules to l= oad. At the moment any sub-directories (i.e. /NFS/Python/2.6 or /NFS/Pyth= on/common) have to be appended explicitly with sys.path.append(). From what= I have read this appears to be an inherent "safety" feature of Python, but= is there a way to override it without having to alter config files on each= individual client machine? From a programming and maintenance standpoint i= t's incredibly inconvenient to have to do so many explicit appends or make = constant additions to the PYTHONPATH environment variable. Thanks, -Dan ---------- Dan "Doc" Browne System Administrator Evil Eye Pictures dbrowne@(email surpressed) Office: (415) 777-0666 x105 *** ***************************************************** *** Message #2109 ***************************************************** *** ***************************************************** Subject: [WINDOWS/SYSADMIN] Adding users + disabling UAC from DOS From: Greg Ercolano Date: Wed, 08 Jun 2011 03:34:53 -0400 (Thanks to Payam @ GPLSolutions for these) Apparently one can fully automate creating a user from the DOS command line now, including being able to disable password expiration. So to create an administrative user named 'render' with the non-expiring password 'render7', you can use: net user render render7 /add # creates user account + password net localgroup administrators render /add # makes user administrator wmic useraccount where "Name='render'" set PasswordExpires=FALSE # disable password expiration I've verified this works on Win7. This is very handy if you want to make a script that you can run on 100 machines to create a local user, then configure the rushd service to run as that user. Apparently too, you can disable the UAC before running the rush install script from DOS as well. Something you'd want to do if installing on Win7 or Vista: %windir%\System32\reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f (I haven't verified that last one; just passing it on) *** ***************************************************** *** Message #2108 ***************************************************** *** ***************************************************** Subject: Re: GUI Elements From: Greg Ercolano Date: Tue, 07 Jun 2011 01:58:24 -0400 On 06/06/11 18:46, Daniel Browne wrote: > Thanks Greg. I actually had to go back to using a regular input field due > to the way data is passed to the input routine in this script. Can you describe more of what you're doing? Maybe include some examples and such. > I was not able to get the input engine to recognize the [gui] elements > (i.e. box {}) directly. Take a look at the rush/examples/input-example.pl or for python, the rush/examples/input-example.py These show simple examples of how the input elements work. Some of the older submit scripts still use the raw input command language instead of the ascii art stuff, eg. submit-arnold.pl. Search that file for "Arnold-Submit" and you'll find the beginning of the input command file. Also, you can find the raw input command language generated from the ascii art as ~/.rush/submit-xxxx.in You can then take this, paste it into a python script and modify it to taste, and pass it to the input program to customize. For instance, when I run submit-maya.pl, I end up with: ------------------------------------------------------- $ ls -la ~/.rush/submit-maya.in -rw-rw-rw- 1 root root 18076 Jun 6 12:30 /root/.rush/submit-maya.in $ more ~/.rush/submit-maya.in window { name "Rush Maya Submit" xysize 720 546 color 49 resizable menubar scroll 1 saveid "Maya-Submit" } xy 150 25 # EMPTY 'SEPARATOR' BOX box { align 0 type 0 # use '1' for debugging color 0 xywh 0 25 8 8 } [..] ------------------------------------------------------- ..and to bring up the input interface for that file, I can run: ------------------------------------------------------- $ /usr/local/rush/examples/bin/input -d ~/.rush/submit-maya.in ------------------------------------------------------- ..and the interface pops up. -- Greg Ercolano, erco@(email surpressed) Seriss Corporation Rush Render Queue, http://seriss.com/rush/ Tel: (Tel# suppressed)ext.23 Fax: (Tel# suppressed) Cel: (Tel# suppressed) *** ***************************************************** *** Message #2107 ***************************************************** *** ***************************************************** Subject: Re: GUI Elements From: Daniel Browne Date: Mon, 06 Jun 2011 21:46:51 -0400 Thanks Greg. I actually had to go back to using a regular input field due t= o the way data is passed to the input routine in this script. I was not abl= e to get the input engine to recognize the guy elements (i.e. box {}) direc= tly. How do I create a custom launcher app? The included ones seem to break when= I duplicate and edit them. On Jun 6, 2011, at 12:26 PM, Greg Ercolano wrote: [posted to rush.general] On 06/06/11 12:05, Daniel Browne wrote: > Is there a guide anywhere to the various specifiers/placeholders you use = in=3D > your submit script GUI's? Yes, the 'input' program's command language is documented here: http://www.seriss.com/rush-current/input/ ..however, it /doesn't/ cover the new 'ascii art' format that I've been using in the last few years, which gets converted into the above command language by a large block of logic in .common.pl. All that ascii art stuff (eg. <>, etc) was developed to simplify the specification of the input forms, and was never documented, it was just kind of 'developed'. I figured anyone wanting to customize the input forms would either just add simple fields, or rewrite the GUI in a more flexible GUI builder, like pyqt + qtdesigner, or pyfltk. I'll try to follow up to this thread, though, with a description of the 'ascii art' placeholders. If you're writing python code, and want to make your own 'ascii art' forms, you may want to use the new input program (that will be in the next release) which I can provide you that handles reading the 'ascii art' forms directly, instead of needing all that perl logic in .common.pl to convert it. I was confronted with that issue when I did the python port of submit maya, and modified the input program to parse the ascii art stuff directly, so that both python and perl (and other languages) could make ascii art forms easily. > I have our Maya (python) submit set up to render=3D > from a copy of the scene file, but I want to show the user based on the s= c=3D > ene file's location where the render copy will be made. I can do this wit= h =3D > the locals() format substitution done for the submit form, but the only p= la=3D > ceholder for text within a form I can find that works is <>. Wit= ho=3D > ut it, the text by itself doesn't show because its hidden behind the tab = la=3D > yout. Note that blank lines allow you to add 'vertical space' into the form. If you email me directly your code that generates the form and the screen shot showing the problem, I can surely help you get it to work right. --=20 Greg Ercolano, erco@(email surpressed) Seriss Corporation Rush Render Queue, http://seriss.com/rush/ Tel: (Tel# suppressed)ext.23 Fax: (Tel# suppressed) Cel: (Tel# suppressed) ---------- Dan "Doc" Browne System Administrator Evil Eye Pictures dbrowne@(email surpressed) Office: (415) 777-0666 x105 *** ***************************************************** *** Message #2106 ***************************************************** *** ***************************************************** Subject: Re: GUI Elements From: Greg Ercolano Date: Mon, 06 Jun 2011 15:26:14 -0400 On 06/06/11 12:05, Daniel Browne wrote: > Is there a guide anywhere to the various specifiers/placeholders you use in= > your submit script GUI's? Yes, the 'input' program's command language is documented here: http://www.seriss.com/rush-current/input/ ..however, it /doesn't/ cover the new 'ascii art' format that I've been using in the last few years, which gets converted into the above command language by a large block of logic in .common.pl. All that ascii art stuff (eg. <>, etc) was developed to simplify the specification of the input forms, and was never documented, it was just kind of 'developed'. I figured anyone wanting to customize the input forms would either just add simple fields, or rewrite the GUI in a more flexible GUI builder, like pyqt + qtdesigner, or pyfltk. I'll try to follow up to this thread, though, with a description of the 'ascii art' placeholders. If you're writing python code, and want to make your own 'ascii art' forms, you may want to use the new input program (that will be in the next release) which I can provide you that handles reading the 'ascii art' forms directly, instead of needing all that perl logic in .common.pl to convert it. I was confronted with that issue when I did the python port of submit maya, and modified the input program to parse the ascii art stuff directly, so that both python and perl (and other languages) could make ascii art forms easily. > I have our Maya (python) submit set up to render= > from a copy of the scene file, but I want to show the user based on the sc= > ene file's location where the render copy will be made. I can do this with = > the locals() format substitution done for the submit form, but the only pla= > ceholder for text within a form I can find that works is <>. Witho= > ut it, the text by itself doesn't show because its hidden behind the tab la= > yout. Note that blank lines allow you to add 'vertical space' into the form. If you email me directly your code that generates the form and the screen shot showing the problem, I can surely help you get it to work right. -- Greg Ercolano, erco@(email surpressed) Seriss Corporation Rush Render Queue, http://seriss.com/rush/ Tel: (Tel# suppressed)ext.23 Fax: (Tel# suppressed) Cel: (Tel# suppressed) *** ***************************************************** *** Message #2105 ***************************************************** *** ***************************************************** Subject: GUI Elements From: Daniel Browne Date: Mon, 06 Jun 2011 15:05:28 -0400 Hi Greg, Is there a guide anywhere to the various specifiers/placeholders you use in= your submit script GUI's? I have our Maya (python) submit set up to render= from a copy of the scene file, but I want to show the user based on the sc= ene file's location where the render copy will be made. I can do this with = the locals() format substitution done for the submit form, but the only pla= ceholder for text within a form I can find that works is <>. Witho= ut it, the text by itself doesn't show because its hidden behind the tab la= yout. -Dan ---------- Dan "Doc" Browne System Administrator Evil Eye Pictures dbrowne@(email surpressed) Office: (415) 777-0666 x105 *** ***************************************************** *** Message #2104 ***************************************************** *** ***************************************************** Subject: Re: -1 added to mounted AFP volumes OS X From: Greg Ercolano Date: Tue, 31 May 2011 17:49:57 -0400 On 05/31/11 13:15, Gary Jaeger wrote: >> You can configure mounts with a boot script using e.g. this technique: >> http://seriss.com/cgi-bin/rush/newsgroup-threaded.cgi?-view+1847+1847 > > Thanks Greg. I'm going to try this. I'm sure I'll break something :) Feel free to contact me directly if you have specific problems, and I can follow up to that thread with details. PS. One thing you might want to do in the mount flags is include sec=sys to ensure kerberos isn't used, eg: Mount 192.168.1.14:/net /meade/net "intr,bg,sec=sys" ^^^^^^^ I know some folks have seen kerberos errors on Mac NFS servers when they didn't think they had kerberos enabled. According to 'man mount_nfs', the docs for sec= says: "When this option [sec=] is not given the security mechanism will be negotiated transparently with the remote server." ..which I take to mean 'anything can happen', so it's probably best to disable kerberos in the mount flag by setting it to 'sys'. See also: "Mac OS X Server version 10.5: About Kerberized NFS" http://support.apple.com/kb/TA24986?viewlocale=en_US -- Greg Ercolano, erco@(email surpressed) Seriss Corporation Rush Render Queue, http://seriss.com/rush/ Tel: (Tel# suppressed)ext.23 Fax: (Tel# suppressed) Cel: (Tel# suppressed) *** ***************************************************** *** Message #2103 ***************************************************** *** ***************************************************** Subject: Re: -1 added to mounted AFP volumes OS X From: Gary Jaeger Date: Tue, 31 May 2011 16:15:13 -0400 Thanks Greg. I'm going to try this. I'm sure I'll break something :) On May 31, 2011, at 10:53 AM, Greg Ercolano wrote: > You can configure mounts with a boot script using e.g. this technique: > http://seriss.com/cgi-bin/rush/newsgroup-threaded.cgi?-view+1847+1847 . . . . . . . . . . . . Gary Jaeger // Core Studio 86 Graham Street, Suite 120 San Francisco, CA 94129 (Tel# suppressed) http://corestudio.com *** ***************************************************** *** Message #2102 ***************************************************** *** ***************************************************** Subject: Re: -1 added to mounted AFP volumes OS X From: Greg Ercolano Date: Tue, 31 May 2011 13:53:15 -0400 On 05/31/11 10:14, Gary Jaeger wrote: > /Volumes/bar > /Volumes/bar-1 Yes, I've seen that behavior since I first started messing with OSX back in version 10.1, and it persists. Very annoying! It's one of the many reasons I don't trust apple's automated behaviors for mounting drives. I googled for 'osx duplicate mounts' and found a few things: http://support.apple.com/kb/TS2474 http://superuser.com/questions/20879/how-to-remove-duplicate-ghost-network-drive-on-os-x https://discussions.apple.com/message/6958171?messageID=6958171 It's probably either the Finder or Automounter or both working together to be the cause, but I never actually tracked this down. If you find its manual interaction in the Finder causes this, like say the user invoking 'Connect to' even though the drive is already mounted, there's a 'defaults' command that lets you disable the Finder's 'Connect to' feature. (This assumes you have some other approach in place that mounts the server for you, eg. a boot script that mounts the drives on startup) There's a whole list of 'defaults' commands here: http://secrets.blacktree.com/?show=all (Note the 'More' link at the bottom of that page) The one I'm talking about would be "prohibit use of Connect To", ie: defaults write com.apple.finder ProhibitConnectTo -boolean [YES|NO] I haven't tested this myself, but it might be worth some experimenting. If you don't like the automounter, you can disable it via the /etc/hostconfig: AUTOMOUNT=no. This disables the automounter from starting on boot. (Not sure if the automounter is the cause though) You can configure mounts with a boot script using e.g. this technique: http://seriss.com/cgi-bin/rush/newsgroup-threaded.cgi?-view+1847+1847 -- Greg Ercolano, erco@(email surpressed) Seriss Corporation Rush Render Queue, http://seriss.com/rush/ Tel: (Tel# suppressed)ext.23 Fax: (Tel# suppressed) Cel: (Tel# suppressed) *** ***************************************************** *** Message #2101 ***************************************************** *** ***************************************************** Subject: -1 added to mounted AFP volumes OS X From: Gary Jaeger Date: Tue, 31 May 2011 13:14:11 -0400 not strictly a rush question but I 'm hoping somebody here has the = answer.=20 Why does OS X sometimes add a -1 to a mounted volume name? It hits us = when using rush and boxes on the farm naturally can't resolve /server/foo/bar-1/submit-maya.pl when the correct path should be: /server/foo/bar-1/submit-maya.pl artists can't see it in the finder. i.e the share appears to the correct = name. But if you look at it in terminal it shows up with the -1 = attached. Indeed if we inspect /Volumes we see the duplicate names.=20 /Volumes/bar /Volumes/bar-1 . . . . . . . . . . . . Gary Jaeger // Core Studio 86 Graham Street, Suite 120 San Francisco, CA 94129 (Tel# suppressed) http://corestudio.com=09 *** ***************************************************** *** Message #2100 ***************************************************** *** ***************************************************** Subject: Re: [Q+A] Handling of quoting in render commands From: Greg Ercolano Date: Wed, 11 May 2011 13:32:19 -0400
Greg Ercolano wrote:
> command   "//some/path with spaces/myrender.exe" "one two" "three four"
> [..]
>     ..then it would run on the farm as you'd expect, and with
>     argv[1] set to "one two",
>     argv[2] set to "three four"
> 
>     If you find you need to embed backslashes or quotes,
>     you can escape them with the backslash character, eg:
> 
> command "//some/path/myrender.exe" "This is a quote(\")" "This is a backslash(\\)"
> 
>     This behavior is handled by the WIN32 call CreateProcess(),
>     which is documented here (*):
>     http://msdn.microsoft.com/en-us/library/ms682425%28v=vs.85%29.aspx
  
   Actually, it seems to be more complicated than that.
   This complexity is not my fault! ;) It's how Microsoft works.

   CreateProcess() handles quotes around the command only,
   and the Microsoft C library handles quotes around arguments
   with its own separate rules for quoting and escaping.

   So in other words:

      "//some/path/myrender.exe" "This is a quote(\")" "This is a backslash(\\)"
      \________________________/ \_____________________________________________/
         CreateProcess()                     Microsoft C Library
         quoting rules.                        quoting rules.

   The CreateProcess() rules for quoting are relatively simple (*):
   http://msdn.microsoft.com/en-us/library/ms682425%28v=vs.85%29.aspx

   The Microsoft C Library quoting rules for quoting are more complex (**):
   http://msdn.microsoft.com/en-us/library/a1y7w461.aspx

   The CreateProcess() docs simply say double quotes can be used to protect
   spaces in the command, nothing about backslash quoting, or escaping quotes.

   The Microsoft C Library handles argument quoting at the time the
   command is invoked, and since just about everything you run is a
   C/C++ program (perl, python, cmd, maya, nuke, etc), those rules are
   followed for argument parsing.

   I'm quoting their docs verbatim here, as this directly affects
   how the Rush render command's arguments are interpreted on windows machines:

--- quote

    * Arguments are delimited by white space, which is either a space or a tab.

    * A string surrounded by double quotation marks is interpreted as a single
      argument, regardless of white space contained within. A quoted string can
      be embedded in an argument. Note that the caret (^) is not recognized as an
      escape character or delimiter.

    * A double quotation mark preceded by a backslash, \", is interpreted as a
      literal double quotation mark (").

    * Backslashes are interpreted literally, unless they immediately precede
      a double quotation mark.

    * If an even number of backslashes is followed by a double quotation mark,
      then one backslash (\) is placed in the argv array for every pair of
      backslashes (\\), and the double quotation mark (") is interpreted as a
      string delimiter.

    * If an odd number of backslashes is followed by a double quotation mark,
      then one backslash (\) is placed in the argv array for every pair of
      backslashes (\\) and the double quotation mark is interpreted as an
      escape sequence by the remaining backslash, causing a literal double
      quotation mark (") to be placed in argv.

--- snip

	My brain imploded somewhere on that fifth or sixth paragraph,
        but hopefully some of you can benefit from this. YMMV.

	If you can't get the above working, your best bet is to just
	empirically try escaping variations until it works.

        Or, /avoid/ the problem completely and don't specify complex info
	on the command line; throw your arguments into a file, and pass the
	file as the only argument to your render script, so it can load the
	file and get the data unmolested by the above parsing rules.


(*)  If the "CreateProcess" link goes stale, search MSDN for CreateProcess.

(**) If the "Microsoft C Library Parsing" link goes stale, search MSDN
     for "Parsing C Command-Line Arguments".

*** ***************************************************** *** Message #2099 ***************************************************** *** ***************************************************** Subject: [Q+A] Handling of quoting in render commands From: Greg Ercolano Date: Wed, 11 May 2011 12:38:36 -0400 > What's the syntax of quoting for the render command? > (in other words, the "command" passed to 'rush -submit') > > We'd like to invoke commands whose arguments contain spaces. > We're on windows. There are a few ways. IMHO, the most portable is to convert all spaces in arguments into the ascii DEL character before submit, and then have the render script convert them back. So for instance on submit, say we want to run: perl /path/to/myscript.pl -render "one two" "three four five" ..on the farm. I'd suggest doing it this way: ---- snip $arg1 = "one two"; $arg2 = "three four five"; # Convert arg's spaces into DEL $arg1 =~ s/ /\x7f/g; $arg2 =~ s/ /\x7f/g; # Build command $command = "perl /path/to/myscript.pl -render $arg1 $arg2"; open(SUBMIT, "|rush -submit"); print SUBMIT << "EOF"; : command $command : ---- snip On submit, the spaces in the arguments will be the DEL character, and therefore won't be mistaken as argument delimiters. Then, when the render script runs on the farm, it first converts all the DEL's in the arguments back into spaces before using them, eg: for ( $t=0; $t<=$#ARGV; $t++ ) { $ARGV[$t] =~ s/\x7f/ /g; } This will get the arguments back the way they were, with spaces intact. There is another way, but it's Microsoft specific, and is something that Microsoft has not well documented, so I can't tell you much other than what my empirical tests show. Under Windows specifically, you can use double quotes (") to protect strings that contain spaces in the render commands, and the escape character (\) can be used to protect itself and quotes. So for example, if you were to submit the following: title QUOTE_TEST command "//some/path with spaces/myrender.exe" "one two" "three four" frames 1-10 cpus