1<?php 2/** 3 * DokuWiki Plugin dokudrawingboard (Action Component) 4 * 5 * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html 6 * @author dodotori <dodotori@localhost> 7 */ 8class action_plugin_dokudrawingboard extends \dokuwiki\Extension\ActionPlugin 9{ 10 11 /** @inheritDoc */ 12 public function register(Doku_Event_Handler $controller) 13 { 14 $controller->register_hook('TOOLBAR_DEFINE', 'AFTER', $this, 'handle_toolbar_define',array()); 15 $controller->register_hook('TPL_METAHEADER_OUTPUT', 'BEFORE', $this,'_hookjs'); 16 $controller->register_hook('ACTION_ACT_PREPROCESS', 'BEFORE', $this, 'allowMyAction'); 17 $controller->register_hook('TPL_ACT_UNKNOWN', 'BEFORE', $this, 'performMyAction'); 18 19 } 20 21 /** 22 * FIXME Event handler for 23 * 24 * @param Doku_Event $event event object by reference 25 * @param mixed $param optional parameter passed when event was registered 26 * @return void 27 */ 28 public function handle_toolbar_define(Doku_Event $event, $param) 29 { 30 $event->data[] = array ( 31 'type' => 'dokudrawingboard', 32 'title' => $this->getLang('qb_abutton'), 33 'icon' => '../../plugins/dokudrawingboard/drawingboard.png', 34 ); 35 } 36 public function _hookjs(Doku_Event $event, $param) { 37 $event->data['script'][] = array( 38 'type' => 'text/javascript', 39 'charset' => 'utf-8', 40 '_data' => '', 41 'src' => DOKU_BASE.'lib/plugins/dokudrawingboard/script.js'); 42 43 44 45 } 46 public function allowMyAction(Doku_Event $event, $param) { 47 if($event->data != 'dokudrawingboard') return; 48 $event->preventDefault(); 49 } 50 51 public function performMyAction(Doku_Event $event, $param) { 52 if($event->data != 'dokudrawingboard') return; 53 $event->preventDefault(); 54 55 // width =100% height = "1000 px" 56 57 echo'<button id="closedb" onclick ="window.close()">Back to Dokuwiki</button>'; 58 59 echo'<iframe id="drawingframe" width =100% height = "1000 px" allow="clipboard-read; clipboard-write" src="data:text/html;base64,PCFET0NUWVBFIGh0bWw+DQo8aHRtbD4NCjxoZWFkPg0KPHRpdGxlPiBEcmF3aW5nIGJvYXJkPC90aXRsZT4NCg0KPHN0eWxlPg0KLmRyYXdpbmctYm9hcmQsIC5kcmF3aW5nLWJvYXJkICogeyAtd2Via2l0LWJveC1zaXppbmc6IGNvbnRlbnQtYm94OyAtbW96LWJveC1zaXppbmc6IGNvbnRlbnQtYm94OyBib3gtc2l6aW5nOiBjb250ZW50LWJveDsgfQ0KDQouZHJhd2luZy1ib2FyZC11dGlscy1oaWRkZW4sIC5kcmF3aW5nLWJvYXJkLWNvbnRyb2xzLWhpZGRlbiB7IGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfQ0KDQouZHJhd2luZy1ib2FyZCB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgZGlzcGxheTogYmxvY2s7IH0NCg0KLmRyYXdpbmctYm9hcmQtY2FudmFzLXdyYXBwZXIgeyBwb3NpdGlvbjogcmVsYXRpdmU7IG1hcmdpbjogMDsgYm9yZGVyOiAxcHggc29saWQgI2RkZDsgfQ0KDQouZHJhd2luZy1ib2FyZC1jYW52YXMgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgbGVmdDogMDsgei1pbmRleDogMTA7IHdpZHRoOiBhdXRvOyB9DQoNCi5kcmF3aW5nLWJvYXJkLWNhbnZhcyB7IGN1cnNvcjogY3Jvc3NoYWlyOyB6LWluZGV4OiAyMDsgfQ0KDQouZHJhd2luZy1ib2FyZC1jdXJzb3IgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgbGVmdDogMDsgcG9pbnRlci1ldmVudHM6IG5vbmU7IGJvcmRlci1yYWRpdXM6IDUwJTsgYmFja2dyb3VuZDogI2NjYzsgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjIpOyB6LWluZGV4OiAzMDsgfQ0KDQouZHJhd2luZy1ib2FyZC1jb250cm9sID4gYnV0dG9uLCAuZHJhd2luZy1ib2FyZC1jb250cm9sLWNvbG9ycy1yYWluYm93cywgLmRyYXdpbmctYm9hcmQtY29udHJvbC1zaXplIC5kcmF3aW5nLWJvYXJkLWNvbnRyb2wtaW5uZXIsIC5kcmF3aW5nLWJvYXJkLWNvbnRyb2wtc2l6ZS1kcm9wZG93biB7IC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBvdmVyZmxvdzogaGlkZGVuOyBib3JkZXI6IG5vbmU7IGJhY2tncm91bmQtY29sb3I6ICNlZWU7IHBhZGRpbmc6IDJweCA0cHg7IGJvcmRlcjogMXB4IHNvbGlkICNjY2M7IGJveC1zaGFkb3c6IDAgMXB4IDNweCAtMnB4ICMxMjEyMTIsIGluc2V0IDAgMnB4IDVweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTsgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDFweCAzcHggLTJweCAjMTIxMjEyLCBpbnNldCAwIDJweCA1cHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7IGhlaWdodDogMjhweDsgfQ0KDQouZHJhd2luZy1ib2FyZC1jb250cm9sID4gYnV0dG9uIHsgY3Vyc29yOiBwb2ludGVyOyBtaW4td2lkdGg6IDI4cHg7IGxpbmUtaGVpZ2h0OiAxNHB4OyB9DQouZHJhd2luZy1ib2FyZC1jb250cm9sID4gYnV0dG9uOmhvdmVyLCAuZHJhd2luZy1ib2FyZC1jb250cm9sID4gYnV0dG9uOmZvY3VzIHsgYmFja2dyb3VuZC1jb2xvcjogI2RkZDsgfQ0KLmRyYXdpbmctYm9hcmQtY29udHJvbCA+IGJ1dHRvbjphY3RpdmUsIC5kcmF3aW5nLWJvYXJkLWNvbnRyb2wgPiBidXR0b24uYWN0aXZlIHsgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMnB4IDAgcmdiYSgwLCAwLCAwLCAwLjIpOyAtd2Via2l0LWJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDJweCAwIHJnYmEoMCwgMCwgMCwgMC4yKTsgYmFja2dyb3VuZC1jb2xvcjogI2RkZDsgfQ0KLmRyYXdpbmctYm9hcmQtY29udHJvbCA+IGJ1dHRvbltkaXNhYmxlZF0geyBjb2xvcjogZ3JheTsgfQ0KLmRyYXdpbmctYm9hcmQtY29udHJvbCA+IGJ1dHRvbltkaXNhYmxlZF06aG92ZXIsIC5kcmF3aW5nLWJvYXJkLWNvbnRyb2wgPiBidXR0b25bZGlzYWJsZWRdOmZvY3VzLCAuZHJhd2luZy1ib2FyZC1jb250cm9sID4gYnV0dG9uW2Rpc2FibGVkXTphY3RpdmUsIC5kcmF3aW5nLWJvYXJkLWNvbnRyb2wgPiBidXR0b25bZGlzYWJsZWRdLmFjdGl2ZSB7IGJhY2tncm91bmQtY29sb3I6ICNlZWU7IGJveC1zaGFkb3c6IDAgMXB4IDNweCAtMnB4ICMxMjEyMTIsIGluc2V0IDAgMnB4IDVweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTsgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDFweCAzcHggLTJweCAjMTIxMjEyLCBpbnNldCAwIDJweCA1cHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7IGN1cnNvcjogZGVmYXVsdDsgfQ0KDQouZHJhd2luZy1ib2FyZC1jb250cm9scyB7IG1hcmdpbjogMCBhdXRvOyB0ZXh0LWFsaWduOiBjZW50ZXI7IGZvbnQtc2l6ZTogMDsgZGlzcGxheTogdGFibGU7IGJvcmRlci1zcGFjaW5nOiA5LjMzMzMzcHggMDsgcG9zaXRpb246IHJlbGF0aXZlOyBtaW4taGVpZ2h0OiAyOHB4OyB9DQouZHJhd2luZy1ib2FyZC1jb250cm9sc1tkYXRhLWFsaWduPSJsZWZ0Il0geyBtYXJnaW46IDA7IGxlZnQ6IC05LjMzMzMzcHg7IH0NCi5kcmF3aW5nLWJvYXJkLWNvbnRyb2xzW2RhdGEtYWxpZ249InJpZ2h0Il0geyBtYXJnaW46IDAgMCAwIGF1dG87IHJpZ2h0OiAtOS4zMzMzM3B4OyB9DQouZHJhd2luZy1ib2FyZC1jYW52YXMtd3JhcHBlciArIC5kcmF3aW5nLWJvYXJkLWNvbnRyb2xzLCAuZHJhd2luZy1ib2FyZC1jb250cm9scyArIC5kcmF3aW5nLWJvYXJkLWNhbnZhcy13cmFwcGVyIHsgbWFyZ2luLXRvcDogNXB4OyB9DQoNCi5kcmF3aW5nLWJvYXJkLWNvbnRyb2xzLWhpZGRlbiB7IGhlaWdodDogMDsgbWluLWhlaWdodDogMDsgcGFkZGluZzogMDsgbWFyZ2luOiAwOyBib3JkZXI6IDA7IH0NCg0KLmRyYXdpbmctYm9hcmQtY29udHJvbCB7IGRpc3BsYXk6IHRhYmxlLWNlbGw7IGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IGZvbnQtc2l6ZTogMTZweDsgaGVpZ2h0OiAxMDAlOyB9DQoNCi5kcmF3aW5nLWJvYXJkLWNvbnRyb2wtaW5uZXIgeyBwb3NpdGlvbjogcmVsYXRpdmU7IGhlaWdodDogMTAwJTsgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OyAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH0NCg0KLmRyYXdpbmctYm9hcmQtY29udHJvbCA+IGJ1dHRvbiB7IG1hcmdpbjogMDsgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfQ0KDQouZHJhd2luZy1ib2FyZC1jb250cm9sLWNvbG9ycyB7IGZvbnQtc2l6ZTogMDsgbGluZS1oZWlnaHQ6IDA7IH0NCg0KLmRyYXdpbmctYm9hcmQtY29udHJvbC1jb2xvcnMtY3VycmVudCB7IGJvcmRlcjogMXB4IHNvbGlkICNjY2M7IGN1cnNvcjogcG9pbnRlcjsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogMjZweDsgaGVpZ2h0OiAyNnB4OyB9DQoNCi5kcmF3aW5nLWJvYXJkLWNvbnRyb2wtY29sb3JzLXJhaW5ib3dzIHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBtYXJnaW4tbGVmdDogNXB4OyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDA7IHRvcDogMzNweDsgbWFyZ2luLWxlZnQ6IDA7IHotaW5kZXg6IDEwMDsgd2lkdGg6IDI1MHB4OyBoZWlnaHQ6IGF1dG87IHBhZGRpbmc6IDRweDsgfQ0KDQouZHJhd2luZy1ib2FyZC1jb250cm9sLWNvbG9ycy1yYWluYm93IHsgaGVpZ2h0OiAxOHB4OyB9DQoNCi5kcmF3aW5nLWJvYXJkLWNvbnRyb2wtY29sb3JzLXBpY2tlcjpmaXJzdC1jaGlsZCB7IG1hcmdpbi1yaWdodDogNXB4OyB9DQoNCi5kcmF3aW5nLWJvYXJkLWNvbnRyb2wtY29sb3JzLXBpY2tlciB7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgd2lkdGg6IDE4cHg7IGhlaWdodDogMThweDsgY3Vyc29yOiBwb2ludGVyOyB9DQoNCi5kcmF3aW5nLWJvYXJkLWNvbnRyb2wtY29sb3JzLXBpY2tlcltkYXRhLWNvbG9yPSJyZ2JhKDI1NSwgMjU1LCAyNTUsIDEpIl0geyB3aWR0aDogMTZweDsgaGVpZ2h0OiAxN3B4OyBib3JkZXI6IDFweCBzb2xpZCAjY2NjOyBib3JkZXItYm90dG9tOiBub25lOyB9DQoNCi5kcmF3aW5nLWJvYXJkLWNvbnRyb2wtY29sb3JzLXBpY2tlcjpob3ZlciB7IHdpZHRoOiAxNnB4OyBoZWlnaHQ6IDE2cHg7IGJvcmRlcjogMXB4IHNvbGlkICM1NTU7IH0NCg0KLmRyYXdpbmctYm9hcmQtY29udHJvbC1kcmF3aW5nbW9kZSA+IGJ1dHRvbiB7IG1hcmdpbi1yaWdodDogMnB4OyB9DQouZHJhd2luZy1ib2FyZC1jb250cm9sLWRyYXdpbmdtb2RlID4gYnV0dG9uOmxhc3QtY2hpbGQgeyBtYXJnaW4tcmlnaHQ6IDA7IH0NCg0KLmRyYXdpbmctYm9hcmQtY29udHJvbC1kcmF3aW5nbW9kZS1wZW5jaWwtYnV0dG9uIHsgb3ZlcmZsb3c6IGhpZGRlbjsgKnRleHQtaW5kZW50OiAtOTk5OXB4OyBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBWUFBQUFmOC85aEFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBZTlKUkVGVWVOcGlaQUFDVmxGUkJoWVJFUVpjUVBuYk53YTNOMjhZbEw1K1pmZ0xGZnZQd0dEOW00RmhJZ3NESHVBTzBnVFVETktJQnZ5Qm1xdC9NVERNWThHbDBmMzFhekQ3TDZvVUl4Q25BeldtQVBIQmZ3d00wMUFNVUFWNkpmUFFJVndPWWdWcXFQbkZ5T2p6Ni8vL08zOFlHS3BBZ21BRDFPWGxHZFRrNVBENWhnZW91WnVkajgvdXk5ZXZQLzc4L2RzRkZQc0pOaUFvS0lpQkFCQUhhcDRvTGk5djhmVE5tNDgvL3Y3TkJ3YmdXWmdrRTdycXQ4RFkrQThKWlJCVytjZkl1RURUME5EbHphZFAzejk4L2RvUEZEdUNyQjdUQUdGaEJxQ05JR3dNOU9jS1V6czcreGR2MzM1NStmNzlWcURZQWlURHdaZ0poN09OZ1lwbk92bjRHTDk0OWVyVDdVZVBkZ0w1SlZDRDRmZ0JMQkJ4YVg3NCtQRzc4OWV2bndieTAvOGpLWGdFeEllQitDRzZBZi8vLzFlOUtpOXZGU0FrWlB6b3laUFBKeTlldkE5TUI3Ny9zV2lFQVJaa3pWKy9mdlhZdEduVHBHM2J0ajI4RUJUMEJxalo1RDhPalhDd1Brc1VoQTFXcGdnZi9QSGp4LzkxNjlZOUVCRVJhVWxnWm1hSUFjckxFNHJrNXNJcUJxRG1sZWZuUlB6ZldHWDVFYVNabTV1YmdSbG9BREdBNVFaM1JnSzdnRVNZNFBNTm45WnRPYlBwelp2ZlU0RGlZa2lCL1JjSEcrUzdmeXhBTUgvbEZVMkdPWmQyYkx4MTgvY0VVTW9ENGo5SStEY1MvUnRKSEdUWWY0QUFBd0F4YU9NWUhqeEtGd0FBQUFCSlJVNUVya0pnZ2c9PScpOyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA1MCUgNTAlOyBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OyB9DQouZHJhd2luZy1ib2FyZC1jb250cm9sLWRyYXdpbmdtb2RlLXBlbmNpbC1idXR0b246YmVmb3JlIHsgY29udGVudDogIiI7IGRpc3BsYXk6IGJsb2NrOyB3aWR0aDogMDsgaGVpZ2h0OiAxMDAlOyB9DQoNCi5kcmF3aW5nLWJvYXJkLWNvbnRyb2wtZHJhd2luZ21vZGUtZXJhc2VyLWJ1dHRvbiB7IG92ZXJmbG93OiBoaWRkZW47ICp0ZXh0LWluZGVudDogLTk5OTlweDsgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQWtwSlJFRlVlTnAwa2srSUVsRWN4Mzl2RkJjOStPZlFSVEF3ekZ0NENhWU9LU3RqNk1vZWN1bFN0em9JUVNCNGtDVmNrbUR4NGlHQ1hXWUpJcWpvVk96TzFsNHFUMUY3V2ZCV0h2eHpEUHlUQjNYVW1Ybjkzc3VSeWJVZmZIbVA5OTduOS9jUnNGZ3dHQVJKa2lBY0RzUGx3Z0VJZUVaUUFoQ1JBa2dBbE9ENlNRUDRyZ01GRFdWbllDQVFnRmdzQnFGUUNCd09CeXpaTlFPb3RQSHgxUk5DQ0NpcHU2YmZiK3pTbnNsa2VPUVZJTFByQmtBaXJid3M5YnRkVEVXQXpaUFhwZmVwT3phZUdNQlh3ZS8zdzMrTXdUYzNEbCtVZWdoVGlza2JCdlI2UGJoMThtWkhCMGpqbXh2Q0toSWZSMzdzM3IrU2V2ZjhjYS9UNFRCRjJIVFNPRHVEeFA3dU5qclpGRmJCazhsRXpPVnlzcGE0eWtHWXcyemZiVGIvN2lsdm9rMVlobFZWRmZQNXZEeWRUa0hYZFhEZGxoWk9PblBZNC9IQTBZUHRwM2g2TEZqaDhYZ3NGZ29GR1RQZ3NLbTF6RHI4YWpUUWg4Rmg1ZUdqWnpqR0k4eWpLbGdqRjR0RkdkZC9ZS1ltUmphMjRodyt6dTNzWWUySGlIM2hZelFqbDh0bGVUUWFuV3RvdTkzRzZRbmdkcnRoNisxKzloNmhUVUxKWi9QZXppSlhLaFY1T0J5ZWcxdXQxZ0pPcDlOWlRkTk9jUTQxOW90K2dncDFxb0xkQkZtcVZtTnBtM0E4SHVld3krV3ExUkg4UUg5em1CbEpKcE1SZENJcWlpSVBCZ04rMk1DR3NXL3I4L2tnR28xbTBmbXB6V2Fyc2VheUhsbU5lTDFlRmlXQzBjUnF0U3IzKy8zRnBTaUtITVp0alUxZ2xiRnlmS2dMVHFmekVrYTlPSnZOZURuenoxSm5DYUZtcU9sOFpkSlkxU2lET1hDaVhLZzFOdEc1REl0MHk2b3YzZEUvQWd3QUVORldZWUxqNG1ZQUFBQUFTVVZPUks1Q1lJST0nKTsgYmFja2dyb3VuZC1wb3NpdGlvbjogNTAlIDUwJTsgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsgfQ0KLmRyYXdpbmctYm9hcmQtY29udHJvbC1kcmF3aW5nbW9kZS1lcmFzZXItYnV0dG9uOmJlZm9yZSB7IGNvbnRlbnQ6ICIiOyBkaXNwbGF5OiBibG9jazsgd2lkdGg6IDA7IGhlaWdodDogMTAwJTsgfQ0KDQouZHJhd2luZy1ib2FyZC1jb250cm9sLWRyYXdpbmdtb2RlLWZpbGxlci1idXR0b24geyBvdmVyZmxvdzogaGlkZGVuOyAqdGV4dC1pbmRlbnQ6IC05OTk5cHg7IGJhY2tncm91bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFuTkpSRUZVZU5wMGswdHJFMUVVeDg5TUpwTkpvb1lZWEJnRE50Q0tkUlB3bGJxb0NLVXRhTlZOQTBVbzdVYk14b1ZQRUFSVFhFaStRV2Zud242REVBbEVrclNMdHRUR1JpVUxFUWxKOHlDaG1iekkrK0U1MHlUVUpBNzh1TXk5NTMvdS81NTdMbU96MldERVoybTFXcmNrU1JKU3FkUjJ0VnJkSFF5WWVid0h0Vm9OdUZIcVRxY3poUW5XS2FCWUxEb0toY0l1emdIRE1LQlNxZUQyMHFkK0xOZHNOb2NTb0ZoUnI5Y3RwVkxKaWdsNHhJSUpRaXpMQW1HNGNBUGE3YlljeTlJdWc1VEw1VVlpa2JENi9YN1JicmUvSVVjWWUzV1VXNVpzblFRelc5THBOT1B6K1VRYzVhQk01bWdkaDd2STlGQ0NBZXNXMnRucjlZcVpUQWJ5K2J3OGYzQVFSUDY4NTNuK1BoNWhlbVNDbnRqajhZalpiRllXeDJJeGVTMlJTRU13dUE4N083OWVxZFhxdVZvbEsrR3huUDBFUGJIYjdSWkpTR0FCSVI2UEExMXpKSEtJUjJNaEhBNURJUERqN2VIM2o5NUtwZks2MFdnOFludGlsOHNsa3FnbnBpb0xnaGFjVGlkb05EcEVDM3E5SG5oZUNjM3MxalplTGNXOTQzcGlyUHcvNGxLcEJrcWxEdWJubC9yaXljbkxzTHk4OEVLajBmaHp1UnladjhSRm8xRTZ3cEJZa2lxeTdaNTRZbUljVmxZZXlPS0M0bVl3SjBuSFJhUXVNNXZOVDZoQi9pY2VHN3NJcTZzUG53bUM0TWVyRGtieTQwQU9DQ29pZGRpZTFXcDkyVzd6UTJLVHlRU0xpek5QOFQwRXNQTEJieEVEbkNqMEdrTTJxSUV3eVpSQ29iaXpzZkg1QTFaWEZodU41MkYyOXZwejNIa0w1NzRtazhsajI0WTV3c0hrdmpqb1gwQk9JV2M1anJ1SHpiSzJ1Zm16RXdwRk8zam5EaFF2NEpvUk9ZZG9FUlZ5R2pFZ1o4aUJEbEYzRnpYbzRnbzZ1dFo5bGZ0WTROL2RYaXNqUjBpMUcwdWJsdjhLTUFBMFpvVWxpY3hyaHdBQUFBQkpSVTVFcmtKZ2dnPT0nKTsgYmFja2dyb3VuZC1wb3NpdGlvbjogNTAlIDUwJTsgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsgfQ0KLmRyYXdpbmctYm9hcmQtY29udHJvbC1kcmF3aW5nbW9kZS1maWxsZXItYnV0dG9uOmJlZm9yZSB7IGNvbnRlbnQ6ICIiOyBkaXNwbGF5OiBibG9jazsgd2lkdGg6IDA7IGhlaWdodDogMTAwJTsgfQ0KDQouZHJhd2luZy1ib2FyZC1jb250cm9sLW5hdmlnYXRpb24gPiBidXR0b24geyBmb250LWZhbWlseTogSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNHB4OyBmb250LXdlaWdodDogYm9sZDsgbWFyZ2luLXJpZ2h0OiAycHg7IH0NCi5kcmF3aW5nLWJvYXJkLWNvbnRyb2wtbmF2aWdhdGlvbiA+IGJ1dHRvbjpsYXN0LWNoaWxkIHsgbWFyZ2luLXJpZ2h0OiAwOyB9DQoNCi5kcmF3aW5nLWJvYXJkLWNvbnRyb2wtc2l6ZVtkYXRhLWRyYXdpbmctYm9hcmQtdHlwZT0icmFuZ2UiXSAuZHJhd2luZy1ib2FyZC1jb250cm9sLWlubmVyIHsgd2lkdGg6IDc1cHg7IH0NCi5kcmF3aW5nLWJvYXJkLWNvbnRyb2wtc2l6ZVtkYXRhLWRyYXdpbmctYm9hcmQtdHlwZT0iZHJvcGRvd24iXSAuZHJhd2luZy1ib2FyZC1jb250cm9sLWlubmVyIHsgb3ZlcmZsb3c6IHZpc2libGU7IH0NCg0KLmRyYXdpbmctYm9hcmQtY29udHJvbC1zaXplLXJhbmdlLWlucHV0IHsgcG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMTAwJTsgei1pbmRleDogMTAwOyBtYXJnaW46IDA7IHBhZGRpbmc6IDA7IGJvcmRlcjogMDsgfQ0KDQouZHJhd2luZy1ib2FyZC1jb250cm9sLXNpemUtcmFuZ2UtY3VycmVudCwgLmRyYXdpbmctYm9hcmQtY29udHJvbC1zaXplLWRyb3Bkb3duLWN1cnJlbnQgc3BhbiwgLmRyYXdpbmctYm9hcmQtY29udHJvbC1zaXplLWRyb3Bkb3duIHNwYW4geyBkaXNwbGF5OiBibG9jazsgYmFja2dyb3VuZDogIzMzMzsgb3BhY2l0eTogLjg7IH0NCg0KLmRyYXdpbmctYm9hcmQtY29udHJvbC1zaXplLXJhbmdlLWN1cnJlbnQgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IG9wYWNpdHk6IC4xNTsgcG9zaXRpb246IGFic29sdXRlOyBwb2ludGVyLWV2ZW50czogbm9uZTsgbGVmdDogNTAlOyB0b3A6IDUwJTsgei1pbmRleDogNTA7IH0NCg0KLmRyYXdpbmctYm9hcmQtY29udHJvbC1zaXplLWRyb3Bkb3duLWN1cnJlbnQgeyBkaXNwbGF5OiBibG9jazsgaGVpZ2h0OiAxMDAlOyB3aWR0aDogNDBweDsgb3ZlcmZsb3c6IGhpZGRlbjsgcG9zaXRpb246IHJlbGF0aXZlOyB9DQouZHJhd2luZy1ib2FyZC1jb250cm9sLXNpemUtZHJvcGRvd24tY3VycmVudCBzcGFuIHsgcG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiA1MCU7IHRvcDogNTAlOyB9DQoNCi5kcmF3aW5nLWJvYXJkLWNvbnRyb2wtc2l6ZS1kcm9wZG93biB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogLTZweDsgdG9wOiAzM3B4OyBoZWlnaHQ6IGF1dG87IGxpc3Qtc3R5bGUtdHlwZTogbm9uZTsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyB6LWluZGV4OiAxMDA7IH0NCi5kcmF3aW5nLWJvYXJkLWNvbnRyb2wtc2l6ZS1kcm9wZG93biBsaSB7IGRpc3BsYXk6IGJsb2NrOyBwYWRkaW5nOiA0cHg7IG1hcmdpbjogM3B4IDA7IG1pbi1oZWlnaHQ6IDE2cHg7IH0NCi5kcmF3aW5nLWJvYXJkLWNvbnRyb2wtc2l6ZS1kcm9wZG93biBsaTpob3ZlciB7IGJhY2tncm91bmQ6ICNjY2M7IH0NCi5kcmF3aW5nLWJvYXJkLWNvbnRyb2wtc2l6ZS1kcm9wZG93biBzcGFuIHsgbWFyZ2luOiAwIGF1dG87IH0NCg0KLmRyYXdpbmctYm9hcmQtY29udHJvbC1kb3dubG9hZC1idXR0b24geyBvdmVyZmxvdzogaGlkZGVuOyAqdGV4dC1pbmRlbnQ6IC05OTk5cHg7IGJhY2tncm91bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFvQkpSRUZVZU5xTWtyOVBVMUVVeDcvdlIxdFEzeXUxMGhBbVRhd3RCU1lTeTJZY2NGT2NuRFFtL2dld09Mbmo1R1lNZzRzZFhGeGtNY2E0T0JBd2RVQmUvWmtJR0ZwKzl0SFh2aC8zL2ZUY0FtMDFhTHpKeWJubjNuTSs5NXR6cm5EbDZUYitzaWJ1VG1XVVdqM0M2L0p1aytMeVNVbXl2dDBGQ0tLQTAycnlPQ3k2TEJpdTE1bmdNYlo1RERDTkJxSXc2Z0tNK240bkVDVUpydTNnbEtyeThDcGpRYUhWWW1DMnJWSDgyRElNTU1kR0dBUmR3SitTUE5kRlM5Y2h4K01YRE5NcC9OemFnV05hdGsvblFVL2hpWUFvaWg2RllUQkNCczl6VVhNQ2JBaHgyT1lPdjM1MWxQT0ozRXdINEx0ZUw2RGNwL1JmdTNGcnN0RHlJaXp0K2FncGFZeE5EVTBNOWdsNHY3Q2srVFlyQ1lMUXFaSFV5VHRkUUJpdXRQU0dVZmxjelNYSHM1bFZLd1pkU09CTXZ3enR4VnZOMFJ0enNpeVhCRkhzQXZMNVBCU25DcFhWMmdldElMRmlFMlNqc3BZYnVaelBpRFNaMnZPWG1sdlg1eVFxVG1NZmc5WlhxdGxzMXduVDA5T0hFeUFxMGFGTGcvZ1NYc1NXcTl3V2srcDlQckNvWVR3Y2lqZExPZkU3VXNFdWZOOUhHSVluVDRFblRHSVhlMUtxdE5OSXZ1Tm5HYW14Zmk3U2dRRC9uSUpDVGJ6T1BRL1NRaDFwdWQ3VDRNNlcvOHFGSXcvNVdBcjVtN096c3c5VVZjMDY5RmxzMnlKelNDNS9sbmM5UmhhSFpWbmZTcVVuRWdYUDJvQnF0WXFCZ1lHMittS3htT1ZBRG5BY0I0eXhIZ0QxUnplaEtLbnMvTHlWNGdVSEJ3ZVF5K1V5UmtkSDZVS0o2ZlFERnhjWG9Xa2FYSmVSdVRnVUdDZExRSjlieDcybEdaaW1HV3MybSswODNvTisyaWlGUWlHeHZMeThSckR6dWR5bHRnckczTjhVMkc4Q3JQejRzR1lZUnFKU3FXUjRIL2pOV2JKaFVqQVdpOFhHOFIvTDg3eVBwR0NWdHRWZkFnd0FWcFpSKzh0WkMwOEFBQUFBU1VWT1JLNUNZSUk9Jyk7IGJhY2tncm91bmQtcG9zaXRpb246IDUwJSA1MCU7IGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7IH0NCi5kcmF3aW5nLWJvYXJkLWNvbnRyb2wtZG93bmxvYWQtYnV0dG9uOmJlZm9yZSB7IGNvbnRlbnQ6ICIiOyBkaXNwbGF5OiBibG9jazsgd2lkdGg6IDA7IGhlaWdodDogMTAwJTsgfQ0KICAgIA0KICAgIA0KI2RpdnsNCndpZHRoOiA4MDBweDsNCmhlaWdodDogODAwcHg7DQpib3JkZXI6IDFweCBzb2xpZCBibGFjazsNCn0NCjwvc3R5bGU+DQo8L2hlYWQ+DQo8Ym9keT4NCjxidXR0b24gb25jbGljaz0nY29weWltYWdlKCknPkNsaXBib2FyZDwvYnV0dG9uPg0KPGltZyBpZD0iaW1nIj48L2ltZz4gICANCjxkaXYgaWQ9ImRpdiI+PC9kaXY+DQogICAgDQogICAgPC9ib2R5Pg0KPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0zLjYuMS5taW4uanMiIGludGVncml0eT0ic2hhMjU2LW84OEF3UW5aQitWRHZFOXR2SVhyTVFhUGxGRlNVVFIrbmxkUW0xTHVQWFE9IiBjcm9zc29yaWdpbj0gImFub255bW91cyI+PC9zY3JpcHQ+DQoNCjxzY3JpcHQgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9kcmF3aW5nYm9hcmQuanMvMC40LjIvZHJhd2luZ2JvYXJkLm1pbi5qcyIgaW50ZWdyaXR5PSJzaGE1MTItblg2WDVxaEd2K3VZdTkrb0Jic3lTZEkrS0t6Tkw4dmxDZ2U4L1NKK3diY3ZucnhrM1N1NE91VU02dXdZL3RSQVpBU2FBcG5KbWhvdUhNVTVvRkd6SGc9PSIgY3Jvc3NvcmlnaW49ImFub255bW91cyIgcmVmZXJyZXJwb2xpY3k9Im5vLXJlZmVycmVyIj48L3NjcmlwdD4NCjxzY3JpcHQ+DQp2YXIgY3VzdG9tQm9hcmQyID0gbmV3IERyYXdpbmdCb2FyZC5Cb2FyZCgnZGl2Jywgew0KY29udHJvbHM6IFsNCidDb2xvcicseyBTaXplOiB7IHR5cGU6ICdkcm9wZG93bicgfSB9LA0KeyBEcmF3aW5nTW9kZTogeyBmaWxsZXI6IGZhbHNlIH0gfSwNCidOYXZpZ2F0aW9uJywNCidEb3dubG9hZCcNCl0sDQp3ZWJTdG9yYWdlOiBmYWxzZSwNCnNpemU6IDEsDQp9KTsNCg0KZnVuY3Rpb24gY29weWltYWdlKCl7DQogICAgdmFyIG15aW1nID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZHJhd2luZy1ib2FyZC1jYW52YXMnKVswXS50b0RhdGFVUkwoImltYWdlL3BuZyIpOyAgDQogICAgLy92YXIgaW1nPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbWcnKTsNCiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW1nJykuc3JjPW15aW1nOw0KICAgLy8gZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbWcpOw0KICAgIHZhciByID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsNCiAgICByLnNldFN0YXJ0QmVmb3JlKGltZyk7DQogICAgci5zZXRFbmRBZnRlcihpbWcpOw0KICAgIHIuc2VsZWN0Tm9kZShpbWcpOw0KICAgIHZhciBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7DQogICAgc2VsLmFkZFJhbmdlKHIpOw0KICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdDb3B5Jyk7DQp9DQo8L3NjcmlwdD4NCjwvaHRtbD4="></iframe>'; 60 61 62 63 } 64 65} 66