doc/deployment.svg
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN'
'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>
<svg fill-opacity="1" xmlns:xlink="http://www.w3.org/1999/xlink" color-rendering="auto" color-interpolation="auto" stroke="black" text-rendering="auto" stroke-linecap="square" width="940" stroke-miterlimit="10" stroke-opacity="1" shape-rendering="auto" fill="black" stroke-dasharray="none" font-weight="normal" stroke-width="1" viewBox="230 150 940 710" height="710" xmlns="http://www.w3.org/2000/svg" font-family="'Dialog'" font-style="normal" stroke-linejoin="miter" font-size="12" stroke-dashoffset="0" image-rendering="auto"
><!--Generated by the Batik Graphics2D SVG Generator--><defs id="genericDefs"
/><g
><defs id="defs1"
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath1"
><path d="M0 0 L2147483647 0 L2147483647 2147483647 L0 2147483647 L0 0 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath2"
><path d="M0 0 L0 80 L330 80 L330 0 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath3"
><path d="M0 0 L0 110 L140 110 L140 0 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath4"
><path d="M0 0 L0 80 L180 80 L180 0 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath5"
><path d="M0 0 L0 60 L140 60 L140 0 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath6"
><path d="M0 0 L0 70 L220 70 L220 0 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath7"
><path d="M0 0 L0 60 L250 60 L250 0 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath8"
><path d="M0 0 L0 670 L900 670 L900 0 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath9"
><path d="M0 0 L0 150 L300 150 L300 0 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath10"
><path d="M0 0 L0 210 L300 210 L300 0 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath11"
><path d="M0 0 L0 490 L370 490 L370 0 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath12"
><path d="M0 0 L0 120 L164 120 L164 0 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath13"
><path d="M-0.5 -0.5 L-0.5 119.5 L163.5 119.5 L163.5 -0.5 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath14"
><path d="M0 0 L0 70 L250 70 L250 0 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath15"
><path d="M-0.5 -0.5 L-0.5 69.5 L249.5 69.5 L249.5 -0.5 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath16"
><path d="M0 0 L0 150 L250 150 L250 0 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath17"
><path d="M-0.5 -0.5 L-0.5 149.5 L249.5 149.5 L249.5 -0.5 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath18"
><path d="M0 0 L0 140 L250 140 L250 0 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath19"
><path d="M-0.5 -0.5 L-0.5 139.5 L249.5 139.5 L249.5 -0.5 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath20"
><path d="M0 0 L0 150 L164 150 L164 0 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath21"
><path d="M-0.5 -0.5 L-0.5 149.5 L163.5 149.5 L163.5 -0.5 Z"
/></clipPath
></defs
><g fill="rgb(255,255,255)" fill-opacity="0" transform="translate(290,740)" stroke-opacity="0" stroke="rgb(255,255,255)"
><path d="M0.5 0.5 L318.5 0.5 L329 12.5 L329 79 L0.5 79 L0.5 0.5" clip-path="url(#clipPath2)" stroke="none"
/></g
><g transform="translate(290,740)"
><path fill="none" d="M0.5 0.5 L318.5 0.5 L329 12.5 L329 79 L0.5 79 L0.5 0.5" clip-path="url(#clipPath2)"
/><path fill="none" d="M318.5 0.5 L318.5 12.5 L329 12.5" clip-path="url(#clipPath2)"
/><text x="5" font-size="14" y="18.1094" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" xml:space="preserve"
>Each hook location represents a specific</text
><text x="5" font-size="14" y="34.2188" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" xml:space="preserve"
>event within Smuxi. When such an event</text
><text x="5" font-size="14" y="50.3281" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" xml:space="preserve"
>occurs, the plugin files linked by the</text
><text x="5" font-size="14" y="66.4375" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" xml:space="preserve"
>symlinks in the hook location are executed.</text
></g
><g fill="rgb(255,255,255)" fill-opacity="0" transform="translate(660,260)" stroke-opacity="0" stroke="rgb(255,255,255)"
><path d="M0.5 0.5 L128.5 0.5 L139 12.5 L139 109 L0.5 109 L0.5 0.5" clip-path="url(#clipPath3)" stroke="none"
/></g
><g transform="translate(660,260)"
><path fill="none" d="M0.5 0.5 L128.5 0.5 L139 12.5 L139 109 L0.5 109 L0.5 0.5" clip-path="url(#clipPath3)"
/><path fill="none" d="M128.5 0.5 L128.5 12.5 L139 12.5" clip-path="url(#clipPath3)"
/><text x="5" font-size="14" y="18.1094" clip-path="url(#clipPath3)" font-family="sans-serif" stroke="none" xml:space="preserve"
>A symlink to the</text
><text x="5" font-size="14" y="34.2188" clip-path="url(#clipPath3)" font-family="sans-serif" stroke="none" xml:space="preserve"
>executable plugin</text
><text x="5" font-size="14" y="50.3281" clip-path="url(#clipPath3)" font-family="sans-serif" stroke="none" xml:space="preserve"
>file is installed in</text
><text x="5" font-size="14" y="66.4375" clip-path="url(#clipPath3)" font-family="sans-serif" stroke="none" xml:space="preserve"
>one or more of</text
><text x="5" font-size="14" y="82.5469" clip-path="url(#clipPath3)" font-family="sans-serif" stroke="none" xml:space="preserve"
>Smuxi's hook</text
><text x="5" font-size="14" y="98.6562" clip-path="url(#clipPath3)" font-family="sans-serif" stroke="none" xml:space="preserve"
>locations.</text
></g
><g fill="rgb(255,255,255)" fill-opacity="0" transform="translate(950,350)" stroke-opacity="0" stroke="rgb(255,255,255)"
><path d="M0.5 0.5 L168.5 0.5 L179 12.5 L179 79 L0.5 79 L0.5 0.5" clip-path="url(#clipPath4)" stroke="none"
/></g
><g transform="translate(950,350)"
><path fill="none" d="M0.5 0.5 L168.5 0.5 L179 12.5 L179 79 L0.5 79 L0.5 0.5" clip-path="url(#clipPath4)"
/><path fill="none" d="M168.5 0.5 L168.5 12.5 L179 12.5" clip-path="url(#clipPath4)"
/><text x="5" font-size="14" y="18.1094" clip-path="url(#clipPath4)" font-family="sans-serif" stroke="none" xml:space="preserve"
>A plugin file contains a</text
><text x="5" font-size="14" y="34.2188" clip-path="url(#clipPath4)" font-family="sans-serif" stroke="none" xml:space="preserve"
>Ruby class inherited</text
><text x="5" font-size="14" y="50.3281" clip-path="url(#clipPath4)" font-family="sans-serif" stroke="none" xml:space="preserve"
>from GodObject::</text
><text x="5" font-size="14" y="66.4375" clip-path="url(#clipPath4)" font-family="sans-serif" stroke="none" xml:space="preserve"
>SmuxiHooks::Plugin.</text
></g
><g fill="rgb(255,255,255)" fill-opacity="0" transform="translate(830,760)" stroke-opacity="0" stroke="rgb(255,255,255)"
><rect x="0.5" width="138.5" height="58.5" y="0.5" clip-path="url(#clipPath5)" stroke="none"
/></g
><g transform="translate(830,760)"
><rect fill="none" x="0.5" width="138.5" height="58.5" y="0.5" clip-path="url(#clipPath5)"
/><text x="39" font-size="14" y="27.3094" clip-path="url(#clipPath5)" font-family="sans-serif" stroke="none" xml:space="preserve"
>«plugin»</text
><text x="12" font-size="14" y="43.4188" clip-path="url(#clipPath5)" font-family="sans-serif" stroke="none" xml:space="preserve"
>KeywordCatcher</text
></g
><g font-size="14" transform="translate(830,760)" fill-opacity="0" fill="rgb(255,255,255)" font-family="sans-serif" stroke="rgb(255,255,255)" stroke-opacity="0"
><rect x="110.86" width="11.2" height="5.6" y="9.7" clip-path="url(#clipPath5)" stroke="none"
/></g
><g font-family="sans-serif" font-size="14" transform="translate(830,760)"
><rect fill="none" x="110.86" width="11.2" height="5.6" y="9.7" clip-path="url(#clipPath5)"
/></g
><g font-size="14" transform="translate(830,760)" fill-opacity="0" fill="rgb(255,255,255)" font-family="sans-serif" stroke="rgb(255,255,255)" stroke-opacity="0"
><rect x="110.86" width="11.2" height="5.6" y="19.5" clip-path="url(#clipPath5)" stroke="none"
/></g
><g font-family="sans-serif" font-size="14" transform="translate(830,760)"
><rect fill="none" x="110.86" width="11.2" height="5.6" y="19.5" clip-path="url(#clipPath5)"
/><path fill="none" d="M116.46 15.3 L116.46 19.5" clip-path="url(#clipPath5)"
/><path fill="none" d="M116.46 9.7 L116.46 5.5 L135.5 5.5 L135.5 29.3 L116.46 29.3 L116.46 25.1" clip-path="url(#clipPath5)"
/></g
><g fill="rgb(255,255,255)" fill-opacity="0" transform="translate(780,620)" stroke-opacity="0" stroke="rgb(255,255,255)"
><rect x="0.5" width="218.5" height="68.5" y="0.5" clip-path="url(#clipPath6)" stroke="none"
/></g
><g transform="translate(780,620)"
><rect fill="none" x="0.5" width="218.5" height="68.5" y="0.5" clip-path="url(#clipPath6)"
/><text x="66" font-size="14" y="27.3094" clip-path="url(#clipPath6)" font-family="sans-serif" stroke="none" xml:space="preserve"
>«plugin file»</text
><text x="40" font-size="14" y="43.4188" clip-path="url(#clipPath6)" font-family="sans-serif" stroke="none" xml:space="preserve"
>keyword_catcher.rb </text
></g
><g font-size="14" transform="translate(780,620)" fill-opacity="0" fill="rgb(255,255,255)" font-family="sans-serif" stroke="rgb(255,255,255)" stroke-opacity="0"
><path d="M194.5 5.5 L208.5 5.5 L215.5 12.5 L215.5 30.7 L194.5 30.7 L194.5 5.5" clip-path="url(#clipPath6)" stroke="none"
/></g
><g font-family="sans-serif" font-size="14" transform="translate(780,620)"
><path fill="none" d="M194.5 5.5 L208.5 5.5 L215.5 12.5 L215.5 30.7 L194.5 30.7 L194.5 5.5" clip-path="url(#clipPath6)"
/><path fill="none" d="M208.5 5.5 L208.5 12.5 L215.5 12.5" clip-path="url(#clipPath6)"
/></g
><g fill="rgb(255,255,255)" fill-opacity="0" transform="translate(330,620)" stroke-opacity="0" stroke="rgb(255,255,255)"
><rect x="0.5" width="248.5" height="58.5" y="0.5" clip-path="url(#clipPath7)" stroke="none"
/></g
><g transform="translate(330,620)"
><rect fill="none" x="0.5" width="248.5" height="58.5" y="0.5" clip-path="url(#clipPath7)"
/><text x="58" font-size="14" y="27.3094" clip-path="url(#clipPath7)" font-family="sans-serif" stroke="none" xml:space="preserve"
>«hook executable»</text
><text x="55" font-size="14" y="43.4188" clip-path="url(#clipPath7)" font-family="sans-serif" stroke="none" xml:space="preserve"
>keyword_catcher.rb</text
></g
><g font-size="14" transform="translate(330,620)" fill-opacity="0" fill="rgb(255,255,255)" font-family="sans-serif" stroke="rgb(255,255,255)" stroke-opacity="0"
><path d="M224.5 5.5 L238.5 5.5 L245.5 12.5 L245.5 30.7 L224.5 30.7 L224.5 5.5" clip-path="url(#clipPath7)" stroke="none"
/></g
><g font-family="sans-serif" font-size="14" transform="translate(330,620)"
><path fill="none" d="M224.5 5.5 L238.5 5.5 L245.5 12.5 L245.5 30.7 L224.5 30.7 L224.5 5.5" clip-path="url(#clipPath7)"
/><path fill="none" d="M238.5 5.5 L238.5 12.5 L245.5 12.5" clip-path="url(#clipPath7)"
/></g
><g fill="rgb(175,175,175)" fill-opacity="0.4902" transform="translate(250,170)" stroke-opacity="0.4902" stroke="rgb(175,175,175)"
><path d="M0.5 10.5 L10.5 0.5 L899 0.5 L899 660.5 L890.5 669 L890.5 10.5 L0.5 10.5" clip-path="url(#clipPath8)" stroke="none"
/></g
><g fill="rgb(255,255,255)" fill-opacity="0" transform="translate(250,170)" stroke-opacity="0" stroke="rgb(255,255,255)"
><path fill="none" d="M0.5 10.5 L10.5 0.5 L899 0.5 L899 660.5 L890.5 669 L890.5 10.5 L0.5 10.5" clip-path="url(#clipPath8)"
/></g
><g transform="translate(250,170)"
><path fill="none" d="M0.5 10.5 L10.5 0.5 L899 0.5 L899 660.5 L890.5 669" clip-path="url(#clipPath8)"
/><path fill="none" d="M890.5 10.5 L899 0.5" clip-path="url(#clipPath8)"
/></g
><g fill="rgb(255,255,255)" fill-opacity="0" transform="translate(250,170)" stroke-opacity="0" stroke="rgb(255,255,255)"
><rect x="0.5" width="890" height="658.5" y="10.5" clip-path="url(#clipPath8)" stroke="none"
/></g
><g transform="translate(250,170)"
><rect fill="none" x="0.5" width="890" height="658.5" y="10.5" clip-path="url(#clipPath8)"
/><text x="413" font-size="14" y="28.1094" clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none" xml:space="preserve"
>«device»</text
><text x="388" font-size="14" y="44.2188" clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none" xml:space="preserve"
>Some Computer</text
></g
><g fill="rgb(255,255,255)" fill-opacity="0" transform="translate(820,280)" stroke-opacity="0" stroke="rgb(255,255,255)"
><rect x="0.5" width="138.5" height="58.5" y="0.5" clip-path="url(#clipPath5)" stroke="none"
/></g
><g transform="translate(820,280)"
><rect fill="none" x="0.5" width="138.5" height="58.5" y="0.5" clip-path="url(#clipPath5)"
/><text x="39" font-size="14" y="27.3094" clip-path="url(#clipPath5)" font-family="sans-serif" stroke="none" xml:space="preserve"
>«plugin»</text
><text x="29" font-size="14" y="43.4188" clip-path="url(#clipPath5)" font-family="sans-serif" stroke="none" xml:space="preserve"
>ChatLogger</text
></g
><g font-size="14" transform="translate(820,280)" fill-opacity="0" fill="rgb(255,255,255)" font-family="sans-serif" stroke="rgb(255,255,255)" stroke-opacity="0"
><rect x="110.86" width="11.2" height="5.6" y="9.7" clip-path="url(#clipPath5)" stroke="none"
/></g
><g font-family="sans-serif" font-size="14" transform="translate(820,280)"
><rect fill="none" x="110.86" width="11.2" height="5.6" y="9.7" clip-path="url(#clipPath5)"
/></g
><g font-size="14" transform="translate(820,280)" fill-opacity="0" fill="rgb(255,255,255)" font-family="sans-serif" stroke="rgb(255,255,255)" stroke-opacity="0"
><rect x="110.86" width="11.2" height="5.6" y="19.5" clip-path="url(#clipPath5)" stroke="none"
/></g
><g font-family="sans-serif" font-size="14" transform="translate(820,280)"
><rect fill="none" x="110.86" width="11.2" height="5.6" y="19.5" clip-path="url(#clipPath5)"
/><path fill="none" d="M116.46 15.3 L116.46 19.5" clip-path="url(#clipPath5)"
/><path fill="none" d="M116.46 9.7 L116.46 5.5 L135.5 5.5 L135.5 29.3 L116.46 29.3 L116.46 25.1" clip-path="url(#clipPath5)"
/></g
><g fill="rgb(255,255,255)" fill-opacity="0" transform="translate(780,440)" stroke-opacity="0" stroke="rgb(255,255,255)"
><rect x="0.5" width="218.5" height="68.5" y="0.5" clip-path="url(#clipPath6)" stroke="none"
/></g
><g transform="translate(780,440)"
><rect fill="none" x="0.5" width="218.5" height="68.5" y="0.5" clip-path="url(#clipPath6)"
/><text x="66" font-size="14" y="27.3094" clip-path="url(#clipPath6)" font-family="sans-serif" stroke="none" xml:space="preserve"
>«plugin file»</text
><text x="59" font-size="14" y="43.4188" clip-path="url(#clipPath6)" font-family="sans-serif" stroke="none" xml:space="preserve"
>chat_logger.rb </text
></g
><g font-size="14" transform="translate(780,440)" fill-opacity="0" fill="rgb(255,255,255)" font-family="sans-serif" stroke="rgb(255,255,255)" stroke-opacity="0"
><path d="M194.5 5.5 L208.5 5.5 L215.5 12.5 L215.5 30.7 L194.5 30.7 L194.5 5.5" clip-path="url(#clipPath6)" stroke="none"
/></g
><g font-family="sans-serif" font-size="14" transform="translate(780,440)"
><path fill="none" d="M194.5 5.5 L208.5 5.5 L215.5 12.5 L215.5 30.7 L194.5 30.7 L194.5 5.5" clip-path="url(#clipPath6)"
/><path fill="none" d="M208.5 5.5 L208.5 12.5 L215.5 12.5" clip-path="url(#clipPath6)"
/></g
><g fill="rgb(255,255,255)" fill-opacity="0" transform="translate(330,370)" stroke-opacity="0" stroke="rgb(255,255,255)"
><rect x="0.5" width="248.5" height="58.5" y="0.5" clip-path="url(#clipPath7)" stroke="none"
/></g
><g transform="translate(330,370)"
><rect fill="none" x="0.5" width="248.5" height="58.5" y="0.5" clip-path="url(#clipPath7)"
/><text x="58" font-size="14" y="27.3094" clip-path="url(#clipPath7)" font-family="sans-serif" stroke="none" xml:space="preserve"
>«hook executable»</text
><text x="74" font-size="14" y="43.4188" clip-path="url(#clipPath7)" font-family="sans-serif" stroke="none" xml:space="preserve"
>chat_logger.rb</text
></g
><g font-size="14" transform="translate(330,370)" fill-opacity="0" fill="rgb(255,255,255)" font-family="sans-serif" stroke="rgb(255,255,255)" stroke-opacity="0"
><path d="M224.5 5.5 L238.5 5.5 L245.5 12.5 L245.5 30.7 L224.5 30.7 L224.5 5.5" clip-path="url(#clipPath7)" stroke="none"
/></g
><g font-family="sans-serif" font-size="14" transform="translate(330,370)"
><path fill="none" d="M224.5 5.5 L238.5 5.5 L245.5 12.5 L245.5 30.7 L224.5 30.7 L224.5 5.5" clip-path="url(#clipPath7)"
/><path fill="none" d="M238.5 5.5 L238.5 12.5 L245.5 12.5" clip-path="url(#clipPath7)"
/></g
><g fill="rgb(175,175,175)" fill-opacity="0.4902" transform="translate(310,300)" stroke-opacity="0.4902" stroke="rgb(175,175,175)"
><path d="M0.5 10.5 L10.5 0.5 L299 0.5 L299 140.5 L290.5 149 L290.5 10.5 L0.5 10.5" clip-path="url(#clipPath9)" stroke="none"
/></g
><g fill="rgb(255,255,255)" fill-opacity="0" transform="translate(310,300)" stroke-opacity="0" stroke="rgb(255,255,255)"
><path fill="none" d="M0.5 10.5 L10.5 0.5 L299 0.5 L299 140.5 L290.5 149 L290.5 10.5 L0.5 10.5" clip-path="url(#clipPath9)"
/></g
><g transform="translate(310,300)"
><path fill="none" d="M0.5 10.5 L10.5 0.5 L299 0.5 L299 140.5 L290.5 149" clip-path="url(#clipPath9)"
/><path fill="none" d="M290.5 10.5 L299 0.5" clip-path="url(#clipPath9)"
/></g
><g fill="rgb(255,255,255)" fill-opacity="0" transform="translate(310,300)" stroke-opacity="0" stroke="rgb(255,255,255)"
><rect x="0.5" width="290" height="138.5" y="10.5" clip-path="url(#clipPath9)" stroke="none"
/></g
><g transform="translate(310,300)"
><rect fill="none" x="0.5" width="290" height="138.5" y="10.5" clip-path="url(#clipPath9)"
/><text x="89" font-size="14" y="28.1094" clip-path="url(#clipPath9)" font-family="sans-serif" stroke="none" xml:space="preserve"
>«hook location»</text
><text x="15" font-size="14" y="44.2188" clip-path="url(#clipPath9)" font-family="sans-serif" stroke="none" xml:space="preserve"
>engine/session/on-message-received</text
></g
><g fill="rgb(255,255,255)" fill-opacity="0" transform="translate(330,550)" stroke-opacity="0" stroke="rgb(255,255,255)"
><rect x="0.5" width="248.5" height="58.5" y="0.5" clip-path="url(#clipPath7)" stroke="none"
/></g
><g transform="translate(330,550)"
><rect fill="none" x="0.5" width="248.5" height="58.5" y="0.5" clip-path="url(#clipPath7)"
/><text x="58" font-size="14" y="27.3094" clip-path="url(#clipPath7)" font-family="sans-serif" stroke="none" xml:space="preserve"
>«hook executable»</text
><text x="74" font-size="14" y="43.4188" clip-path="url(#clipPath7)" font-family="sans-serif" stroke="none" xml:space="preserve"
>chat_logger.rb</text
></g
><g font-size="14" transform="translate(330,550)" fill-opacity="0" fill="rgb(255,255,255)" font-family="sans-serif" stroke="rgb(255,255,255)" stroke-opacity="0"
><path d="M224.5 5.5 L238.5 5.5 L245.5 12.5 L245.5 30.7 L224.5 30.7 L224.5 5.5" clip-path="url(#clipPath7)" stroke="none"
/></g
><g font-family="sans-serif" font-size="14" transform="translate(330,550)"
><path fill="none" d="M224.5 5.5 L238.5 5.5 L245.5 12.5 L245.5 30.7 L224.5 30.7 L224.5 5.5" clip-path="url(#clipPath7)"
/><path fill="none" d="M238.5 5.5 L238.5 12.5 L245.5 12.5" clip-path="url(#clipPath7)"
/></g
><g fill="rgb(175,175,175)" fill-opacity="0.4902" transform="translate(310,490)" stroke-opacity="0.4902" stroke="rgb(175,175,175)"
><path d="M0.5 10.5 L10.5 0.5 L299 0.5 L299 200.5 L290.5 209 L290.5 10.5 L0.5 10.5" clip-path="url(#clipPath10)" stroke="none"
/></g
><g fill="rgb(255,255,255)" fill-opacity="0" transform="translate(310,490)" stroke-opacity="0" stroke="rgb(255,255,255)"
><path fill="none" d="M0.5 10.5 L10.5 0.5 L299 0.5 L299 200.5 L290.5 209 L290.5 10.5 L0.5 10.5" clip-path="url(#clipPath10)"
/></g
><g transform="translate(310,490)"
><path fill="none" d="M0.5 10.5 L10.5 0.5 L299 0.5 L299 200.5 L290.5 209" clip-path="url(#clipPath10)"
/><path fill="none" d="M290.5 10.5 L299 0.5" clip-path="url(#clipPath10)"
/></g
><g fill="rgb(255,255,255)" fill-opacity="0" transform="translate(310,490)" stroke-opacity="0" stroke="rgb(255,255,255)"
><rect x="0.5" width="290" height="198.5" y="10.5" clip-path="url(#clipPath10)" stroke="none"
/></g
><g transform="translate(310,490)"
><rect fill="none" x="0.5" width="290" height="198.5" y="10.5" clip-path="url(#clipPath10)"
/><text x="89" font-size="14" y="28.1094" clip-path="url(#clipPath10)" font-family="sans-serif" stroke="none" xml:space="preserve"
>«hook location»</text
><text x="30" font-size="14" y="44.2188" clip-path="url(#clipPath10)" font-family="sans-serif" stroke="none" xml:space="preserve"
>engine/session/on-message-sent</text
></g
><g fill="rgb(175,175,175)" fill-opacity="0.4902" transform="translate(280,230)" stroke-opacity="0.4902" stroke="rgb(175,175,175)"
><path d="M0.5 10.5 L10.5 0.5 L369 0.5 L369 480.5 L360.5 489 L360.5 10.5 L0.5 10.5" clip-path="url(#clipPath11)" stroke="none"
/></g
><g fill="rgb(255,255,255)" fill-opacity="0" transform="translate(280,230)" stroke-opacity="0" stroke="rgb(255,255,255)"
><path fill="none" d="M0.5 10.5 L10.5 0.5 L369 0.5 L369 480.5 L360.5 489 L360.5 10.5 L0.5 10.5" clip-path="url(#clipPath11)"
/></g
><g transform="translate(280,230)"
><path fill="none" d="M0.5 10.5 L10.5 0.5 L369 0.5 L369 480.5 L360.5 489" clip-path="url(#clipPath11)"
/><path fill="none" d="M360.5 10.5 L369 0.5" clip-path="url(#clipPath11)"
/></g
><g fill="rgb(255,255,255)" fill-opacity="0" transform="translate(280,230)" stroke-opacity="0" stroke="rgb(255,255,255)"
><rect x="0.5" width="360" height="478.5" y="10.5" clip-path="url(#clipPath11)" stroke="none"
/></g
><g transform="translate(280,230)"
><rect fill="none" x="0.5" width="360" height="478.5" y="10.5" clip-path="url(#clipPath11)"
/><text x="90" font-size="14" y="28.1094" clip-path="url(#clipPath11)" font-family="sans-serif" stroke="none" xml:space="preserve"
>«execution environment»</text
><text x="131" font-size="14" y="44.2188" clip-path="url(#clipPath11)" font-family="sans-serif" stroke="none" xml:space="preserve"
>Smuxi Engine</text
></g
><g stroke-dasharray="8,5" font-size="14" stroke-miterlimit="5" font-family="sans-serif" transform="translate(810.5,660.5)" stroke-linecap="butt"
><line y2="65" fill="none" x1="90" clip-path="url(#clipPath13)" x2="90" y1="100"
/><line y2="30" fill="none" x1="90" clip-path="url(#clipPath13)" x2="90" y1="65"
/><line stroke-linecap="square" clip-path="url(#clipPath13)" fill="none" x1="90" x2="96" y1="30" y2="42" stroke-dasharray="none" stroke-miterlimit="10"
/><line stroke-linecap="square" clip-path="url(#clipPath13)" fill="none" x1="90" x2="84" y1="30" y2="42" stroke-dasharray="none" stroke-miterlimit="10"
/><text stroke-linecap="square" x="35" y="62" clip-path="url(#clipPath13)" stroke-dasharray="none" stroke="none" xml:space="preserve" stroke-miterlimit="10"
><<manifest>></text
></g
><g stroke-dasharray="8,5" font-size="14" stroke-miterlimit="5" font-family="sans-serif" transform="translate(550.5,600.5)" stroke-linecap="butt"
><line y2="50" fill="none" x1="30" clip-path="url(#clipPath15)" x2="130" y1="50"
/><line y2="50" fill="none" x1="130" clip-path="url(#clipPath15)" x2="230" y1="50"
/><line stroke-linecap="square" clip-path="url(#clipPath15)" fill="none" x1="229" x2="217" y1="50" y2="56" stroke-dasharray="none" stroke-miterlimit="10"
/><line stroke-linecap="square" clip-path="url(#clipPath15)" fill="none" x1="229" x2="217" y1="50" y2="44" stroke-dasharray="none" stroke-miterlimit="10"
/><text stroke-linecap="square" x="79" y="47" clip-path="url(#clipPath15)" stroke-dasharray="none" stroke="none" xml:space="preserve" stroke-miterlimit="10"
><<symlink>></text
></g
><g stroke-dasharray="8,5" font-size="14" stroke-miterlimit="5" font-family="sans-serif" transform="translate(550.5,450.5)" stroke-linecap="butt"
><line y2="130" fill="none" x1="30" clip-path="url(#clipPath17)" x2="160" y1="130"
/><line y2="80" fill="none" x1="160" clip-path="url(#clipPath17)" x2="195" y1="130"
/><line y2="30" fill="none" x1="195" clip-path="url(#clipPath17)" x2="230" y1="80"
/><line stroke-linecap="square" clip-path="url(#clipPath17)" fill="none" x1="229" x2="227" y1="30" y2="43" stroke-dasharray="none" stroke-miterlimit="10"
/><line stroke-linecap="square" clip-path="url(#clipPath17)" fill="none" x1="229" x2="217" y1="30" y2="36" stroke-dasharray="none" stroke-miterlimit="10"
/><text stroke-linecap="square" x="109" y="127" clip-path="url(#clipPath17)" stroke-dasharray="none" stroke="none" xml:space="preserve" stroke-miterlimit="10"
><<symlink>></text
></g
><g stroke-dasharray="8,5" font-size="14" stroke-miterlimit="5" font-family="sans-serif" transform="translate(550.5,350.5)" stroke-linecap="butt"
><line y2="50" fill="none" x1="30" clip-path="url(#clipPath19)" x2="160" y1="50"
/><line y2="85" fill="none" x1="160" clip-path="url(#clipPath19)" x2="195" y1="50"
/><line y2="120" fill="none" x1="195" clip-path="url(#clipPath19)" x2="230" y1="85"
/><line stroke-linecap="square" clip-path="url(#clipPath19)" fill="none" x1="229" x2="216" y1="119" y2="115" stroke-dasharray="none" stroke-miterlimit="10"
/><line stroke-linecap="square" clip-path="url(#clipPath19)" fill="none" x1="229" x2="225" y1="119" y2="106" stroke-dasharray="none" stroke-miterlimit="10"
/><text stroke-linecap="square" x="109" y="47" clip-path="url(#clipPath19)" stroke-dasharray="none" stroke="none" xml:space="preserve" stroke-miterlimit="10"
><<symlink>></text
></g
><g stroke-dasharray="8,5" font-size="14" stroke-miterlimit="5" font-family="sans-serif" transform="translate(800.5,310.5)" stroke-linecap="butt"
><line y2="80" fill="none" x1="90" clip-path="url(#clipPath21)" x2="90" y1="30"
/><line y2="130" fill="none" x1="90" clip-path="url(#clipPath21)" x2="90" y1="80"
/><line stroke-linecap="square" clip-path="url(#clipPath21)" fill="none" x1="90" x2="84" y1="129" y2="117" stroke-dasharray="none" stroke-miterlimit="10"
/><line stroke-linecap="square" clip-path="url(#clipPath21)" fill="none" x1="90" x2="96" y1="129" y2="117" stroke-dasharray="none" stroke-miterlimit="10"
/><text stroke-linecap="square" x="35" y="77" clip-path="url(#clipPath21)" stroke-dasharray="none" stroke="none" xml:space="preserve" stroke-miterlimit="10"
><<manifest>></text
></g
></g
></svg
>