<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:RTCppProperties="http://www.eclipse.org/papyrus/umlrt/cppproperties" xmlns:UMLRTStateMachines="http://www.eclipse.org/papyrus/umlrt/statemachine" xmlns:UMLRealTime="http://www.eclipse.org/papyrus/umlrt" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
  <uml:Model xmi:id="_YSrkcH_6EeSOLqU6j-e_hg" name="ComputerSystem">
    <ownedComment xmi:id="_CJt34BB2EeWr3Pbi51wSsA">
      <body>Open diagram &quot;CSD | Top&quot; for structure exploration.</body>
    </ownedComment>
    <packageImport xmi:id="_pl3jgH_6EeSOLqU6j-e_hg">
      <importedPackage xmi:type="uml:Profile" href="pathmap://UML_RT_PROFILE/uml-rt.profile.uml#_1h74oEeVEeO0lv5O1DTHOQ"/>
    </packageImport>
    <packageImport xmi:id="_p7pmQH_6EeSOLqU6j-e_hg">
      <importedPackage xmi:type="uml:Profile" href="pathmap://UML_RT_PROFILE/UMLRealTimeSM-addendum.profile.uml#_KLcn0FDtEeOA4ecmvfqvaw"/>
    </packageImport>
    <packageImport xmi:id="_0MfxQIB5EeSeANT-DfY5oA">
      <importedPackage xmi:type="uml:Model" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_DV8nkBv8EduZN5aJJITI5w"/>
    </packageImport>
    <packagedElement xmi:type="uml:Package" xmi:id="_PlgQIICCEeSeANT-DfY5oA" name="Computer">
      <packagedElement xmi:type="uml:Class" xmi:id="_fMulcH_6EeSOLqU6j-e_hg" name="Computer" classifierBehavior="_2cxfEICrEeSYmJvm6id8mw" isActive="true">
        <ownedAttribute xmi:id="_p_mqAIB6EeSeANT-DfY5oA" name="usbBus" visibility="protected" type="_ZUBdgIB6EeSeANT-DfY5oA" aggregation="shared">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_p_mqAYB6EeSeANT-DfY5oA"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_p_mqAoB6EeSeANT-DfY5oA" value="2"/>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Port" xmi:id="_dmbmsICiEeSeANT-DfY5oA" name="frame" visibility="public" isOrdered="true" aggregation="composite" isBehavior="true" isService="false">
          <type xmi:type="uml:Collaboration" href="pathmap://UMLRTRTSLIB/UMLRT-RTS.uml#_TWVjwGtVEeSCmtGQ-V4nzg"/>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Port" xmi:id="_NFL2YICsEeSYmJvm6id8mw" name="timer" visibility="public" isOrdered="true" aggregation="composite" isBehavior="true" isService="false">
          <type xmi:type="uml:Collaboration" href="pathmap://UMLRTRTSLIB/UMLRT-RTS.uml#_MxQZgGXsEeS_4daqvwyFrg"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_UiB-AIFSEeSxK_Fl3WspFw" name="timerId" visibility="protected" aggregation="composite">
          <type xmi:type="uml:Class" href="pathmap://UMLRTRTSLIB/UMLRT-RTS.uml#_6qkTMGXmEeS_4daqvwyFrg"/>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Port" xmi:id="_oyJrcIFWEeSxK_Fl3WspFw" name="usbPort" visibility="public" type="_6tx6sIB-EeSeANT-DfY5oA" aggregation="composite" isConjugated="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_lIYI8MOwEeSxS9_G15_gSg" value="2"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_lIcaYMOwEeSxS9_G15_gSg" value="2"/>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Port" xmi:id="_m1ajcMO5EeSxS9_G15_gSg" name="userPort" type="_vOIpQMO2EeSxS9_G15_gSg" aggregation="composite"/>
        <ownedAttribute xmi:id="_EFn4sMO7EeSxS9_G15_gSg" name="driverManager" visibility="protected" type="_2WM7UMO6EeSxS9_G15_gSg" aggregation="composite"/>
        <ownedAttribute xmi:type="uml:Port" xmi:id="_yYoMwMXOEeSsD5C2f30z-g" name="resMgr" visibility="protected" type="_sSppwMQdEeSirL7ina4YrA" isOrdered="true" aggregation="composite" isBehavior="true" isConjugated="true" isService="false"/>
        <ownedAttribute xmi:id="_Q9Z2oMbgEeSvmLj5mtpd2g" name="printerID" visibility="protected" aggregation="composite">
          <type xmi:type="uml:Class" href="pathmap://UMLRTRTSLIB/UMLRT-RTS.uml#_GfwZUICSEeSeANT-DfY5oA"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_YyYO0MbgEeSvmLj5mtpd2g" name="storageID" visibility="protected" aggregation="composite">
          <type xmi:type="uml:Class" href="pathmap://UMLRTRTSLIB/UMLRT-RTS.uml#_GfwZUICSEeSeANT-DfY5oA"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_c8b1UOqLEeSlmKRr_VnIAg" name="application" visibility="protected" type="_N2fr8MOyEeSxS9_G15_gSg" aggregation="composite">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_EcxMAOqMEeSlmKRr_VnIAg" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_EcxzEOqMEeSlmKRr_VnIAg" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_lz0-ABUjEeWFQ7RnHw84Pw" name="numSec" visibility="protected" aggregation="composite">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_c-lZQC_KEeW9MYT2X2gffg" name="dummy">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
        </ownedAttribute>
        <ownedConnector xmi:id="_SHmf8MXPEeSsD5C2f30z-g" name="Connector3">
          <end xmi:id="_SHnHAMXPEeSsD5C2f30z-g" partWithPort="_EFn4sMO7EeSxS9_G15_gSg" role="_pCSIcMXOEeSsD5C2f30z-g">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SHnHAcXPEeSsD5C2f30z-g" value="1"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SHnHAsXPEeSsD5C2f30z-g" value="1"/>
          </end>
          <end xmi:id="_SHnuEMXPEeSsD5C2f30z-g" role="_yYoMwMXOEeSsD5C2f30z-g">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SHnuEcXPEeSsD5C2f30z-g" value="1"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SHnuEsXPEeSsD5C2f30z-g" value="1"/>
          </end>
        </ownedConnector>
        <ownedConnector xmi:id="_AtlvEOqNEeSlmKRr_VnIAg" name="Connector4">
          <end xmi:id="_AtoyYOqNEeSlmKRr_VnIAg" role="_m1ajcMO5EeSxS9_G15_gSg"/>
          <end xmi:id="_AtpZcOqNEeSlmKRr_VnIAg" partWithPort="_c8b1UOqLEeSlmKRr_VnIAg" role="_5Gm08MYAEeSsD5C2f30z-g"/>
        </ownedConnector>
        <ownedConnector xmi:id="_BzuQsOqNEeSlmKRr_VnIAg" name="Connector5">
          <end xmi:id="_Bzu3wOqNEeSlmKRr_VnIAg" partWithPort="_c8b1UOqLEeSlmKRr_VnIAg" role="_JKtYAMQPEeSirL7ina4YrA"/>
          <end xmi:id="_Bzve0OqNEeSlmKRr_VnIAg" partWithPort="_EFn4sMO7EeSxS9_G15_gSg" role="_w7EMQMbDEeSvmLj5mtpd2g"/>
        </ownedConnector>
        <ownedConnector xmi:id="_MWa08O1iEeSNVueSbviXfA" name="Connector6">
          <end xmi:id="_MWfGYO1iEeSNVueSbviXfA" partWithPort="_p_mqAIB6EeSeANT-DfY5oA" role="_ui7KkICCEeSeANT-DfY5oA"/>
          <end xmi:id="_MWftcO1iEeSNVueSbviXfA" role="_oyJrcIFWEeSxK_Fl3WspFw"/>
        </ownedConnector>
        <ownedBehavior xmi:type="uml:StateMachine" xmi:id="_2cxfEICrEeSYmJvm6id8mw" name="Computer_SM" isReentrant="false">
          <region xmi:id="_3ifJ8ICrEeSYmJvm6id8mw" name="Region1">
            <transition xmi:id="_oEwucMYJEeSsD5C2f30z-g" name="Initialise" source="_75RkAICrEeSYmJvm6id8mw" target="_JoagwMYJEeSsD5C2f30z-g">
              <effect xmi:type="uml:OpaqueBehavior" xmi:id="_3U_ckMbgEeSvmLj5mtpd2g" name="initializing">
                <language>C++</language>
                <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] initializing&quot; &lt;&lt; std::endl;
</body>
              </effect>
            </transition>
            <transition xmi:id="_YgBNUO4NEeSAlbC0LA6o5Q" name="onResMgrRunning" source="_JoagwMYJEeSsD5C2f30z-g" target="_gMdQYO4UEeSJPsWo_Mnp3w">
              <effect xmi:type="uml:OpaqueBehavior" xmi:id="_Lk1o8O4QEeSJPsWo_Mnp3w" name="resMgrRunning">
                <language>C++</language>
                <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;::{resMgrRunning}] is now accepting requests &quot;;
    if ( resMgr.requestPrinterDriver().send() ) {
    std::cout &lt;&lt; &quot; -- requesting for a printer driver.&quot; &lt;&lt; std::endl;
    } else {
    std::cout &lt;&lt; &quot; -- FAILed to request a printer driver!&quot; &lt;&lt; std::endl;
    }
</body>
              </effect>
              <trigger xmi:id="_-4G3oO4PEeSJPsWo_Mnp3w" name="onResMgr_resMgrRunning" event="_zJOOoO4PEeSJPsWo_Mnp3w" port="_yYoMwMXOEeSsD5C2f30z-g"/>
            </transition>
            <transition xmi:id="_AGqnYO4OEeSAlbC0LA6o5Q" name="EX_InitUSB_Continuation" source="_KlKcAO4NEeSAlbC0LA6o5Q" target="_5D02wO4NEeSAlbC0LA6o5Q"/>
            <subvertex xmi:type="uml:Pseudostate" xmi:id="_75RkAICrEeSYmJvm6id8mw" name="Initial1"/>
            <subvertex xmi:type="uml:State" xmi:id="_JoagwMYJEeSsD5C2f30z-g" name="WaitForResourceManager">
              <entry xmi:type="uml:OpaqueBehavior" xmi:id="_t4bf4O4OEeSAlbC0LA6o5Q" name="waitForResMgr">
                <language>C++</language>
                <body>    time_t currentTime ;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] is in state {WaitForResourceManager}, waiting for resource manager initalization&quot; &lt;&lt; std::endl;
</body>
              </entry>
            </subvertex>
            <subvertex xmi:type="uml:State" xmi:id="_rcvLcO4MEeSAlbC0LA6o5Q" name="InitUSBBus">
              <connectionPoint xmi:id="_KlKcAO4NEeSAlbC0LA6o5Q" name="EX_initUSB" kind="exitPoint"/>
              <connectionPoint xmi:id="_gMdQYO4UEeSJPsWo_Mnp3w" name="EN_initUSB" kind="entryPoint"/>
              <entry xmi:type="uml:OpaqueBehavior" xmi:id="_E2O74A7eEeWWHqV5N_7gJQ" name="initUSBBus">
                <language>C++</language>
                <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] is in state {InitUSBBus}, waiting for the USB bus to be initialized.&quot; &lt;&lt; std::endl;
</body>
              </entry>
              <region xmi:id="_FtPDwe4NEeSAlbC0LA6o5Q" name="Region1">
                <transition xmi:id="_ELcfsMbjEeSvmLj5mtpd2g" name="onPrintResourceID" source="_HrCd8MbhEeSvmLj5mtpd2g" target="_Bt8igMbjEeSvmLj5mtpd2g">
                  <effect xmi:type="uml:OpaqueBehavior" xmi:id="_ekrn0MbkEeSvmLj5mtpd2g" name="importPrinterDriver_requestStorageDriver">
                    <language>C++</language>
                    <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] &quot;;
    if ( timer.cancelTimer( timerId ) ) {
    std::cout &lt;&lt; &quot;timer canceled&quot;;
    } else {
    std::cout &lt;&lt; &quot;ERROR canceling timer&quot;;
    }
    printerID = (UMLRTCapsuleId) *rtdata;
    if ( printerID.isValid() ) {
    if ( frame.import( printerID, usbBus,  0) ) {
    std::cout &lt;&lt; &quot; and successfully imported the printer driver&quot; &lt;&lt; std::endl;
    } else {
    std::cout &lt;&lt; &quot; and FAILed to import the printer driver&quot; &lt;&lt; std::endl;
    }
    } else {
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] and received an INVALID printerID!&quot; &lt;&lt; std::endl;
    }
</body>
                  </effect>
                  <trigger xmi:id="_rhWIAMbjEeSvmLj5mtpd2g" name="onResourceID" event="_WOVBgMQeEeSirL7ina4YrA" port="_yYoMwMXOEeSsD5C2f30z-g"/>
                </transition>
                <transition xmi:id="_WgJK0O4OEeSAlbC0LA6o5Q" name="EN_initUSB_Continuation" source="_gMdQYO4UEeSJPsWo_Mnp3w" target="_HrCd8MbhEeSvmLj5mtpd2g"/>
                <transition xmi:id="_Y-ulwO4REeSJPsWo_Mnp3w" name="onPrintDriverTimeout" source="_HrCd8MbhEeSvmLj5mtpd2g" target="_Bt8igMbjEeSvmLj5mtpd2g">
                  <effect xmi:type="uml:OpaqueBehavior" xmi:id="_ZIsvMO4TEeSJPsWo_Mnp3w" name="Timeout_NoResponse">
                    <language>C++</language>
                    <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] timed out while waiting for a printerId&quot; &lt;&lt; std::endl;
</body>
                  </effect>
                  <trigger xmi:id="_L1TmgO4TEeSJPsWo_Mnp3w" name="onTimeout" port="_NFL2YICsEeSYmJvm6id8mw">
                    <event xmi:type="uml:CallEvent" href="pathmap://UMLRTRTSLIB/UMLRT-RTS.uml#_IaEO8HDxEeSwWKwNKw1iAA"/>
                  </trigger>
                </transition>
                <transition xmi:id="_Huz1wO4UEeSJPsWo_Mnp3w" name="onStorageTimeout" source="_Bt8igMbjEeSvmLj5mtpd2g" target="_KlKcAO4NEeSAlbC0LA6o5Q">
                  <effect xmi:type="uml:OpaqueBehavior" xmi:id="_PgxWMO4UEeSJPsWo_Mnp3w" name="onStorageTimeout">
                    <language>C++</language>
                    <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot; timed out waiting to receive a storageId&quot; &lt;&lt; std::endl;
</body>
                  </effect>
                </transition>
                <transition xmi:id="__CiaQMbkEeSvmLj5mtpd2g" name="onStorageResourceID" source="_Bt8igMbjEeSvmLj5mtpd2g" target="_KlKcAO4NEeSAlbC0LA6o5Q">
                  <effect xmi:type="uml:OpaqueBehavior" xmi:id="_sYYgoMeGEeSz1oN1Kl4Now" name="importStorageDriver">
                    <language>C++</language>
                    <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] &quot;;
    if ( timer.cancelTimer( timerId ) ) {
    std::cout &lt;&lt; &quot;timer canceled&quot;;
    } else {
    std::cout &lt;&lt; &quot;ERROR canceling timer&quot;;
    }
    storageID = (UMLRTCapsuleId) *rtdata;
    if ( storageID.isValid() ) {
    if ( frame.import( storageID, usbBus, 1)) {
    std::cout &lt;&lt; &quot; and storage is now available.&quot; &lt;&lt; std::endl;
    } else {
    std::cout &lt;&lt; &quot; but FAILed to import storage driver!&quot; &lt;&lt; std::endl;
    }
    } else {
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;but received INVALID storageID!&quot; &lt;&lt; std::endl;
    }
</body>
                  </effect>
                  <trigger xmi:id="_436aYO1MEeSAm9oTc70yKg" name="onResourceId" event="_WOVBgMQeEeSirL7ina4YrA" port="_yYoMwMXOEeSsD5C2f30z-g"/>
                </transition>
                <subvertex xmi:type="uml:State" xmi:id="_HrCd8MbhEeSvmLj5mtpd2g" name="WaitForPrinter">
                  <entry xmi:type="uml:OpaqueBehavior" xmi:id="_4dTQAO4SEeSJPsWo_Mnp3w" name="setTimer">
                    <language>C++</language>
                    <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] &quot;;
    numSec = 10;
    timerId = timer.informIn( UMLRTTimespec( numSec, 0 ) );
    if ( timerId.isValid() ) {
    std::cout &lt;&lt; &quot; sets a &quot; &lt;&lt; numSec &lt;&lt; &quot; seconds timer&quot; &lt;&lt; std::endl;
    }
    else {
    std::cout &lt;&lt; &quot; FAILed to set a &quot; &lt;&lt; numSec &lt;&lt; &quot; seconds timer!&quot; &lt;&lt; std::endl;
    }
</body>
                  </entry>
                </subvertex>
                <subvertex xmi:type="uml:State" xmi:id="_Bt8igMbjEeSvmLj5mtpd2g" name="WaitForStorage">
                  <entry xmi:type="uml:OpaqueBehavior" xmi:id="_7xknsO4TEeSJPsWo_Mnp3w" name="requestStorageDriver">
                    <language>C++</language>
                    <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] is in state {WaitForStorage} &quot;;
    /**
    * Send storage request
    */
    if ( resMgr.requestStorageDriver().send() ) {
    std::cout &lt;&lt; &quot;and requested a storage driver&quot;;
    } else {
    std::cout &lt;&lt; &quot;FAILed to request a storage driver&quot;;
    }
    /**
    * Set timeout for storage request
    */
    numSec = 10;
    timerId = timer.informIn( UMLRTTimespec( numSec, 0 ) );
    if ( timerId.isValid() ) {
    std::cout &lt;&lt; &quot; set a &quot; &lt;&lt; numSec &lt;&lt; &quot; seconds timer waiting for a storageDriver.&quot; &lt;&lt; std::endl;
    }
    else {
    std::cout &lt;&lt; &quot; FAILed to set a &quot; &lt;&lt; numSec &lt;&lt; &quot; seconds timer!&quot; &lt;&lt; std::endl;
    }
</body>
                  </entry>
                </subvertex>
              </region>
            </subvertex>
            <subvertex xmi:type="uml:State" xmi:id="_5D02wO4NEeSAlbC0LA6o5Q" name="Running">
              <entry xmi:type="uml:OpaqueBehavior" xmi:id="_Aj9CgO4dEeSJPsWo_Mnp3w" name="running">
                <language>C++</language>
                <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] is in state {Running}.&quot; &lt;&lt; std::endl;
    //context()->debugOutputModel();
</body>
              </entry>
            </subvertex>
          </region>
        </ownedBehavior>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="_2WM7UMO6EeSxS9_G15_gSg" name="ResourceManager" visibility="public" classifierBehavior="_j6H2YMQOEeSirL7ina4YrA" isActive="true">
        <ownedAttribute xmi:type="uml:Port" xmi:id="_-hXZwMQZEeSirL7ina4YrA" name="frame" isOrdered="true" aggregation="composite" isBehavior="true" isService="false">
          <type xmi:type="uml:Collaboration" href="pathmap://UMLRTRTSLIB/UMLRT-RTS.uml#_TWVjwGtVEeSCmtGQ-V4nzg"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_PPdAUMQdEeSirL7ina4YrA" name="usbPrinterDriver" visibility="protected" type="_ZUBdgIB6EeSeANT-DfY5oA" aggregation="composite">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SJE40MQdEeSirL7ina4YrA"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SJHVEMQdEeSirL7ina4YrA" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_a5T_YMQdEeSirL7ina4YrA" name="usbStorageDriver" visibility="protected" type="_ZUBdgIB6EeSeANT-DfY5oA" aggregation="composite">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_f56LcMQdEeSirL7ina4YrA"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_f58nsMQdEeSirL7ina4YrA" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_SUYb4MXIEeSsD5C2f30z-g" name="printerID" visibility="protected" aggregation="composite">
          <type xmi:type="uml:Class" href="pathmap://UMLRTRTSLIB/UMLRT-RTS.uml#_GfwZUICSEeSeANT-DfY5oA"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_myrFAMXIEeSsD5C2f30z-g" name="storageID" visibility="protected">
          <type xmi:type="uml:Class" href="pathmap://UMLRTRTSLIB/UMLRT-RTS.uml#_GfwZUICSEeSeANT-DfY5oA"/>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Port" xmi:id="_pCSIcMXOEeSsD5C2f30z-g" name="resMgr" type="_sSppwMQdEeSirL7ina4YrA" isOrdered="true" aggregation="composite" isBehavior="true"/>
        <ownedAttribute xmi:id="_3NAL0MX8EeSsD5C2f30z-g" name="printerRequestCount" visibility="protected" aggregation="composite">
          <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
          <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_BdingMX9EeSsD5C2f30z-g"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_EgcX0MX9EeSsD5C2f30z-g" name="storageRequestCount" visibility="protected" aggregation="composite">
          <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
          <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_IAhzYMX9EeSsD5C2f30z-g"/>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Port" xmi:id="_w7EMQMbDEeSvmLj5mtpd2g" name="appPort" type="_sSppwMQdEeSirL7ina4YrA" isOrdered="true" aggregation="composite" isBehavior="true"/>
        <ownedAttribute xmi:id="_yMNRsMeMEeSz1oN1Kl4Now" name="status" visibility="protected" aggregation="composite">
          <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_7___oMePEeSz1oN1Kl4Now" name="resourceType" visibility="protected" type="_e2WAMMQeEeSirL7ina4YrA" aggregation="composite"/>
        <ownedAttribute xmi:type="uml:Port" xmi:id="_Nf-gUA4XEeWZmqO69MGcNA" name="timer" visibility="public" isOrdered="true" aggregation="composite" isBehavior="true" isService="false">
          <type xmi:type="uml:Collaboration" href="pathmap://UMLRTRTSLIB/UMLRT-RTS.uml#_MxQZgGXsEeS_4daqvwyFrg"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_1b94QA4XEeWZmqO69MGcNA" name="timerID" visibility="protected" aggregation="composite">
          <type xmi:type="uml:Class" href="pathmap://UMLRTRTSLIB/UMLRT-RTS.uml#_6qkTMGXmEeS_4daqvwyFrg"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_40hD4BUnEeWFQ7RnHw84Pw" name="numSec" visibility="protected" aggregation="composite">
          <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
        </ownedAttribute>
        <ownedBehavior xmi:type="uml:StateMachine" xmi:id="_j6H2YMQOEeSirL7ina4YrA" name="ResourceManager_SM" isReentrant="false">
          <region xmi:id="_lPuXYMQOEeSirL7ina4YrA" name="Region1">
            <transition xmi:id="_vAwzoMQOEeSirL7ina4YrA" name="initialize" source="_rMOyEMQOEeSirL7ina4YrA" target="_vjKL0MeMEeSz1oN1Kl4Now">
              <effect xmi:type="uml:OpaqueBehavior" xmi:id="_NM_EQMXIEeSsD5C2f30z-g" name="Initialize">
                <language>C++</language>
                <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] initializing&quot;;
    /**
    * In this version, we will initialize just the resources that are required for the demo.
    * This capsule could be made more intelligent by implemented managed pools.
    */
    bool localPrinterStatus;
    bool localStorageStatus;
    bool localTimerStatus;
    printerID = frame.incarnate(usbPrinterDriver, USBPrinterDriver);
    localPrinterStatus = printerID.isValid();
    if ( localPrinterStatus ) {
    std::cout &lt;&lt; &quot; - printer driver ready&quot; &lt;&lt; std::endl;
    } else {
    std::cout &lt;&lt; &quot; - ERROR instantiating printer driver&quot; &lt;&lt; std::endl;
    }
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] initializing&quot;;
    storageID = frame.incarnate(usbStorageDriver, USBStorageDriver);
    localStorageStatus = storageID.isValid();
    if ( localStorageStatus ) {
    std::cout &lt;&lt; &quot; - storage driver ready&quot; &lt;&lt; std::endl;
    } else {
    std::cout &lt;&lt; &quot; - ERROR instantiating storage driver&quot; &lt;&lt; std::endl;
    }
    status = ( localPrinterStatus &amp;&amp; localStorageStatus);
    if (status) {
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] initializing - &quot;;
    numSec = 10;
    timerID = timer.informIn(UMLRTTimespec(numSec,0));
    localTimerStatus = timerID.isValid();
    if ( ! localTimerStatus ) {
    std::cout &lt;&lt; &quot;FAILED to &quot;;
    }
    std::cout &lt;&lt; &quot;set a &quot; &lt;&lt; numSec &lt;&lt; &quot; seconds timer for drivers initialization.&quot; &lt;&lt; std::endl;
    }
    status = ( localPrinterStatus &amp;&amp; localStorageStatus &amp;&amp; localTimerStatus);
</body>
              </effect>
            </transition>
            <transition xmi:id="_HSfeIMX8EeSsD5C2f30z-g" name="onResMgrPrinterRequest" source="_uPDp4MQOEeSirL7ina4YrA" target="_uPDp4MQOEeSirL7ina4YrA">
              <ownedRule xmi:id="_V1YDUMX9EeSsD5C2f30z-g" name="Printer requested">
                <specification xmi:type="uml:OpaqueExpression" xmi:id="_V1YDUcX9EeSsD5C2f30z-g">
                  <language>C++</language>
                  <body>return( resourceType == PrinterDriver);
</body>
                </specification>
              </ownedRule>
              <effect xmi:type="uml:OpaqueBehavior" xmi:id="_iA5vkMX-EeSsD5C2f30z-g" name="sendResMgrPrinterResource">
                <language>C++</language>
                <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] printer resource requested by computer,&quot;;
    if ( printerID.isValid() ) {
    if ( resMgr.resourceID( printerID ).send() ) {
    std::cout &lt;&lt; &quot; and sent.&quot; &lt;&lt; std::endl;
    } else {
    std::cout &lt;&lt; &quot; but ERROR sending printer resource!&quot; &lt;&lt; std::endl;
    }
    } else {
    if ( resMgr.resNotAvail().send() ) {
    std::cout &lt;&lt; &quot; but printer resource not available sent.&quot; &lt;&lt; std::endl;
    } else {
    std::cout &lt;&lt; &quot; but ERROR sending printer resource not available!&quot; &lt;&lt; std::endl;
    }
    }
</body>
              </effect>
              <trigger xmi:id="_PGl6IA8aEeWl7ddVi7dGGQ" name="onRequestPrinter" event="_qNNNAA8YEeWl7ddVi7dGGQ" port="_pCSIcMXOEeSsD5C2f30z-g"/>
            </transition>
            <transition xmi:id="_IlhzUMX8EeSsD5C2f30z-g" name="onResMgrStorageRequest" source="_uPDp4MQOEeSirL7ina4YrA" target="_uPDp4MQOEeSirL7ina4YrA">
              <ownedRule xmi:id="_P4ZcoMX_EeSsD5C2f30z-g" name="StorageRequested">
                <specification xmi:type="uml:OpaqueExpression" xmi:id="_P4ZcocX_EeSsD5C2f30z-g">
                  <language>C++</language>
                  <body>return( resourceType == StorageDriver);
</body>
                </specification>
              </ownedRule>
              <effect xmi:type="uml:OpaqueBehavior" xmi:id="_095lEMX-EeSsD5C2f30z-g" name="sendResMgrStorageResource">
                <language>C++</language>
                <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] storage resource requested by Computer,&quot;;
    if ( storageID.isValid() ) {
    if ( resMgr.resourceID( storageID ).send() ) {
    std::cout &lt;&lt; &quot; and sent.&quot; &lt;&lt; std::endl;
    } else {
    std::cout &lt;&lt; &quot; but ERROR sending storage resource!&quot; &lt;&lt; std::endl;
    }
    } else {
    if ( resMgr.resNotAvail().send() ) {
    std::cout &lt;&lt; &quot; but storage resource not available sent.&quot; &lt;&lt; std::endl;
    } else {
    std::cout &lt;&lt; &quot; but ERROR sending storage resource not available&quot; &lt;&lt; std::endl;
    }
    }
</body>
              </effect>
              <trigger xmi:id="_YwcJQA8aEeWl7ddVi7dGGQ" name="onStorageRequest" event="_vbaXQA8YEeWl7ddVi7dGGQ" port="_pCSIcMXOEeSsD5C2f30z-g"/>
            </transition>
            <transition xmi:id="_EC_bIMePEeSz1oN1Kl4Now" name="OK" guard="_TkG_oMePEeSz1oN1Kl4Now" source="_vjKL0MeMEeSz1oN1Kl4Now" target="_p3iWUA4YEeWZmqO69MGcNA">
              <ownedRule xmi:id="_TkG_oMePEeSz1oN1Kl4Now" name="SuccesfulInitialization">
                <specification xmi:type="uml:OpaqueExpression" xmi:id="_TkG_ocePEeSz1oN1Kl4Now">
                  <language>C++</language>
                  <body>    return( status );
</body>
                </specification>
              </ownedRule>
              <effect xmi:type="uml:OpaqueBehavior" xmi:id="_qLX1kPBOEeSy0dZlYL7EHw" name="InstantiateSuccess">
                <language>C++</language>
                <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] drivers instantiated.&quot; &lt;&lt; std::endl;
</body>
              </effect>
            </transition>
            <transition xmi:id="_JN9rMMePEeSz1oN1Kl4Now" name="NOK" guard="_Z32OkMePEeSz1oN1Kl4Now" source="_vjKL0MeMEeSz1oN1Kl4Now" target="_Eytn4MePEeSz1oN1Kl4Now">
              <ownedRule xmi:id="_Z32OkMePEeSz1oN1Kl4Now" name="FailedInitialization">
                <specification xmi:type="uml:OpaqueExpression" xmi:id="_Z32OkcePEeSz1oN1Kl4Now">
                  <language>C++</language>
                  <body>    return ( ! status );
</body>
                </specification>
              </ownedRule>
              <effect xmi:type="uml:OpaqueBehavior" xmi:id="_jXgVEPBOEeSy0dZlYL7EHw" name="InitiFailed">
                <language>C++</language>
                <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] FAILed to initialize!&quot; &lt;&lt; std::endl;
</body>
              </effect>
            </transition>
            <transition xmi:id="_we32sA4YEeWZmqO69MGcNA" name="onTimeout" source="_p3iWUA4YEeWZmqO69MGcNA" target="_uPDp4MQOEeSirL7ina4YrA">
              <effect xmi:type="uml:OpaqueBehavior" xmi:id="_T_5GEA5DEeWfxoP9jGN4_w" name="broadcastReady">
                <language>C++</language>
                <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    /**
    * Telling the world that the ResourceManager is taking requests!
    */
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] &quot;;
    if ( resMgr.resMgrRunning().send() ) {
    std::cout &lt;&lt; &quot;told &quot;;
    } else {
    std::cout &lt;&lt; &quot;FAILED to tell &quot;;
    }
    std::cout &lt;&lt; &quot;its clients that it is taking requests.&quot; &lt;&lt; std::endl;
</body>
              </effect>
              <trigger xmi:id="_uq1UIA5CEeWfxoP9jGN4_w" name="onTimeout" port="_Nf-gUA4XEeWZmqO69MGcNA">
                <event xmi:type="uml:CallEvent" href="pathmap://UMLRTRTSLIB/UMLRT-RTS.uml#_IaEO8HDxEeSwWKwNKw1iAA"/>
              </trigger>
            </transition>
            <transition xmi:id="_1apD4A8aEeWl7ddVi7dGGQ" name="onAppPrinterRequest" source="_uPDp4MQOEeSirL7ina4YrA" target="_uPDp4MQOEeSirL7ina4YrA">
              <effect xmi:type="uml:OpaqueBehavior" xmi:id="_BXI1oA8cEeWl7ddVi7dGGQ" name="sendAppPortPrinterResource">
                <language>C++</language>
                <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] printer resource requested by App,&quot;;
    if ( printerID.isValid() ) {
    if ( resMgr.resourceID( printerID ).send() ) {
    std::cout &lt;&lt; &quot; and sent.&quot; &lt;&lt; std::endl;
    } else {
    std::cout &lt;&lt; &quot; but got an ERROR sending!&quot; &lt;&lt; std::endl;
    }
    } else {
    if ( resMgr.resNotAvail().send() ) {
    std::cout &lt;&lt; &quot;[ but printer resource is not available sent&quot; &lt;&lt; std::endl;
    } else {
    std::cout &lt;&lt; &quot;but ERROR sending printer resource not available&quot; &lt;&lt; std::endl;
    }
    }
</body>
              </effect>
              <trigger xmi:id="_mDNKYA8bEeWl7ddVi7dGGQ" name="onAppPrinterRequest" event="_qNNNAA8YEeWl7ddVi7dGGQ" port="_w7EMQMbDEeSvmLj5mtpd2g"/>
            </transition>
            <transition xmi:id="_sfIsAA8bEeWl7ddVi7dGGQ" name="onAppPortStorageRequest" source="_uPDp4MQOEeSirL7ina4YrA" target="_uPDp4MQOEeSirL7ina4YrA">
              <effect xmi:type="uml:OpaqueBehavior" xmi:id="_fybTYA8cEeWl7ddVi7dGGQ" name="sendAppPortStorageResource">
                <language>C++</language>
                <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] storage resource requested by App,&quot;;
    if ( storageID.isValid() ) {
    if ( appPort.resourceID( storageID ).send() ) {
    std::cout &lt;&lt; &quot; and sent.&quot; &lt;&lt; std::endl;
    } else {
    std::cout &lt;&lt; &quot; but ERROR sending storage resource!&quot; &lt;&lt; std::endl;
    }
    } else {
    if ( appPort.resNotAvail().send() ) {
    std::cout &lt;&lt; &quot; but storage resource not available sent.&quot; &lt;&lt; std::endl;
    } else {
    std::cout &lt;&lt; &quot;but ERROR sending storage resource not available!&quot; &lt;&lt; std::endl;
    }
    }
</body>
              </effect>
              <trigger xmi:id="_JvPTkA8dEeWl7ddVi7dGGQ" name="onAppPortStorageRequest" event="_vbaXQA8YEeWl7ddVi7dGGQ" port="_w7EMQMbDEeSvmLj5mtpd2g"/>
            </transition>
            <subvertex xmi:type="uml:Pseudostate" xmi:id="_rMOyEMQOEeSirL7ina4YrA" name="Initial1"/>
            <subvertex xmi:type="uml:State" xmi:id="_uPDp4MQOEeSirL7ina4YrA" name="WaitingForRequest">
              <entry xmi:type="uml:OpaqueBehavior" xmi:id="_YOXT8O0NEeSzlZWHZcnPXA" name="waitingForRequest">
                <language>C++</language>
                <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] is in state {WaitingForRequest},  waiting for a request&quot; &lt;&lt; std::endl;
</body>
              </entry>
              <exit xmi:type="uml:OpaqueBehavior" xmi:id="_m4LMsA7dEeWWHqV5N_7gJQ" name="requestReceived">
                <language>C++</language>
                <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] received a request!&quot; &lt;&lt; std::endl;
</body>
              </exit>
            </subvertex>
            <subvertex xmi:type="uml:Pseudostate" xmi:id="_vjKL0MeMEeSz1oN1Kl4Now" name="instantiateOK" kind="choice"/>
            <subvertex xmi:type="uml:State" xmi:id="_Eytn4MePEeSz1oN1Kl4Now" name="InitFail">
              <entry xmi:type="uml:OpaqueBehavior" xmi:id="_QH-LUA7dEeWWHqV5N_7gJQ" name="initFailState">
                <language>C++</language>
                <body>    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] is in state {InitFail}&quot; &lt;&lt; std::endl;
</body>
              </entry>
            </subvertex>
            <subvertex xmi:type="uml:State" xmi:id="_p3iWUA4YEeWZmqO69MGcNA" name="WaitInitTimeout" visibility="package">
              <entry xmi:type="uml:OpaqueBehavior" xmi:id="_5nGcIA48EeWfxoP9jGN4_w" name="waitOnTimeout">
                <language>C++</language>
                <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] is in state {WaitInitTimeout}&quot; &lt;&lt; std::endl;
</body>
              </entry>
            </subvertex>
            <subvertex xmi:type="uml:Pseudostate" xmi:id="_I2Gn0NP8EeWREsRfakpzqA" name="Initial2"/>
          </region>
        </ownedBehavior>
      </packagedElement>
      <packagedElement xmi:type="uml:Usage" xmi:id="_T45j8PBMEeSy0dZlYL7EHw" client="_fMulcH_6EeSOLqU6j-e_hg" supplier="_e2WAMMQeEeSirL7ina4YrA"/>
      <packagedElement xmi:type="uml:Usage" xmi:id="_eZl7gPBMEeSy0dZlYL7EHw" client="_fMulcH_6EeSOLqU6j-e_hg">
        <supplier xmi:type="uml:Class" href="pathmap://UMLRTRTSLIB/UMLRT-RTS.uml#_6qkTMGXmEeS_4daqvwyFrg"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Usage" xmi:id="_ev0DIPBMEeSy0dZlYL7EHw" client="_fMulcH_6EeSOLqU6j-e_hg">
        <supplier xmi:type="uml:Class" href="pathmap://UMLRTRTSLIB/UMLRT-RTS.uml#_IWYV4G6NEeSyDdTKostG4Q"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Usage" xmi:id="_saNisPWTEeSqKZdqtEmi8Q" client="_2WM7UMO6EeSxS9_G15_gSg" supplier="_z6QQYMOFEeSSS8SwKHucgQ"/>
      <packagedElement xmi:type="uml:Usage" xmi:id="_tKPRcPWTEeSqKZdqtEmi8Q" client="_2WM7UMO6EeSxS9_G15_gSg" supplier="_vk5ZsMOFEeSSS8SwKHucgQ"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="_lRFDsMOJEeSSS8SwKHucgQ" name="Software">
      <packagedElement xmi:type="uml:Class" xmi:id="_9YrV0MOJEeSSS8SwKHucgQ" name="Application" isActive="true">
        <ownedAttribute xmi:id="_WvYkUMQXEeSirL7ina4YrA" name="applicationType" visibility="protected" type="_5luYcMQUEeSirL7ina4YrA" aggregation="composite" association="_ZtZPwAiCEeWmptSG6Ct2-w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="_N2fr8MOyEeSxS9_G15_gSg" name="WordProcessorApp" visibility="public" classifierBehavior="_tFC1oMYCEeSsD5C2f30z-g" isActive="true">
        <generalization xmi:id="_fxyMwOTlEeaUbOkbRJ3acg" general="_9YrV0MOJEeSSS8SwKHucgQ"/>
        <ownedAttribute xmi:type="uml:Port" xmi:id="_JKtYAMQPEeSirL7ina4YrA" name="resourcePort" visibility="public" type="_sSppwMQdEeSirL7ina4YrA" isOrdered="true" aggregation="composite" isBehavior="true" isConjugated="true"/>
        <ownedAttribute xmi:type="uml:Port" xmi:id="_oyefIMYAEeSsD5C2f30z-g" name="frame" visibility="public" isOrdered="true" aggregation="composite" isBehavior="true" isService="false">
          <type xmi:type="uml:Collaboration" href="pathmap://UMLRTRTSLIB/UMLRT-RTS.uml#_TWVjwGtVEeSCmtGQ-V4nzg"/>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Port" xmi:id="_5Gm08MYAEeSsD5C2f30z-g" name="UserControlePort" type="_vOIpQMO2EeSxS9_G15_gSg" isOrdered="true" aggregation="composite" isBehavior="true"/>
        <ownedAttribute xmi:id="_I8yqgMYBEeSsD5C2f30z-g" name="deviceInterface" visibility="protected" type="_ZUBdgIB6EeSeANT-DfY5oA" aggregation="shared">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QtCTsMYBEeSsD5C2f30z-g"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QtEI4MYBEeSsD5C2f30z-g" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Port" xmi:id="_jacOAMYBEeSsD5C2f30z-g" name="usbPort" visibility="public" type="_6tx6sIB-EeSeANT-DfY5oA" isOrdered="true" aggregation="composite" isBehavior="true" isConjugated="true" isService="false"/>
        <ownedAttribute xmi:id="_L0QU8MYDEeSsD5C2f30z-g" name="document" visibility="protected" aggregation="composite">
          <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_g98OMBRUEeW80tAMjGoZKg" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_g9-DYBRUEeW80tAMjGoZKg" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_urYxMMbaEeSvmLj5mtpd2g" name="printerID" visibility="protected" aggregation="composite">
          <type xmi:type="uml:Class" href="pathmap://UMLRTRTSLIB/UMLRT-RTS.uml#_GfwZUICSEeSeANT-DfY5oA"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_RCE7AMd_EeSz1oN1Kl4Now" name="progress" visibility="protected" aggregation="composite">
          <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_uUaXMMeAEeSz1oN1Kl4Now" name="storageID" visibility="protected" aggregation="composite">
          <type xmi:type="uml:Class" href="pathmap://UMLRTRTSLIB/UMLRT-RTS.uml#_GfwZUICSEeSeANT-DfY5oA"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_Ev3W8MeJEeSz1oN1Kl4Now" name="importOK" visibility="protected" aggregation="composite">
          <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Port" xmi:id="_Mt-r4O0LEeSzlZWHZcnPXA" name="log" visibility="public" isOrdered="true" aggregation="composite" isBehavior="true" isService="false">
          <type xmi:type="uml:Collaboration" href="pathmap://UMLRTRTSLIB/UMLRT-RTS.uml#_6kIb0IeXEeSVyrlWP4nYew"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_9cNTsO1GEeSZmPHiHLCOIw" name="status" visibility="protected">
          <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_rNb0gAiBEeWmptSG6Ct2-w" name="apptype" type="_5luYcMQUEeSirL7ina4YrA" redefinedProperty="_WvYkUMQXEeSirL7ina4YrA">
          <defaultValue xmi:type="uml:InstanceValue" xmi:id="_-U2_EAiGEeWmptSG6Ct2-w" type="_5luYcMQUEeSirL7ina4YrA" instance="_7OV8EMQUEeSirL7ina4YrA"/>
        </ownedAttribute>
        <ownedConnector xmi:id="_xN9oQMYBEeSsD5C2f30z-g" name="Connector1">
          <end xmi:id="_xN-PUMYBEeSsD5C2f30z-g" role="_jacOAMYBEeSsD5C2f30z-g">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_xN-PUcYBEeSsD5C2f30z-g" value="1"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xN-PUsYBEeSsD5C2f30z-g" value="1"/>
          </end>
          <end xmi:id="_xN-PU8YBEeSsD5C2f30z-g" partWithPort="_I8yqgMYBEeSsD5C2f30z-g" role="_vXWH4MXgEeSsD5C2f30z-g">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_xN-PVMYBEeSsD5C2f30z-g" value="1"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xN-PVcYBEeSsD5C2f30z-g" value="1"/>
          </end>
        </ownedConnector>
        <ownedBehavior xmi:type="uml:StateMachine" xmi:id="_tFC1oMYCEeSsD5C2f30z-g" name="WordProcessorApp_SM" isReentrant="false">
          <region xmi:id="_vz1-MMYCEeSsD5C2f30z-g" name="Region1">
            <transition xmi:id="_Ee0YcMYDEeSsD5C2f30z-g" name="Initial" source="_AE38sMYDEeSsD5C2f30z-g" target="_DcG-QMYDEeSsD5C2f30z-g">
              <effect xmi:type="uml:OpaqueBehavior" xmi:id="_EWxlsMeCEeSz1oN1Kl4Now" name="initializingApplication">
                <language>C++</language>
                <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    document = (char *) malloc(101);
    strcpy(document, &quot;Aenean lacinia bibendum nulla sed consectetur.\0\0&quot;);
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] is initializing and document contains string \&quot;&quot; &lt;&lt; document &lt;&lt; &quot;\&quot;.&quot; &lt;&lt; std::endl;
</body>
              </effect>
            </transition>
            <transition xmi:id="_SaU0kMYEEeSsD5C2f30z-g" name="onCreateDoc" source="_DcG-QMYDEeSsD5C2f30z-g" target="_DcG-QMYDEeSsD5C2f30z-g">
              <effect xmi:type="uml:OpaqueBehavior" xmi:id="_pfv4AMYEEeSsD5C2f30z-g" name="createDocument">
                <language>C++</language>
                <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; (localTime->tm_year + 1900) &lt;&lt; &quot;.&quot; &lt;&lt; std::setw(2) &lt;&lt; (localTime->tm_mon + 1) &lt;&lt; &quot;.&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_mday &lt;&lt; &quot; &quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] document created with provided string.&quot; &lt;&lt; std::endl;
</body>
              </effect>
              <trigger xmi:id="_Xyz7AOqJEeSlmKRr_VnIAg" name="onCreateDocument" event="_tb9rkMO3EeSxS9_G15_gSg" port="_5Gm08MYAEeSsD5C2f30z-g"/>
            </transition>
            <transition xmi:id="_thYhcMYEEeSsD5C2f30z-g" name="onAddToDoc" source="_DcG-QMYDEeSsD5C2f30z-g" target="_DcG-QMYDEeSsD5C2f30z-g">
              <effect xmi:type="uml:OpaqueBehavior" xmi:id="_6vVwgMYEEeSsD5C2f30z-g" name="addString">
                <language>C++</language>
                <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; (localTime->tm_year + 1900) &lt;&lt; &quot;.&quot; &lt;&lt; std::setw(2) &lt;&lt; (localTime->tm_mon + 1) &lt;&lt; &quot;.&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_mday &lt;&lt; &quot; &quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] String added to document.&quot; &lt;&lt; std::endl;
</body>
              </effect>
              <trigger xmi:id="_z2uToAiDEeWmptSG6Ct2-w" name="onAddToDoc" event="_efZJIMO4EeSxS9_G15_gSg" port="_5Gm08MYAEeSsD5C2f30z-g"/>
            </transition>
            <transition xmi:id="_QNf7MMYFEeSsD5C2f30z-g" name="onPrintDocument" source="_DcG-QMYDEeSsD5C2f30z-g" target="_yNH0kMbEEeSvmLj5mtpd2g">
              <effect xmi:type="uml:OpaqueBehavior" xmi:id="_CCoQkMYIEeSsD5C2f30z-g" name="printDocumentRequest">
                <language>C++</language>
                <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] received request to print the document&quot; &lt;&lt; std::endl;
</body>
              </effect>
              <trigger xmi:id="_AchD0MYHEeSsD5C2f30z-g" name="onPrintDocument" event="_0zt8QMO3EeSxS9_G15_gSg" port="_5Gm08MYAEeSsD5C2f30z-g"/>
            </transition>
            <transition xmi:id="_boq-AMYFEeSsD5C2f30z-g" name="printComplete_cont" source="_ND7NAMbHEeSvmLj5mtpd2g" target="_DcG-QMYDEeSsD5C2f30z-g">
              <effect xmi:type="uml:OpaqueBehavior" xmi:id="_ZvcWEMYGEeSsD5C2f30z-g" name="printComplete">
                <language>C++</language>
                <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] is done printing&quot;;
    if ( frame.deport(printerID, deviceInterface) ) {
    std::cout &lt;&lt; &quot; - printer driver released.&quot; &lt;&lt; std::endl;
    } else {
    std::cout &lt;&lt; &quot; - FAILed to release the printer driver!&quot; &lt;&lt; std::endl;
    }
</body>
              </effect>
            </transition>
            <transition xmi:id="_edA1MMbGEeSvmLj5mtpd2g" name="printerUnavailable" source="_bshqkMbGEeSvmLj5mtpd2g" target="_DcG-QMYDEeSsD5C2f30z-g"/>
            <transition xmi:id="_cuGPwMbbEeSvmLj5mtpd2g" name="onSaveDocument" source="_DcG-QMYDEeSsD5C2f30z-g" target="_WVfH4MbbEeSvmLj5mtpd2g">
              <effect xmi:type="uml:OpaqueBehavior" xmi:id="_a2JHAMeIEeSz1oN1Kl4Now" name="saveDocumentRequest">
                <language>C++</language>
                <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] received request to save the document&quot; &lt;&lt; std::endl;
</body>
              </effect>
              <trigger xmi:id="_ksVxUMbeEeSvmLj5mtpd2g" name="onSaveDocument" event="_931oIMO3EeSxS9_G15_gSg" port="_5Gm08MYAEeSsD5C2f30z-g"/>
            </transition>
            <transition xmi:id="_dVXrIMbbEeSvmLj5mtpd2g" name="StorageNotAvailable" source="_W86UQMbbEeSvmLj5mtpd2g" target="_DcG-QMYDEeSsD5C2f30z-g"/>
            <transition xmi:id="_eHXv0MbbEeSvmLj5mtpd2g" name="saveComplete_cont" source="_XUhjAMbbEeSvmLj5mtpd2g" target="_DcG-QMYDEeSsD5C2f30z-g">
              <effect xmi:type="uml:OpaqueBehavior" xmi:id="_rV5iMMeBEeSz1oN1Kl4Now" name="saveComplete">
                <language>C++</language>
                <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] is done saving&quot;;
    if ( frame.deport(storageID, deviceInterface) ) {
    std::cout &lt;&lt; &quot; - storage driver released.&quot; &lt;&lt; std::endl;
    } else {
    std::cout &lt;&lt; &quot; - FAILed to release the storage driver!&quot; &lt;&lt; std::endl;
    }
</body>
              </effect>
            </transition>
            <subvertex xmi:type="uml:Pseudostate" xmi:id="_AE38sMYDEeSsD5C2f30z-g" name="Initial1"/>
            <subvertex xmi:type="uml:State" xmi:id="_DcG-QMYDEeSsD5C2f30z-g" name="WaitingForCommand">
              <entry xmi:type="uml:OpaqueBehavior" xmi:id="_F_0I8BbHEeWa4sJtLVaM7A" name="waitingForCommand_EN">
                <language>C++</language>
                <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] is {WaitingForCommand}.&quot; &lt;&lt; std::endl;
</body>
              </entry>
            </subvertex>
            <subvertex xmi:type="uml:State" xmi:id="_D3UosMYFEeSsD5C2f30z-g" name="Printing">
              <connectionPoint xmi:id="_yNH0kMbEEeSvmLj5mtpd2g" name="EntryPoint1" kind="entryPoint"/>
              <connectionPoint xmi:id="_bshqkMbGEeSvmLj5mtpd2g" name="ExitPoint1" kind="exitPoint"/>
              <connectionPoint xmi:id="_ND7NAMbHEeSvmLj5mtpd2g" name="ExitPoint2" kind="exitPoint"/>
              <entry xmi:type="uml:OpaqueBehavior" xmi:id="_ffx8MBbHEeWa4sJtLVaM7A" name="printing_EN">
                <language>C++</language>
                <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] is {Printing}.&quot; &lt;&lt; std::endl;
</body>
              </entry>
              <region xmi:id="_yM6ZMMbEEeSvmLj5mtpd2g" name="Region1">
                <transition xmi:id="_7uSo0MbEEeSvmLj5mtpd2g" name="getPrinter" source="_yNH0kMbEEeSvmLj5mtpd2g" target="_6wgK4MbEEeSvmLj5mtpd2g">
                  <effect xmi:type="uml:OpaqueBehavior" xmi:id="_J8zV8MbFEeSvmLj5mtpd2g" name="requestPrinterDriver">
                    <language>C++</language>
                    <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;]&quot;;
    if ( resourcePort.requestPrinterDriver().send() ) {
    std::cout &lt;&lt; &quot; requested a printer driver&quot; &lt;&lt; std::endl;
    } else {
    std::cout &lt;&lt; &quot; FAILed to  request a printer driver&quot; &lt;&lt; std::endl;
    }
</body>
                  </effect>
                </transition>
                <transition xmi:id="_OpTE0MbGEeSvmLj5mtpd2g" name="onPrintResource" source="_6wgK4MbEEeSvmLj5mtpd2g" target="_9b6ywMeJEeSz1oN1Kl4Now">
                  <effect xmi:type="uml:OpaqueBehavior" xmi:id="_hD2kgMbaEeSvmLj5mtpd2g" name="importPrinterDriver">
                    <language>C++</language>
                    <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;]&quot;;
    printerID = (UMLRTCapsuleId) *rtdata;
    if ( printerID.isValid() ) {
    importOK = frame.import ( printerID, deviceInterface );
    std::cout &lt;&lt; &quot; importing a printer driver.&quot; &lt;&lt; std::endl;
    } else {
    importOK = false;
    std::cout &lt;&lt; &quot; received an invalid Printer ID&quot; &lt;&lt; std::endl;
    }
</body>
                  </effect>
                  <trigger xmi:id="_RJQJAMbaEeSvmLj5mtpd2g" name="onResourceID" event="_WOVBgMQeEeSirL7ina4YrA" port="_JKtYAMQPEeSirL7ina4YrA"/>
                </transition>
                <transition xmi:id="_c4pfcMbGEeSvmLj5mtpd2g" name="onResNotAvail" source="_6wgK4MbEEeSvmLj5mtpd2g" target="_bshqkMbGEeSvmLj5mtpd2g">
                  <effect xmi:type="uml:OpaqueBehavior" xmi:id="_Dvz-QMeAEeSz1oN1Kl4Now" name="printResourceNotAvailable">
                    <language>C++</language>
                    <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] print driver not available&quot; &lt;&lt; std::endl;
</body>
                  </effect>
                  <trigger xmi:id="_l8GW8O4YEeSJPsWo_Mnp3w" name="onResNotAvail" event="_AFeJgMXKEeSsD5C2f30z-g" port="_JKtYAMQPEeSirL7ina4YrA"/>
                </transition>
                <transition xmi:id="_T22ngMYFEeSsD5C2f30z-g" name="onPrintStatus" source="_mZ_S0MbGEeSvmLj5mtpd2g" target="_h1RbUMeTEeSz1oN1Kl4Now">
                  <effect xmi:type="uml:OpaqueBehavior" xmi:id="_9-zoAMbGEeSvmLj5mtpd2g" name="getProgress">
                    <language>C++</language>
                    <body>    progress = (int) *rtdata;
</body>
                  </effect>
                  <trigger xmi:id="_4OrnAMbHEeSvmLj5mtpd2g" name="onStatus" event="_2QT44MXiEeSsD5C2f30z-g" port="_jacOAMYBEeSsD5C2f30z-g"/>
                </transition>
                <transition xmi:id="_SW2fMMbHEeSvmLj5mtpd2g" name="printCompleted" guard="_EDWH4MbIEeSvmLj5mtpd2g" source="_h1RbUMeTEeSz1oN1Kl4Now" target="_ND7NAMbHEeSvmLj5mtpd2g">
                  <ownedRule xmi:id="_EDWH4MbIEeSvmLj5mtpd2g" name="progress_GTE_100">
                    <specification xmi:type="uml:OpaqueExpression" xmi:id="_EDWH4cbIEeSvmLj5mtpd2g">
                      <language>C++</language>
                      <body>    return( progress >= 100);
</body>
                    </specification>
                  </ownedRule>
                  <effect xmi:type="uml:OpaqueBehavior" xmi:id="_EZ8vYMbbEeSvmLj5mtpd2g" name="releasePrinterDriver">
                    <language>C++</language>
                    <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] has no more data&quot;;
    status = usbPort.eod().send();
    if ( status ) {
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] - sent EOD&quot;;
    } else {
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] - FAILed to send EOD&quot;;
    }
</body>
                  </effect>
                  <trigger xmi:id="_uKAnoMbIEeSvmLj5mtpd2g" event="_2QT44MXiEeSsD5C2f30z-g" port="_jacOAMYBEeSsD5C2f30z-g"/>
                </transition>
                <transition xmi:id="_GjQxwMeKEeSz1oN1Kl4Now" name="importNOK" guard="_V7QPcMeKEeSz1oN1Kl4Now" source="_9b6ywMeJEeSz1oN1Kl4Now" target="_bshqkMbGEeSvmLj5mtpd2g">
                  <ownedRule xmi:id="_V7QPcMeKEeSz1oN1Kl4Now" name="importNOK">
                    <specification xmi:type="uml:OpaqueExpression" xmi:id="_V7QPcceKEeSz1oN1Kl4Now">
                      <language>C++</language>
                      <body>    return( ! importOK );
</body>
                    </specification>
                  </ownedRule>
                  <effect xmi:type="uml:OpaqueBehavior" xmi:id="_RsWXoO09EeStM4MpdkuAjQ" name="importNOK">
                    <language>C++</language>
                    <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] could not import printer driver&quot; &lt;&lt; std::endl;
</body>
                  </effect>
                </transition>
                <transition xmi:id="_IFuDAMeKEeSz1oN1Kl4Now" name="importOK" guard="_N0lDQMeKEeSz1oN1Kl4Now" source="_9b6ywMeJEeSz1oN1Kl4Now" target="_0xE8QO4aEeSJPsWo_Mnp3w">
                  <ownedRule xmi:id="_N0lDQMeKEeSz1oN1Kl4Now">
                    <specification xmi:type="uml:OpaqueExpression" xmi:id="_N0lDQceKEeSz1oN1Kl4Now">
                      <language>C++</language>
                      <body>    return( importOK );
</body>
                    </specification>
                  </ownedRule>
                  <effect xmi:type="uml:OpaqueBehavior" xmi:id="_IaS9cO09EeStM4MpdkuAjQ" name="printDocument">
                    <language>C++</language>
                    <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    status = usbPort.data(document).send();
    if ( status ) {
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] sent document to print&quot; &lt;&lt; std::endl;
    } else {
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] ERROR sending document to print&quot; &lt;&lt; std::endl;
    }
</body>
                  </effect>
                </transition>
                <transition xmi:id="_nMG9IMeTEeSz1oN1Kl4Now" name="printPrintProgress" guard="_QccrsMf-EeSjr4LTYwlKOw" source="_h1RbUMeTEeSz1oN1Kl4Now" target="_mZ_S0MbGEeSvmLj5mtpd2g">
                  <ownedRule xmi:id="_QccrsMf-EeSjr4LTYwlKOw" name="Progress_LT_100">
                    <specification xmi:type="uml:OpaqueExpression" xmi:id="_Qccrscf-EeSjr4LTYwlKOw">
                      <language>C++</language>
                      <body>    return( progress &lt; 100);
</body>
                    </specification>
                  </ownedRule>
                  <effect xmi:type="uml:OpaqueBehavior" xmi:id="_79hWkMeTEeSz1oN1Kl4Now" name="printPrintProgress">
                    <language>C++</language>
                    <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] Printing... &quot; &lt;&lt; (int) progress &lt;&lt; &quot;%%&quot; &lt;&lt; std::endl;
</body>
                  </effect>
                </transition>
                <transition xmi:id="_4iR9AO4aEeSJPsWo_Mnp3w" guard="_TaFF4O4bEeSJPsWo_Mnp3w" source="_0xE8QO4aEeSJPsWo_Mnp3w" target="_bshqkMbGEeSvmLj5mtpd2g">
                  <ownedRule xmi:id="_TaFF4O4bEeSJPsWo_Mnp3w" name="statusNOK">
                    <specification xmi:type="uml:OpaqueExpression" xmi:id="_TaFF4e4bEeSJPsWo_Mnp3w" name="statusNOK">
                      <language>C++</language>
                      <body>    return( ! status );
</body>
                    </specification>
                  </ownedRule>
                  <effect xmi:type="uml:OpaqueBehavior" xmi:id="_I2cMAPBgEeSy0dZlYL7EHw" name="couldNotPrint">
                    <language>C++</language>
                    <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] could not print document&quot; &lt;&lt; std::endl;
</body>
                  </effect>
                </transition>
                <transition xmi:id="_5G7iMO4aEeSJPsWo_Mnp3w" guard="_NN3bQO4bEeSJPsWo_Mnp3w" source="_0xE8QO4aEeSJPsWo_Mnp3w" target="_mZ_S0MbGEeSvmLj5mtpd2g">
                  <ownedRule xmi:id="_NN3bQO4bEeSJPsWo_Mnp3w" name="statusOK">
                    <specification xmi:type="uml:OpaqueExpression" xmi:id="_NN3bQe4bEeSJPsWo_Mnp3w" name="statusOK">
                      <language>C++</language>
                      <body>    return( status );
</body>
                    </specification>
                  </ownedRule>
                </transition>
                <subvertex xmi:type="uml:State" xmi:id="_6wgK4MbEEeSvmLj5mtpd2g" name="waitForPrinter">
                  <entry xmi:type="uml:OpaqueBehavior" xmi:id="_WFrQ0O4YEeSJPsWo_Mnp3w" name="waitingForPrinter">
                    <language>C++</language>
                    <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] waiting for printer driver&quot; &lt;&lt; std::endl;
</body>
                  </entry>
                </subvertex>
                <subvertex xmi:type="uml:State" xmi:id="_mZ_S0MbGEeSvmLj5mtpd2g" name="Printing"/>
                <subvertex xmi:type="uml:Pseudostate" xmi:id="_9b6ywMeJEeSz1oN1Kl4Now" name="importOK" kind="choice"/>
                <subvertex xmi:type="uml:Pseudostate" xmi:id="_h1RbUMeTEeSz1oN1Kl4Now" name="Choice1" kind="choice"/>
                <subvertex xmi:type="uml:Pseudostate" xmi:id="_0xE8QO4aEeSJPsWo_Mnp3w" name="printOK" kind="choice"/>
              </region>
            </subvertex>
            <subvertex xmi:type="uml:State" xmi:id="_RN478MbbEeSvmLj5mtpd2g" name="Saving">
              <connectionPoint xmi:id="_WVfH4MbbEeSvmLj5mtpd2g" name="EntryPoint1" kind="entryPoint"/>
              <connectionPoint xmi:id="_W86UQMbbEeSvmLj5mtpd2g" name="ExitPoint1" kind="exitPoint"/>
              <connectionPoint xmi:id="_XUhjAMbbEeSvmLj5mtpd2g" name="ExitPoint2" kind="exitPoint"/>
              <entry xmi:type="uml:OpaqueBehavior" xmi:id="_apcfYBbHEeWa4sJtLVaM7A" name="saving_EN">
                <language>C++</language>
                <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] is {Saving}.&quot; &lt;&lt; std::endl;
</body>
              </entry>
              <region xmi:id="_WVcEksbbEeSvmLj5mtpd2g">
                <transition xmi:id="_-HJfIMbbEeSvmLj5mtpd2g" name="getStorage" source="_WVfH4MbbEeSvmLj5mtpd2g" target="_fsiW0MbbEeSvmLj5mtpd2g">
                  <effect xmi:type="uml:OpaqueBehavior" xmi:id="_Kn8eQMeBEeSz1oN1Kl4Now" name="requestStorageDriver">
                    <language>C++</language>
                    <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;]&quot;;
    if ( resourcePort.requestStorageDriver().send() ) {
    std::cout &lt;&lt; &quot; requested a storage driver&quot; &lt;&lt; std::endl;
    } else {
    std::cout &lt;&lt; &quot;FAILed to request a storage driver&quot; &lt;&lt; std::endl;
    }
</body>
                  </effect>
                </transition>
                <transition xmi:id="_-rGgwMbbEeSvmLj5mtpd2g" name="onSaveStatus" source="_iQYMkMbbEeSvmLj5mtpd2g" target="_u_tRwMeSEeSz1oN1Kl4Now">
                  <effect xmi:type="uml:OpaqueBehavior" xmi:id="_cysfEMbfEeSvmLj5mtpd2g" name="saveProgress">
                    <language>C++</language>
                    <body>    progress = (int) *rtdata;
</body>
                  </effect>
                  <trigger xmi:id="_JcYKoMbfEeSvmLj5mtpd2g" name="onStatus" event="_2QT44MXiEeSsD5C2f30z-g" port="_jacOAMYBEeSsD5C2f30z-g"/>
                </transition>
                <transition xmi:id="__LtTcMbbEeSvmLj5mtpd2g" name="onResNotAvail" source="_fsiW0MbbEeSvmLj5mtpd2g" target="_W86UQMbbEeSvmLj5mtpd2g">
                  <effect xmi:type="uml:OpaqueBehavior" xmi:id="_lmUFAMeIEeSz1oN1Kl4Now" name="noStorageAvailable">
                    <language>C++</language>
                    <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[APPLICATION] storage driver not available&quot; &lt;&lt; std::endl;
</body>
                  </effect>
                  <trigger xmi:id="_da2HkO4YEeSJPsWo_Mnp3w" name="onResNotAvail" event="_AFeJgMXKEeSsD5C2f30z-g" port="_JKtYAMQPEeSirL7ina4YrA"/>
                </transition>
                <transition xmi:id="_AASLAMbcEeSvmLj5mtpd2g" name="saveCompleted" guard="_8nqKoMeREeSz1oN1Kl4Now" source="_u_tRwMeSEeSz1oN1Kl4Now" target="_XUhjAMbbEeSvmLj5mtpd2g">
                  <ownedRule xmi:id="_8nqKoMeREeSz1oN1Kl4Now" name="progress_GTE_100">
                    <specification xmi:type="uml:OpaqueExpression" xmi:id="_8nqKoceREeSz1oN1Kl4Now">
                      <language>C++</language>
                      <body>    return( progress >= 100 );
</body>
                    </specification>
                  </ownedRule>
                  <effect xmi:type="uml:OpaqueBehavior" xmi:id="_xGvAAMbfEeSvmLj5mtpd2g" name="releaseStorage Driver">
                    <language>C++</language>
                    <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] has no more data&quot;;
    status = usbPort.eod().send();
    if ( status ) {
    std::cout &lt;&lt; &quot; - sent EOD&quot; &lt;&lt; std::endl;
    } else {
    std::cout &lt;&lt; &quot; - FAILed to send EOD&quot; &lt;&lt; std::endl;
    }
</body>
                  </effect>
                </transition>
                <transition xmi:id="_BdvAcMbcEeSvmLj5mtpd2g" name="onStorageResource" source="_fsiW0MbbEeSvmLj5mtpd2g" target="_Ntc9AMeJEeSz1oN1Kl4Now">
                  <effect xmi:type="uml:OpaqueBehavior" xmi:id="_mJe9IMeAEeSz1oN1Kl4Now" name="importStorageDriver">
                    <language>C++</language>
                    <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    storageID = (UMLRTCapsuleId) *rtdata;
    if ( storageID.isValid() ) {
    importOK = frame.import(storageID,deviceInterface );
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] importing a storage driver.&quot; &lt;&lt; std::endl;
    } else {
    importOK = false;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] Invalid StorageDriver ID.&quot; &lt;&lt; std::endl;
    }
</body>
                  </effect>
                  <trigger xmi:id="_kLLacMbdEeSvmLj5mtpd2g" name="onResourceID" event="_WOVBgMQeEeSirL7ina4YrA" port="_JKtYAMQPEeSirL7ina4YrA"/>
                </transition>
                <transition xmi:id="_You-0MeJEeSz1oN1Kl4Now" name="importNOK" guard="_kX8X8MeJEeSz1oN1Kl4Now" source="_Ntc9AMeJEeSz1oN1Kl4Now" target="_W86UQMbbEeSvmLj5mtpd2g">
                  <ownedRule xmi:id="_kX8X8MeJEeSz1oN1Kl4Now" name="importNOK">
                    <specification xmi:type="uml:OpaqueExpression" xmi:id="_kX8X8ceJEeSz1oN1Kl4Now">
                      <language>C++</language>
                      <body>    return( ! importOK );
</body>
                    </specification>
                  </ownedRule>
                  <effect xmi:type="uml:OpaqueBehavior" xmi:id="_k0IWQO08EeStM4MpdkuAjQ" name="CouldNotImport">
                    <language>C++</language>
                    <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; (localTime->tm_year + 1900) &lt;&lt; &quot;.&quot; &lt;&lt; std::setw(2) &lt;&lt; (localTime->tm_mon + 1) &lt;&lt; &quot;.&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_mday &lt;&lt; &quot; &quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[APPLICATION] could not import storage driver&quot; &lt;&lt; std::endl;
</body>
                  </effect>
                </transition>
                <transition xmi:id="_bzo0kMeJEeSz1oN1Kl4Now" name="importOK" guard="_rXnf0MeJEeSz1oN1Kl4Now" source="_Ntc9AMeJEeSz1oN1Kl4Now" target="_Rea8YO4ZEeSJPsWo_Mnp3w">
                  <ownedRule xmi:id="_rXnf0MeJEeSz1oN1Kl4Now" name="importOK">
                    <specification xmi:type="uml:OpaqueExpression" xmi:id="_rXoG4MeJEeSz1oN1Kl4Now">
                      <language>C++</language>
                      <body>    return( importOK );
</body>
                    </specification>
                  </ownedRule>
                  <effect xmi:type="uml:OpaqueBehavior" xmi:id="_790dEMeJEeSz1oN1Kl4Now" name="saveDocument">
                    <language>C++</language>
                    <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    status = usbPort.data(document).send();
    if ( status ) {
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] sends document to save&quot; &lt;&lt; std::endl;
    } else {
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] error sending document to save&quot; &lt;&lt; std::endl;
    }
</body>
                  </effect>
                </transition>
                <transition xmi:id="_0H5TkMeSEeSz1oN1Kl4Now" name="printSaveProgress" guard="_OrRroMeTEeSz1oN1Kl4Now" source="_u_tRwMeSEeSz1oN1Kl4Now" target="_iQYMkMbbEeSvmLj5mtpd2g">
                  <ownedRule xmi:id="_OrRroMeTEeSz1oN1Kl4Now" name="progress_LT_100">
                    <specification xmi:type="uml:OpaqueExpression" xmi:id="_OrRroceTEeSz1oN1Kl4Now">
                      <language>C++</language>
                      <body>    return( progress &lt; 100 );
</body>
                    </specification>
                  </ownedRule>
                  <effect xmi:type="uml:OpaqueBehavior" xmi:id="_Coi5kMeTEeSz1oN1Kl4Now" name="printSaveProgress">
                    <language>C++</language>
                    <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] Saving...&quot; &lt;&lt; (int) progress &lt;&lt; &quot;%%&quot; &lt;&lt; std::endl;
</body>
                  </effect>
                </transition>
                <transition xmi:id="_Upvo4O4ZEeSJPsWo_Mnp3w" name="isOK" guard="_7uIqcO4ZEeSJPsWo_Mnp3w" source="_Rea8YO4ZEeSJPsWo_Mnp3w" target="_iQYMkMbbEeSvmLj5mtpd2g">
                  <ownedRule xmi:id="_7uIqcO4ZEeSJPsWo_Mnp3w" name="isOK">
                    <specification xmi:type="uml:OpaqueExpression" xmi:id="_7uIqce4ZEeSJPsWo_Mnp3w" name="statusTrue">
                      <language>C++</language>
                      <body>    return( status );
</body>
                    </specification>
                  </ownedRule>
                </transition>
                <transition xmi:id="_VruqUO4ZEeSJPsWo_Mnp3w" name="isNOK" guard="_EXhiIO4aEeSJPsWo_Mnp3w" source="_Rea8YO4ZEeSJPsWo_Mnp3w" target="_W86UQMbbEeSvmLj5mtpd2g">
                  <ownedRule xmi:id="_EXhiIO4aEeSJPsWo_Mnp3w" name="statusNOK">
                    <specification xmi:type="uml:OpaqueExpression" xmi:id="_EXhiIe4aEeSJPsWo_Mnp3w" name="statusNOK">
                      <language>C++</language>
                      <body>    return ( ! status );
</body>
                    </specification>
                  </ownedRule>
                  <effect xmi:type="uml:OpaqueBehavior" xmi:id="_ZsBegPBfEeSy0dZlYL7EHw" name="couldNotSave">
                    <language>C++</language>
                    <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] could not save document&quot; &lt;&lt; std::endl;
</body>
                  </effect>
                </transition>
                <subvertex xmi:type="uml:State" xmi:id="_fsiW0MbbEeSvmLj5mtpd2g" name="WaitForStorage">
                  <entry xmi:type="uml:OpaqueBehavior" xmi:id="_JqErwO4YEeSJPsWo_Mnp3w" name="waitingForStorage">
                    <language>C++</language>
                    <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] waiting for storage driver&quot; &lt;&lt; std::endl;
</body>
                  </entry>
                </subvertex>
                <subvertex xmi:type="uml:State" xmi:id="_iQYMkMbbEeSvmLj5mtpd2g" name="Saving"/>
                <subvertex xmi:type="uml:Pseudostate" xmi:id="_Ntc9AMeJEeSz1oN1Kl4Now" name="importOK" kind="choice"/>
                <subvertex xmi:type="uml:Pseudostate" xmi:id="_u_tRwMeSEeSz1oN1Kl4Now" name="Choice1" kind="choice"/>
                <subvertex xmi:type="uml:Pseudostate" xmi:id="_Rea8YO4ZEeSJPsWo_Mnp3w" name="saveOK" kind="choice"/>
              </region>
            </subvertex>
          </region>
        </ownedBehavior>
      </packagedElement>
      <packagedElement xmi:type="uml:Usage" xmi:id="_IVP_8PBfEeSy0dZlYL7EHw" client="_9YrV0MOJEeSSS8SwKHucgQ" supplier="_e2WAMMQeEeSirL7ina4YrA"/>
      <packagedElement xmi:type="uml:Association" xmi:id="_rNRccAiBEeWmptSG6Ct2-w" visibility="protected" memberEnd="_rNdCoAiBEeWmptSG6Ct2-w _0JrmgMQUEeSirL7ina4YrA" navigableOwnedEnd="_0JrmgMQUEeSirL7ina4YrA">
        <eAnnotations xmi:id="_rNZ_UAiBEeWmptSG6Ct2-w" source="org.eclipse.papyrus">
          <details xmi:id="_rNamYAiBEeWmptSG6Ct2-w" key="nature" value="UML_Nature"/>
        </eAnnotations>
        <ownedEnd xmi:id="_0JrmgMQUEeSirL7ina4YrA" name="applicationType" visibility="protected" type="_5luYcMQUEeSirL7ina4YrA" aggregation="composite" association="_rNRccAiBEeWmptSG6Ct2-w"/>
        <ownedEnd xmi:id="_rNdCoAiBEeWmptSG6Ct2-w" name="application" type="_N2fr8MOyEeSxS9_G15_gSg" association="_rNRccAiBEeWmptSG6Ct2-w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_ZtZPwAiCEeWmptSG6Ct2-w" visibility="protected" memberEnd="_Ztad4QiCEeWmptSG6Ct2-w _WvYkUMQXEeSirL7ina4YrA">
        <eAnnotations xmi:id="_ZtZ20AiCEeWmptSG6Ct2-w" source="org.eclipse.papyrus">
          <details xmi:id="_ZtZ20QiCEeWmptSG6Ct2-w" key="nature" value="UML_Nature"/>
        </eAnnotations>
        <ownedEnd xmi:id="_Ztad4QiCEeWmptSG6Ct2-w" name="wordprocessorapp" type="_9YrV0MOJEeSSS8SwKHucgQ" association="_ZtZPwAiCEeWmptSG6Ct2-w"/>
      </packagedElement>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="_9LmtsMOKEeSSS8SwKHucgQ" name="Hardware">
      <packagedElement xmi:type="uml:Package" xmi:id="_0NJpIMODEeSSS8SwKHucgQ" name="USB">
        <packagedElement xmi:type="uml:Class" xmi:id="_ZUBdgIB6EeSeANT-DfY5oA" name="USBDeviceDriver" isActive="true">
          <ownedAttribute xmi:type="uml:Port" xmi:id="_ui7KkICCEeSeANT-DfY5oA" name="usbExtPort" visibility="public" type="_6tx6sIB-EeSeANT-DfY5oA" isOrdered="true" aggregation="composite" isConjugated="true">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_OtZUMMOxEeSxS9_G15_gSg" value="1"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_OtdloMOxEeSxS9_G15_gSg" value="1"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_WXpRoMOGEeSSS8SwKHucgQ" name="deviceClass" visibility="protected" isStatic="true" type="_bFD18IB9EeSeANT-DfY5oA" isReadOnly="true" aggregation="composite">
            <defaultValue xmi:type="uml:InstanceValue" xmi:id="_pE2XoMOGEeSSS8SwKHucgQ" type="_bFD18IB9EeSeANT-DfY5oA" instance="_flU8IIB9EeSeANT-DfY5oA"/>
          </ownedAttribute>
          <ownedAttribute xmi:type="uml:Port" xmi:id="_vXWH4MXgEeSsD5C2f30z-g" name="usbInPort" type="_6tx6sIB-EeSeANT-DfY5oA" isOrdered="true" aggregation="composite" isConjugated="true"/>
          <ownedAttribute xmi:id="_QheE4MgaEeSjr4LTYwlKOw" name="busID" visibility="protected" aggregation="composite">
            <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
            <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_TEJxwBEQEeWflIKGXXXMWw"/>
          </ownedAttribute>
          <ownedConnector xmi:id="_GcZp4I--EeWMLsWj-jBDew" name="Connector1">
            <end xmi:id="_GcctMI--EeWMLsWj-jBDew" role="_ui7KkICCEeSeANT-DfY5oA"/>
            <end xmi:id="_GcdUQI--EeWMLsWj-jBDew" role="_vXWH4MXgEeSsD5C2f30z-g"/>
          </ownedConnector>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_vk5ZsMOFEeSSS8SwKHucgQ" name="USBPrinterDriver" isActive="true">
          <generalization xmi:id="_4Rk18MOFEeSSS8SwKHucgQ" general="_ZUBdgIB6EeSeANT-DfY5oA"/>
          <ownedAttribute xmi:id="_7mBMwMOGEeSSS8SwKHucgQ" name="usbDevice" visibility="protected" isStatic="true" type="_bFD18IB9EeSeANT-DfY5oA" isReadOnly="true" aggregation="composite" redefinedProperty="_WXpRoMOGEeSSS8SwKHucgQ">
            <defaultValue xmi:type="uml:InstanceValue" xmi:id="_UOIyAMOHEeSSS8SwKHucgQ" type="_bFD18IB9EeSeANT-DfY5oA" instance="_qBD7MIB9EeSeANT-DfY5oA"/>
          </ownedAttribute>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_z6QQYMOFEeSSS8SwKHucgQ" name="USBStorageDriver" isActive="true">
          <generalization xmi:id="_47ZPAMOFEeSSS8SwKHucgQ" general="_ZUBdgIB6EeSeANT-DfY5oA"/>
          <ownedAttribute xmi:id="_FqE2MMOIEeSSS8SwKHucgQ" name="deviceClass" visibility="protected" isStatic="true" type="_bFD18IB9EeSeANT-DfY5oA" isReadOnly="true" aggregation="composite" redefinedProperty="_WXpRoMOGEeSSS8SwKHucgQ">
            <defaultValue xmi:type="uml:InstanceValue" xmi:id="_WYxoIMOIEeSSS8SwKHucgQ" type="_bFD18IB9EeSeANT-DfY5oA" instance="_u6g9cIB9EeSeANT-DfY5oA"/>
          </ownedAttribute>
        </packagedElement>
        <packagedElement xmi:type="uml:Usage" xmi:id="_eCGWcMQ3EeSsW5rXQX5TZg" client="_ZUBdgIB6EeSeANT-DfY5oA" supplier="_bFD18IB9EeSeANT-DfY5oA"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_Ik9B0MXLEeSsD5C2f30z-g" name="ExternalDevices">
        <packagedElement xmi:type="uml:Class" xmi:id="_CperoMOLEeSSS8SwKHucgQ" name="LocalPrinter" visibility="public" classifierBehavior="_Qm-r0MOMEeSSS8SwKHucgQ" isActive="true">
          <ownedAttribute xmi:type="uml:Port" xmi:id="_SSMs8MOLEeSSS8SwKHucgQ" name="usbPort" type="_6tx6sIB-EeSeANT-DfY5oA" isOrdered="true" aggregation="composite" isBehavior="true"/>
          <ownedAttribute xmi:id="_ra0FQMONEeSSS8SwKHucgQ" name="usbClass" visibility="protected" type="_bFD18IB9EeSeANT-DfY5oA" aggregation="composite">
            <defaultValue xmi:type="uml:InstanceValue" xmi:id="_2TmzwMONEeSSS8SwKHucgQ" type="_bFD18IB9EeSeANT-DfY5oA" instance="_qBD7MIB9EeSeANT-DfY5oA"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_a1y-UMOOEeSSS8SwKHucgQ" name="connectionStatus" visibility="protected" aggregation="composite">
            <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
          </ownedAttribute>
          <ownedAttribute xmi:type="uml:Port" xmi:id="_hwfLcO0CEeSVocSGS756bA" name="log" visibility="public" isOrdered="true" aggregation="composite" isBehavior="true" isService="false">
            <type xmi:type="uml:Collaboration" href="pathmap://UMLRTRTSLIB/UMLRT-RTS.uml#_6kIb0IeXEeSVyrlWP4nYew"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_x2khYO0GEeSzlZWHZcnPXA" name="printingData" visibility="protected">
            <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
            <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_8iHeEO0GEeSzlZWHZcnPXA"/>
          </ownedAttribute>
          <ownedBehavior xmi:type="uml:StateMachine" xmi:id="_Qm-r0MOMEeSSS8SwKHucgQ" name="LocalPrinter_SM" isReentrant="false">
            <region xmi:id="_Shge0MOMEeSSS8SwKHucgQ" name="Region1">
              <transition xmi:id="_wVMKAMOMEeSSS8SwKHucgQ" name="initialize" source="_oTeWUMOMEeSSS8SwKHucgQ" target="_RN0-gMOOEeSSS8SwKHucgQ">
                <effect xmi:type="uml:OpaqueBehavior" xmi:id="__DwQMMOMEeSSS8SwKHucgQ" name="Connect_Printer">
                  <language>C++</language>
                  <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] initializing.&quot; &lt;&lt; std::endl;
    connectionStatus = usbPort.deviceClass(usbClass).send();
</body>
                </effect>
              </transition>
              <transition xmi:id="_WwbrcMOOEeSSS8SwKHucgQ" name="MsgSendFail" guard="_6xVG0MOOEeSSS8SwKHucgQ" source="_RN0-gMOOEeSSS8SwKHucgQ" target="_TRQO0MOOEeSSS8SwKHucgQ">
                <ownedRule xmi:id="_6xVG0MOOEeSSS8SwKHucgQ" name="ifNotConnected">
                  <specification xmi:type="uml:OpaqueExpression" xmi:id="_6xVG0cOOEeSSS8SwKHucgQ">
                    <language>C++</language>
                    <body>    return(! connectionStatus);
</body>
                  </specification>
                </ownedRule>
                <effect xmi:type="uml:OpaqueBehavior" xmi:id="_rVg5EMOOEeSSS8SwKHucgQ" name="PrinterConnectionFailed">
                  <language>C++</language>
                  <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] Error sending device class to hub : connection failed {&quot; &lt;&lt; connectionStatus &lt;&lt; &quot;]&quot; &lt;&lt; std::endl;
</body>
                </effect>
              </transition>
              <transition xmi:id="_7_MBEMOOEeSSS8SwKHucgQ" name="MessageSent" guard="_BNpC8MOPEeSSS8SwKHucgQ" source="_RN0-gMOOEeSSS8SwKHucgQ" target="_tkuNgMOMEeSSS8SwKHucgQ">
                <ownedRule xmi:id="_BNpC8MOPEeSSS8SwKHucgQ" name="ifConnected">
                  <specification xmi:type="uml:OpaqueExpression" xmi:id="_BNpC8cOPEeSSS8SwKHucgQ">
                    <language>C++</language>
                    <body>    return(connectionStatus);
</body>
                  </specification>
                </ownedRule>
                <effect xmi:type="uml:OpaqueBehavior" xmi:id="_rPoUsMOoEeSy9Z1Kd1VJnQ" name="DeviceClassSent">
                  <language>C++</language>
                  <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] sent its device class to the hub and is now {Connected}.&quot; &lt;&lt; std::endl;
</body>
                </effect>
              </transition>
              <transition xmi:id="_fyXCIMOSEeSSS8SwKHucgQ" name="onData" source="_tkuNgMOMEeSSS8SwKHucgQ" target="_tkuNgMOMEeSSS8SwKHucgQ">
                <effect xmi:type="uml:OpaqueBehavior" xmi:id="_mQV8wMOTEeSSS8SwKHucgQ" name="PrintData" isReentrant="false">
                  <language>C++</language>
                  <body>    /**
    * Only show logging start on 1st dataset received
    */
    if ( ! printingData ) {
    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] Printing Start ==========&quot; &lt;&lt; std::endl;
    printingData = true;
    }
    std::cout &lt;&lt; (char *) data;
    usbPort.status(100).send();
</body>
                </effect>
                <trigger xmi:id="_AszC4MOTEeSSS8SwKHucgQ" event="_sd1YQICAEeSeANT-DfY5oA" port="_SSMs8MOLEeSSS8SwKHucgQ"/>
              </transition>
              <transition xmi:id="_nsX14MOTEeSSS8SwKHucgQ" name="onEOD" source="_tkuNgMOMEeSSS8SwKHucgQ" target="_tkuNgMOMEeSSS8SwKHucgQ">
                <effect xmi:type="uml:OpaqueBehavior" xmi:id="_Li3_IMOUEeSSS8SwKHucgQ" name="PrintingEnd">
                  <language>C++</language>
                  <body>    std::cout &lt;&lt; std::endl;
    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] Printing Ended ==========&quot; &lt;&lt; std::endl;
    printingData = false;
</body>
                </effect>
                <trigger xmi:id="_BnKj8MOUEeSSS8SwKHucgQ" name="onEOD" event="_sh4x0ICAEeSeANT-DfY5oA" port="_SSMs8MOLEeSSS8SwKHucgQ"/>
              </transition>
              <transition xmi:id="_a7hUYMOlEeSy9Z1Kd1VJnQ" name="onEject" visibility="package" source="_tkuNgMOMEeSSS8SwKHucgQ" target="_TRQO0MOOEeSSS8SwKHucgQ">
                <effect xmi:type="uml:OpaqueBehavior" xmi:id="_13uUwMOoEeSy9Z1Kd1VJnQ" name="EjectPrinter">
                  <language>C++</language>
                  <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] ejected!&quot; &lt;&lt; std::endl;
</body>
                </effect>
                <trigger xmi:id="_JWF5UMOmEeSy9Z1Kd1VJnQ" name="onEject" event="__0FOoMW1EeSd16LgMAJOmw" port="_SSMs8MOLEeSSS8SwKHucgQ"/>
              </transition>
              <transition xmi:id="_RadG8AuoEeWCGuiso4e4-g" name="onConnect" source="_TRQO0MOOEeSSS8SwKHucgQ" target="_tkuNgMOMEeSSS8SwKHucgQ">
                <effect xmi:type="uml:OpaqueBehavior" xmi:id="_DS0ocAupEeWCGuiso4e4-g" name="connectingPrinter">
                  <language>C++</language>
                  <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] received a connection request and is now in {Connected} state.&quot; &lt;&lt; std::endl;
</body>
                </effect>
                <trigger xmi:id="_j7ojIAuoEeWCGuiso4e4-g" name="onConnect" event="_CudmMMXkEeSsD5C2f30z-g" port="_SSMs8MOLEeSSS8SwKHucgQ"/>
              </transition>
              <subvertex xmi:type="uml:Pseudostate" xmi:id="_oTeWUMOMEeSSS8SwKHucgQ" name="Initial1"/>
              <subvertex xmi:type="uml:State" xmi:id="_tkuNgMOMEeSSS8SwKHucgQ" name="Connected"/>
              <subvertex xmi:type="uml:Pseudostate" xmi:id="_RN0-gMOOEeSSS8SwKHucgQ" name="Connected?" kind="choice"/>
              <subvertex xmi:type="uml:State" xmi:id="_TRQO0MOOEeSSS8SwKHucgQ" name="Disconnected">
                <entry xmi:type="uml:OpaqueBehavior" xmi:id="_0AZmkO0EEeST5KnPUdkGIg" name="Disconnected">
                  <language>C++</language>
                  <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; (localTime->tm_year + 1900) &lt;&lt; &quot;.&quot; &lt;&lt; std::setw(2) &lt;&lt; (localTime->tm_mon + 1) &lt;&lt; &quot;.&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_mday &lt;&lt; &quot; &quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] is in {Disconnected} state.&quot; &lt;&lt; std::endl;
</body>
                </entry>
              </subvertex>
            </region>
          </ownedBehavior>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_FTGZQMOLEeSSS8SwKHucgQ" name="ExtMassStorage" classifierBehavior="_cv6NsMOmEeSy9Z1Kd1VJnQ" isActive="true">
          <ownedAttribute xmi:type="uml:Port" xmi:id="_q4ZLUMOmEeSy9Z1Kd1VJnQ" name="usbPort" visibility="public" type="_6tx6sIB-EeSeANT-DfY5oA" isOrdered="true" aggregation="composite" isBehavior="true"/>
          <ownedAttribute xmi:id="_d692IMOnEeSy9Z1Kd1VJnQ" name="usbClass" visibility="protected" type="_bFD18IB9EeSeANT-DfY5oA" aggregation="composite">
            <defaultValue xmi:type="uml:InstanceValue" xmi:id="_d692IcOnEeSy9Z1Kd1VJnQ" type="_bFD18IB9EeSeANT-DfY5oA" instance="_u6g9cIB9EeSeANT-DfY5oA"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_iKKlAMOoEeSy9Z1Kd1VJnQ" name="connectionStatus" visibility="protected" aggregation="composite">
            <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
          </ownedAttribute>
          <ownedAttribute xmi:type="uml:Port" xmi:id="_DzjO4O0IEeSzlZWHZcnPXA" name="log" visibility="public" isOrdered="true" aggregation="composite" isBehavior="true" isService="false">
            <type xmi:type="uml:Collaboration" href="pathmap://UMLRTRTSLIB/UMLRT-RTS.uml#_6kIb0IeXEeSVyrlWP4nYew"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_e9HAsO0JEeSzlZWHZcnPXA" name="savingData" visibility="protected">
            <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
            <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_jlVwEO0JEeSzlZWHZcnPXA"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_cLxEMBa7EeWD0440ocvGbg" name="lineCount" visibility="protected" aggregation="composite">
            <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8heigBydEduyofBvg4RL2w"/>
          </ownedAttribute>
          <ownedBehavior xmi:type="uml:StateMachine" xmi:id="_cv6NsMOmEeSy9Z1Kd1VJnQ" name="ExtMassStorage_SM" isReentrant="false">
            <region xmi:id="_d298YMOmEeSy9Z1Kd1VJnQ" name="Region1">
              <transition xmi:id="_YS9EwMOnEeSy9Z1Kd1VJnQ" name="initialize" source="_jTAHQMOmEeSy9Z1Kd1VJnQ" target="_OIT1sMOnEeSy9Z1Kd1VJnQ">
                <effect xmi:type="uml:OpaqueBehavior" xmi:id="_aJ3GkMOoEeSy9Z1Kd1VJnQ" name="Initialize">
                  <language>C++</language>
                  <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] initializing.&quot; &lt;&lt; std::endl;
    connectionStatus = usbPort.deviceClass(usbClass).send();
</body>
                </effect>
              </transition>
              <transition xmi:id="_Y9i54MOnEeSy9Z1Kd1VJnQ" name="Connected" guard="_RACl4MOpEeSy9Z1Kd1VJnQ" source="_OIT1sMOnEeSy9Z1Kd1VJnQ" target="_PG3vsMOnEeSy9Z1Kd1VJnQ">
                <ownedRule xmi:id="_RACl4MOpEeSy9Z1Kd1VJnQ" name="ifMsgSent">
                  <specification xmi:type="uml:OpaqueExpression" xmi:id="_RACl4cOpEeSy9Z1Kd1VJnQ" name="Connected">
                    <language>C++</language>
                    <body>    return(connectionStatus);
</body>
                  </specification>
                </ownedRule>
                <effect xmi:type="uml:OpaqueBehavior" xmi:id="_e6gVoMOpEeSy9Z1Kd1VJnQ" name="deviceClassSent">
                  <language>C++</language>
                  <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] sent its device class to the hub and is now in {Connected} state.&quot; &lt;&lt; std::endl;
</body>
                </effect>
              </transition>
              <transition xmi:id="_ZiPiYMOnEeSy9Z1Kd1VJnQ" name="Connect Failed" guard="_nXcFsMOpEeSy9Z1Kd1VJnQ" source="_OIT1sMOnEeSy9Z1Kd1VJnQ" target="_Pm2QQMOnEeSy9Z1Kd1VJnQ">
                <ownedRule xmi:id="_nXcFsMOpEeSy9Z1Kd1VJnQ" name="ifSendFailed">
                  <specification xmi:type="uml:OpaqueExpression" xmi:id="_nXcFscOpEeSy9Z1Kd1VJnQ" name="Connect Fail">
                    <language>C++</language>
                    <body>    return( ! connectionStatus );
</body>
                  </specification>
                </ownedRule>
                <effect xmi:type="uml:OpaqueBehavior" xmi:id="_zAwSMMOpEeSy9Z1Kd1VJnQ" name="logFailedConnection">
                  <language>C++</language>
                  <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] ERROR sending device class : Connection failed! {&quot; &lt;&lt;  connectionStatus &lt;&lt;  &quot;}.&quot;;
</body>
                </effect>
              </transition>
              <transition xmi:id="_aGZYUMOnEeSy9Z1Kd1VJnQ" name="Eject" source="_PG3vsMOnEeSy9Z1Kd1VJnQ" target="_Pm2QQMOnEeSy9Z1Kd1VJnQ">
                <effect xmi:type="uml:OpaqueBehavior" xmi:id="_teR2MMOrEeSy9Z1Kd1VJnQ" name="DeviceEjected">
                  <language>C++</language>
                  <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] ejected&quot; &lt;&lt; std::endl;
</body>
                </effect>
                <trigger xmi:id="_KZlkYMOrEeSy9Z1Kd1VJnQ" event="__0FOoMW1EeSd16LgMAJOmw" port="_q4ZLUMOmEeSy9Z1Kd1VJnQ"/>
              </transition>
              <transition xmi:id="_zQlMAMOrEeSy9Z1Kd1VJnQ" name="onData" source="_PG3vsMOnEeSy9Z1Kd1VJnQ" target="_PG3vsMOnEeSy9Z1Kd1VJnQ">
                <effect xmi:type="uml:OpaqueBehavior" xmi:id="_4xXMoMOuEeSxS9_G15_gSg" name="SavingData">
                  <language>C++</language>
                  <body>    /**
    * Only show logging start on 1st dataset received
    */
    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    if ( ! savingData ) {
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] starts saving ==========&quot; &lt;&lt; std::endl;
    savingData = true;
    lineCount = 0;
    }
    /**
    * Now print the data
    */
    //std::cout &lt;&lt; (char *) *rtdata; // Still need debugging of data retrieval
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[ Output #&quot; &lt;&lt; std::setw(4) &lt;&lt; ++lineCount &lt;&lt; &quot;] &quot; &lt;&lt; &quot;Aenean lacinia bibendum nulla sed consectetur.&quot; &lt;&lt; std::endl;
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;]&quot;;
    if ( usbPort.status(100).send() ) {
    std::cout &lt;&lt; &quot;sent status = &quot; &lt;&lt; 100 &lt;&lt; &quot;%&quot; &lt;&lt; std::endl;
    } else {
    std::cout &lt;&lt; &quot;ERROR sending status!&quot; &lt;&lt; std::endl;
    }
</body>
                </effect>
                <trigger xmi:id="_T9MMIMOsEeSy9Z1Kd1VJnQ" name="onData" event="_sd1YQICAEeSeANT-DfY5oA" port="_q4ZLUMOmEeSy9Z1Kd1VJnQ"/>
              </transition>
              <transition xmi:id="_7hNeEMOuEeSxS9_G15_gSg" name="onEOD" source="_PG3vsMOnEeSy9Z1Kd1VJnQ" target="_PG3vsMOnEeSy9Z1Kd1VJnQ">
                <effect xmi:type="uml:OpaqueBehavior" xmi:id="_Qk3eEMOvEeSxS9_G15_gSg" name="DoneSaving">
                  <language>C++</language>
                  <body>    std::cout &lt;&lt; std::endl;
    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] Saving Ended =====&quot; &lt;&lt; std::endl;
    savingData = false;
    exit(0); 
</body>
                </effect>
                <trigger xmi:id="_LiphYMOvEeSxS9_G15_gSg" event="_sh4x0ICAEeSeANT-DfY5oA" port="_q4ZLUMOmEeSy9Z1Kd1VJnQ"/>
              </transition>
              <transition xmi:id="_F60I8AuqEeWCGuiso4e4-g" name="onConnect" source="_Pm2QQMOnEeSy9Z1Kd1VJnQ" target="_PG3vsMOnEeSy9Z1Kd1VJnQ">
                <effect xmi:type="uml:OpaqueBehavior" xmi:id="_wOAo0AuqEeWCGuiso4e4-g" name="onConnect">
                  <language>C++</language>
                  <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; (localTime->tm_year + 1900) &lt;&lt; &quot;.&quot; &lt;&lt; std::setw(2) &lt;&lt; (localTime->tm_mon + 1) &lt;&lt; &quot;.&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_mday &lt;&lt; &quot; &quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] received connection request and is now in {Connected} state.&quot; &lt;&lt; std::endl;
</body>
                </effect>
                <trigger xmi:id="_pFa1gAuqEeWCGuiso4e4-g" name="onConnect" event="_CudmMMXkEeSsD5C2f30z-g" port="_q4ZLUMOmEeSy9Z1Kd1VJnQ"/>
              </transition>
              <subvertex xmi:type="uml:Pseudostate" xmi:id="_jTAHQMOmEeSy9Z1Kd1VJnQ" name="Initial1"/>
              <subvertex xmi:type="uml:Pseudostate" xmi:id="_OIT1sMOnEeSy9Z1Kd1VJnQ" name="connected?" kind="choice"/>
              <subvertex xmi:type="uml:State" xmi:id="_PG3vsMOnEeSy9Z1Kd1VJnQ" name="Connected"/>
              <subvertex xmi:type="uml:State" xmi:id="_Pm2QQMOnEeSy9Z1Kd1VJnQ" name="Disconnected">
                <entry xmi:type="uml:OpaqueBehavior" xmi:id="_0yU18O0IEeSzlZWHZcnPXA" name="StorageDisconnected">
                  <language>C++</language>
                  <body>    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] is in {Disconnected} state.&quot; &lt;&lt; std::endl;
</body>
                </entry>
              </subvertex>
            </region>
          </ownedBehavior>
        </packagedElement>
      </packagedElement>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="_xrA4MMOyEeSxS9_G15_gSg" name="Protocols">
      <packagedElement xmi:type="uml:Package" xmi:id="_TL3RUMO2EeSxS9_G15_gSg" name="AppControl">
        <packagedElement xmi:type="uml:Collaboration" xmi:id="_vOIpQMO2EeSxS9_G15_gSg" name="AppControl"/>
        <packagedElement xmi:type="uml:Interface" xmi:id="_vOLFgMO2EeSxS9_G15_gSg" name="AppControl">
          <ownedOperation xmi:id="_tb5aIMO3EeSxS9_G15_gSg" name="createDocument">
            <ownedParameter xmi:id="_U6r-4BadEeWD0440ocvGbg" name="fileName">
              <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
            </ownedParameter>
            <ownedParameter xmi:id="_tb5aIcO3EeSxS9_G15_gSg" name="data">
              <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
            </ownedParameter>
          </ownedOperation>
          <ownedOperation xmi:id="_0zpDwMO3EeSxS9_G15_gSg" name="printDocument"/>
          <ownedOperation xmi:id="_93x9wMO3EeSxS9_G15_gSg" name="saveDocument"/>
          <ownedOperation xmi:id="_efUQoMO4EeSxS9_G15_gSg" name="addToDoc"/>
          <ownedOperation xmi:id="_eHBBABacEeWD0440ocvGbg" name="openDocument">
            <ownedParameter xmi:id="_nENlgBacEeWD0440ocvGbg" name="fileName">
              <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
            </ownedParameter>
          </ownedOperation>
          <ownedOperation xmi:id="_D5z30BadEeWD0440ocvGbg" name="closeDocument"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Realization" xmi:id="_vONhwMO2EeSxS9_G15_gSg" name="ProtocolRealizesIncomingInterface" client="_vOIpQMO2EeSxS9_G15_gSg" supplier="_vOLFgMO2EeSxS9_G15_gSg"/>
        <packagedElement xmi:type="uml:Interface" xmi:id="_vOOI0MO2EeSxS9_G15_gSg" name="AppControl~">
          <ownedOperation xmi:id="_FlWGYMO4EeSxS9_G15_gSg" name="docID">
            <ownedParameter xmi:id="_FlWGYcO4EeSxS9_G15_gSg" name="docID">
              <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
            </ownedParameter>
          </ownedOperation>
          <ownedOperation xmi:id="_N6dfMMXREeSsD5C2f30z-g" name="error"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Usage" xmi:id="_vOQlEMO2EeSxS9_G15_gSg" name="ProtocolUsesOutgoingInterface" client="_vOIpQMO2EeSxS9_G15_gSg" supplier="_vOOI0MO2EeSxS9_G15_gSg"/>
        <packagedElement xmi:type="uml:Interface" xmi:id="_vORMIMO2EeSxS9_G15_gSg" name="AppControlIo"/>
        <packagedElement xmi:type="uml:Realization" xmi:id="_vOToYMO2EeSxS9_G15_gSg" name="ProtocolRealizesSymInterface" client="_vOIpQMO2EeSxS9_G15_gSg" supplier="_vORMIMO2EeSxS9_G15_gSg"/>
        <packagedElement xmi:type="uml:Usage" xmi:id="_vOUPcMO2EeSxS9_G15_gSg" name="ProtocolUsesSymInterface" client="_vOIpQMO2EeSxS9_G15_gSg" supplier="_vORMIMO2EeSxS9_G15_gSg"/>
        <packagedElement xmi:type="uml:AnyReceiveEvent" xmi:id="_vOU2gMO2EeSxS9_G15_gSg" name="*"/>
        <packagedElement xmi:type="uml:CallEvent" xmi:id="_tb9rkMO3EeSxS9_G15_gSg" name="createDocument" operation="_tb5aIMO3EeSxS9_G15_gSg"/>
        <packagedElement xmi:type="uml:CallEvent" xmi:id="_0zt8QMO3EeSxS9_G15_gSg" name="printDocument" operation="_0zpDwMO3EeSxS9_G15_gSg"/>
        <packagedElement xmi:type="uml:CallEvent" xmi:id="_931oIMO3EeSxS9_G15_gSg" name="saveDocument" operation="_93x9wMO3EeSxS9_G15_gSg"/>
        <packagedElement xmi:type="uml:CallEvent" xmi:id="_Flbl8MO4EeSxS9_G15_gSg" name="docID" operation="_FlWGYMO4EeSxS9_G15_gSg"/>
        <packagedElement xmi:type="uml:CallEvent" xmi:id="_efZJIMO4EeSxS9_G15_gSg" name="addToDoc" operation="_efUQoMO4EeSxS9_G15_gSg"/>
        <packagedElement xmi:type="uml:CallEvent" xmi:id="_N6f7cMXREeSsD5C2f30z-g" name="error" operation="_N6dfMMXREeSsD5C2f30z-g"/>
        <packagedElement xmi:type="uml:CallEvent" xmi:id="_eHEEUBacEeWD0440ocvGbg" name="openDocument" operation="_eHBBABacEeWD0440ocvGbg"/>
        <packagedElement xmi:type="uml:CallEvent" xmi:id="_D51F8BadEeWD0440ocvGbg" name="closeDocument" operation="_D5z30BadEeWD0440ocvGbg"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_pfCSoMQdEeSirL7ina4YrA" name="Resource">
        <packagedElement xmi:type="uml:Collaboration" xmi:id="_sSppwMQdEeSirL7ina4YrA" name="Resource"/>
        <packagedElement xmi:type="uml:Interface" xmi:id="_sSsGAMQdEeSirL7ina4YrA" name="Resource">
          <ownedOperation xmi:id="_qNHGYA8YEeWl7ddVi7dGGQ" name="requestPrinterDriver"/>
          <ownedOperation xmi:id="_vbZJIA8YEeWl7ddVi7dGGQ" name="requestStorageDriver"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Realization" xmi:id="_sSw-gMQdEeSirL7ina4YrA" name="ProtocolRealizesIncomingInterface" client="_sSppwMQdEeSirL7ina4YrA" supplier="_sSsGAMQdEeSirL7ina4YrA"/>
        <packagedElement xmi:type="uml:Interface" xmi:id="_sSxlkMQdEeSirL7ina4YrA" name="Resource~">
          <ownedOperation xmi:id="_WOQwEMQeEeSirL7ina4YrA" name="resourceID">
            <ownedParameter xmi:id="_WOQwEcQeEeSirL7ina4YrA" name="resourceID">
              <type xmi:type="uml:Class" href="pathmap://UMLRTRTSLIB/UMLRT-RTS.uml#_GfwZUICSEeSeANT-DfY5oA"/>
            </ownedParameter>
          </ownedOperation>
          <ownedOperation xmi:id="_AFVmoMXKEeSsD5C2f30z-g" name="resNotAvail"/>
          <ownedOperation xmi:id="_bqDV0O4MEeSAlbC0LA6o5Q" name="resMgrRunning"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Usage" xmi:id="_sS0o4MQdEeSirL7ina4YrA" name="ProtocolUsesOutgoingInterface" client="_sSppwMQdEeSirL7ina4YrA" supplier="_sSxlkMQdEeSirL7ina4YrA"/>
        <packagedElement xmi:type="uml:Interface" xmi:id="_sS1P8MQdEeSirL7ina4YrA" name="ResourceIo"/>
        <packagedElement xmi:type="uml:Realization" xmi:id="_sS4TQMQdEeSirL7ina4YrA" name="ProtocolRealizesSymInterface" client="_sSppwMQdEeSirL7ina4YrA" supplier="_sS1P8MQdEeSirL7ina4YrA"/>
        <packagedElement xmi:type="uml:Usage" xmi:id="_sS46UMQdEeSirL7ina4YrA" name="ProtocolUsesSymInterface" client="_sSppwMQdEeSirL7ina4YrA" supplier="_sS1P8MQdEeSirL7ina4YrA"/>
        <packagedElement xmi:type="uml:AnyReceiveEvent" xmi:id="_sS5hYMQdEeSirL7ina4YrA" name="*"/>
        <packagedElement xmi:type="uml:CallEvent" xmi:id="_WOVBgMQeEeSirL7ina4YrA" name="resourceID" operation="_WOQwEMQeEeSirL7ina4YrA"/>
        <packagedElement xmi:type="uml:CallEvent" xmi:id="_AFeJgMXKEeSsD5C2f30z-g" name="resNotAvail" operation="_AFVmoMXKEeSsD5C2f30z-g"/>
        <packagedElement xmi:type="uml:CallEvent" xmi:id="_zJOOoO4PEeSJPsWo_Mnp3w" name="resMgrRunning" operation="_bqDV0O4MEeSAlbC0LA6o5Q"/>
        <packagedElement xmi:type="uml:CallEvent" xmi:id="_qNNNAA8YEeWl7ddVi7dGGQ" name="requestPrinterDriver" operation="_qNHGYA8YEeWl7ddVi7dGGQ"/>
        <packagedElement xmi:type="uml:CallEvent" xmi:id="_vbaXQA8YEeWl7ddVi7dGGQ" name="requestStorageDriver" operation="_vbZJIA8YEeWl7ddVi7dGGQ"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_vn-D4IB-EeSeANT-DfY5oA" name="USBProtocol">
        <packagedElement xmi:type="uml:Collaboration" xmi:id="_6tx6sIB-EeSeANT-DfY5oA" name="USBProtocol"/>
        <packagedElement xmi:type="uml:Interface" xmi:id="_B2K5sIB_EeSeANT-DfY5oA" name="USBProtocol"/>
        <packagedElement xmi:type="uml:Interface" xmi:id="_CSN8gIB_EeSeANT-DfY5oA" name="USBProtocol~"/>
        <packagedElement xmi:type="uml:Interface" xmi:id="_CwJOoIB_EeSeANT-DfY5oA" name="USBProtocolIo">
          <ownedOperation xmi:id="_w-GT4IB_EeSeANT-DfY5oA" name="data">
            <ownedParameter xmi:id="_VSn4AIFTEeSxK_Fl3WspFw" name="data">
              <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
            </ownedParameter>
          </ownedOperation>
          <ownedOperation xmi:id="_eWwv4ICAEeSeANT-DfY5oA" name="eod"/>
          <ownedOperation xmi:id="_B9ND4ICBEeSeANT-DfY5oA" name="ack"/>
          <ownedOperation xmi:id="_C9k7wICBEeSeANT-DfY5oA" name="resend"/>
          <ownedOperation xmi:id="__0CyYMW1EeSd16LgMAJOmw" name="Eject"/>
          <ownedOperation xmi:id="_JWL3AMW2EeSd16LgMAJOmw" name="deviceClass">
            <ownedParameter xmi:id="_QTRk8MW2EeSd16LgMAJOmw" name="deviceClassID" type="_bFD18IB9EeSeANT-DfY5oA"/>
          </ownedOperation>
          <ownedOperation xmi:id="_2QQ1kMXiEeSsD5C2f30z-g" name="status">
            <ownedParameter xmi:id="_-CSncMXiEeSsD5C2f30z-g" name="percent">
              <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
            </ownedParameter>
          </ownedOperation>
          <ownedOperation xmi:id="_CgVgEMXjEeSsD5C2f30z-g" name="error">
            <ownedParameter xmi:id="_JfGpAMXjEeSsD5C2f30z-g" name="errorCode" type="_Me6CAMXjEeSsD5C2f30z-g"/>
          </ownedOperation>
          <ownedOperation xmi:id="_CubJ8MXkEeSsD5C2f30z-g" name="connect"/>
          <ownedOperation xmi:id="_MHzsIICAEeSeANT-DfY5oA" name="setDeviceBusID">
            <ownedParameter xmi:id="_5x_NgIFSEeSxK_Fl3WspFw" name="busId" effect="read">
              <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
            </ownedParameter>
          </ownedOperation>
          <ownedOperation xmi:id="_xW_ZgMXiEeSsD5C2f30z-g" name="getDeviceClass"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Realization" xmi:id="_KbphwIB_EeSeANT-DfY5oA" client="_6tx6sIB-EeSeANT-DfY5oA" supplier="_B2K5sIB_EeSeANT-DfY5oA"/>
        <packagedElement xmi:type="uml:Realization" xmi:id="_K4a9UIB_EeSeANT-DfY5oA" client="_6tx6sIB-EeSeANT-DfY5oA" supplier="_CwJOoIB_EeSeANT-DfY5oA"/>
        <packagedElement xmi:type="uml:Usage" xmi:id="_LqNmoIB_EeSeANT-DfY5oA" client="_6tx6sIB-EeSeANT-DfY5oA" supplier="_CSN8gIB_EeSeANT-DfY5oA"/>
        <packagedElement xmi:type="uml:Usage" xmi:id="_Meva4IB_EeSeANT-DfY5oA" client="_6tx6sIB-EeSeANT-DfY5oA" supplier="_CwJOoIB_EeSeANT-DfY5oA"/>
        <packagedElement xmi:type="uml:AnyReceiveEvent" xmi:id="_oDVi4ICAEeSeANT-DfY5oA" name="*"/>
        <packagedElement xmi:type="uml:CallEvent" xmi:id="_sU9wIICAEeSeANT-DfY5oA" name="setDeviceBusID" operation="_MHzsIICAEeSeANT-DfY5oA"/>
        <packagedElement xmi:type="uml:CallEvent" xmi:id="_sd1YQICAEeSeANT-DfY5oA" name="data" operation="_w-GT4IB_EeSeANT-DfY5oA"/>
        <packagedElement xmi:type="uml:CallEvent" xmi:id="_sh4x0ICAEeSeANT-DfY5oA" name="eod" operation="_eWwv4ICAEeSeANT-DfY5oA"/>
        <packagedElement xmi:type="uml:CallEvent" xmi:id="_E41HgICBEeSeANT-DfY5oA" name="ack" operation="_B9ND4ICBEeSeANT-DfY5oA"/>
        <packagedElement xmi:type="uml:CallEvent" xmi:id="_E6zdcICBEeSeANT-DfY5oA" name="resend" operation="_C9k7wICBEeSeANT-DfY5oA"/>
        <packagedElement xmi:type="uml:CallEvent" xmi:id="__0FOoMW1EeSd16LgMAJOmw" name="Eject" operation="__0CyYMW1EeSd16LgMAJOmw"/>
        <packagedElement xmi:type="uml:CallEvent" xmi:id="_JWO6UMW2EeSd16LgMAJOmw" name="deviceClass" operation="_JWL3AMW2EeSd16LgMAJOmw"/>
        <packagedElement xmi:type="uml:CallEvent" xmi:id="_xXCc0MXiEeSsD5C2f30z-g" name="getDeviceClass" operation="_xW_ZgMXiEeSsD5C2f30z-g"/>
        <packagedElement xmi:type="uml:CallEvent" xmi:id="_2QT44MXiEeSsD5C2f30z-g" name="status" operation="_2QQ1kMXiEeSsD5C2f30z-g"/>
        <packagedElement xmi:type="uml:CallEvent" xmi:id="_CgX8UMXjEeSsD5C2f30z-g" name="error" operation="_CgVgEMXjEeSsD5C2f30z-g"/>
        <packagedElement xmi:type="uml:CallEvent" xmi:id="_CudmMMXkEeSsD5C2f30z-g" name="connect" operation="_CubJ8MXkEeSsD5C2f30z-g"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_2hCXIMXPEeSsD5C2f30z-g" name="OSCommand">
        <packagedElement xmi:type="uml:Collaboration" xmi:id="_4zRfgMXPEeSsD5C2f30z-g" name="OSCommand"/>
        <packagedElement xmi:type="uml:Interface" xmi:id="_4zUi0MXPEeSsD5C2f30z-g" name="OSCommand">
          <ownedOperation xmi:id="_XNJA8MXQEeSsD5C2f30z-g" name="LaunchApp">
            <ownedParameter xmi:id="_dyEtkMXQEeSsD5C2f30z-g" name="appType" type="_5luYcMQUEeSirL7ina4YrA"/>
          </ownedOperation>
        </packagedElement>
        <packagedElement xmi:type="uml:Realization" xmi:id="_4zYNMMXPEeSsD5C2f30z-g" name="ProtocolRealizesIncomingInterface" client="_4zRfgMXPEeSsD5C2f30z-g" supplier="_4zUi0MXPEeSsD5C2f30z-g"/>
        <packagedElement xmi:type="uml:Interface" xmi:id="_4zZbUMXPEeSsD5C2f30z-g" name="OSCommand~">
          <ownedOperation xmi:id="_kqwcoMXQEeSsD5C2f30z-g" name="AppLaunched"/>
          <ownedOperation xmi:id="_oJKdMMXQEeSsD5C2f30z-g" name="AppLaunchFail"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Usage" xmi:id="_4zceoMXPEeSsD5C2f30z-g" name="ProtocolUsesOutgoingInterface" client="_4zRfgMXPEeSsD5C2f30z-g" supplier="_4zZbUMXPEeSsD5C2f30z-g"/>
        <packagedElement xmi:type="uml:Interface" xmi:id="_4zdswMXPEeSsD5C2f30z-g" name="OSCommandIo"/>
        <packagedElement xmi:type="uml:Realization" xmi:id="_4zgwEMXPEeSsD5C2f30z-g" name="ProtocolRealizesSymInterface" client="_4zRfgMXPEeSsD5C2f30z-g" supplier="_4zdswMXPEeSsD5C2f30z-g"/>
        <packagedElement xmi:type="uml:Usage" xmi:id="_4zh-MMXPEeSsD5C2f30z-g" name="ProtocolUsesSymInterface" client="_4zRfgMXPEeSsD5C2f30z-g" supplier="_4zdswMXPEeSsD5C2f30z-g"/>
        <packagedElement xmi:type="uml:AnyReceiveEvent" xmi:id="_4zilQMXPEeSsD5C2f30z-g" name="*"/>
        <packagedElement xmi:type="uml:CallEvent" xmi:id="_XNMEQMXQEeSsD5C2f30z-g" name="LaunchApp" operation="_XNJA8MXQEeSsD5C2f30z-g"/>
        <packagedElement xmi:type="uml:CallEvent" xmi:id="_kqzf8MXQEeSsD5C2f30z-g" name="AppLaunched" operation="_kqwcoMXQEeSsD5C2f30z-g"/>
        <packagedElement xmi:type="uml:CallEvent" xmi:id="_oJNggMXQEeSsD5C2f30z-g" name="AppLaunchFail" operation="_oJKdMMXQEeSsD5C2f30z-g"/>
      </packagedElement>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="_l6sCMMXKEeSsD5C2f30z-g" name="Enums and Constants">
      <packagedElement xmi:type="uml:Enumeration" xmi:id="_5luYcMQUEeSirL7ina4YrA" name="AppType">
        <ownedLiteral xmi:id="_7OV8EMQUEeSirL7ina4YrA" name="WordProcessor"/>
        <ownedLiteral xmi:id="_9DEpEMQUEeSirL7ina4YrA" name="Sync"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Enumeration" xmi:id="_bFD18IB9EeSeANT-DfY5oA" name="USBDeviceClasses">
        <ownedLiteral xmi:id="_flU8IIB9EeSeANT-DfY5oA" name="Unspecified"/>
        <ownedLiteral xmi:id="_hapfAIB9EeSeANT-DfY5oA" name="Audio"/>
        <ownedLiteral xmi:id="_jYBKoIB9EeSeANT-DfY5oA" name="Communication_CDCControl"/>
        <ownedLiteral xmi:id="_MWmoAIB-EeSeANT-DfY5oA" name="HID-HumanInterfaceDevice"/>
        <ownedLiteral xmi:id="_ltHZwIB9EeSeANT-DfY5oA" name="PID-PhysicalInterfaceDevice"/>
        <ownedLiteral xmi:id="_oyczAIB9EeSeANT-DfY5oA" name="Image"/>
        <ownedLiteral xmi:id="_qBD7MIB9EeSeANT-DfY5oA" name="Printer"/>
        <ownedLiteral xmi:id="_u6g9cIB9EeSeANT-DfY5oA" name="MassStorage"/>
        <ownedLiteral xmi:id="_ziE-cIB9EeSeANT-DfY5oA" name="USBHub"/>
        <ownedLiteral xmi:id="_092_8IB9EeSeANT-DfY5oA" name="CDC-Data"/>
        <ownedLiteral xmi:id="_-D5-cIB9EeSeANT-DfY5oA" name="SmartCard"/>
        <ownedLiteral xmi:id="__sfF0IB9EeSeANT-DfY5oA" name="ContentSecurity"/>
        <ownedLiteral xmi:id="_BeLF4IB-EeSeANT-DfY5oA" name="Video"/>
        <ownedLiteral xmi:id="_DQsMYIB-EeSeANT-DfY5oA" name="PersonalHealthcare"/>
        <ownedLiteral xmi:id="_GWTScIB-EeSeANT-DfY5oA" name="AV-AudioVideo"/>
        <ownedLiteral xmi:id="_XSE3EIB-EeSeANT-DfY5oA" name="Billboard"/>
        <ownedLiteral xmi:id="_ZONzoIB-EeSeANT-DfY5oA" name="DiagnosticDevice"/>
        <ownedLiteral xmi:id="_bR3tcIB-EeSeANT-DfY5oA" name="WirelessController"/>
        <ownedLiteral xmi:id="_dAhnoIB-EeSeANT-DfY5oA" name="Miscellaneous"/>
        <ownedLiteral xmi:id="_hpQtUIB-EeSeANT-DfY5oA" name="ApplicationSpecific-IrDA_TMC_DFU"/>
        <ownedLiteral xmi:id="_lWbioIB-EeSeANT-DfY5oA" name="VendorSpecific"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Enumeration" xmi:id="_e2WAMMQeEeSirL7ina4YrA" name="ResourceType">
        <ownedLiteral xmi:id="_g395sMQeEeSirL7ina4YrA" name="PrinterDriver"/>
        <ownedLiteral xmi:id="_imVgAMQeEeSirL7ina4YrA" name="StorageDriver"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Enumeration" xmi:id="_Me6CAMXjEeSsD5C2f30z-g" name="USBErrorCodes">
        <ownedLiteral xmi:id="_Pg4lQMXjEeSsD5C2f30z-g" name="OpFail"/>
        <ownedLiteral xmi:id="_Tiy7gMXjEeSsD5C2f30z-g" name="NotReady"/>
        <ownedLiteral xmi:id="_Yge9gMXjEeSsD5C2f30z-g" name="OutOfSpace"/>
        <ownedLiteral xmi:id="_VpjzsMXjEeSsD5C2f30z-g" name="OutOfPaper"/>
        <ownedLiteral xmi:id="_eQzWUMXjEeSsD5C2f30z-g" name="LowInkToner"/>
        <ownedLiteral xmi:id="_njLgoMXjEeSsD5C2f30z-g" name="PaperJam"/>
      </packagedElement>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="_H3z9EMXNEeSsD5C2f30z-g" name="System">
      <packagedElement xmi:type="uml:Class" xmi:id="_SfgCwMODEeSSS8SwKHucgQ" name="ComputerSystem" classifierBehavior="_F3llQMUeEeS9x_uTNp8Ezw" isActive="true">
        <ownedAttribute xmi:id="_bS384MODEeSSS8SwKHucgQ" name="computer" visibility="protected" type="_fMulcH_6EeSOLqU6j-e_hg" aggregation="composite">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_3r4oQAutEeWCGuiso4e4-g" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3r7rkAutEeWCGuiso4e4-g" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_wAf-UMOKEeSSS8SwKHucgQ" name="user" visibility="protected" type="_og5ZMMOKEeSSS8SwKHucgQ" aggregation="composite">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-2IBYAutEeWCGuiso4e4-g"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-2IocAutEeWCGuiso4e4-g" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_tcmSoMOUEeSy9Z1Kd1VJnQ" name="printer" visibility="protected" type="_CperoMOLEeSSS8SwKHucgQ" aggregation="composite">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9889sAutEeWCGuiso4e4-g"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_98-L0AutEeWCGuiso4e4-g" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_u28wwMOUEeSy9Z1Kd1VJnQ" name="massStorage" visibility="protected" type="_FTGZQMOLEeSSS8SwKHucgQ" aggregation="composite">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_68qcgAutEeWCGuiso4e4-g"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_68rqoAutEeWCGuiso4e4-g" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Port" xmi:id="_Uh604AutEeWCGuiso4e4-g" name="frame" visibility="public" isOrdered="true" aggregation="composite" isBehavior="true" isService="false">
          <type xmi:type="uml:Collaboration" href="pathmap://UMLRTRTSLIB/UMLRT-RTS.uml#_TWVjwGtVEeSCmtGQ-V4nzg"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_W30jAAuyEeWCGuiso4e4-g" name="initStatus" visibility="protected" aggregation="composite">
          <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Port" xmi:id="_f_gCwAu-EeWCGuiso4e4-g" name="timer" isOrdered="true" aggregation="composite" isBehavior="true" isService="false">
          <type xmi:type="uml:Collaboration" href="pathmap://UMLRTRTSLIB/UMLRT-RTS.uml#_MxQZgGXsEeS_4daqvwyFrg"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_2cdikAu_EeWCGuiso4e4-g" name="timerID" visibility="protected" aggregation="composite">
          <type xmi:type="uml:Class" href="pathmap://UMLRTRTSLIB/UMLRT-RTS.uml#_6qkTMGXmEeS_4daqvwyFrg"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_qrYScAvFEeWCGuiso4e4-g" name="_dummiest" visibility="protected" aggregation="composite">
          <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_ECQakBUbEeWFQ7RnHw84Pw" name="numSec" visibility="protected" aggregation="composite">
          <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
        </ownedAttribute>
        <ownedConnector xmi:id="_DOQBQMO6EeSxS9_G15_gSg" name="Connector3">
          <end xmi:id="_DOQoUMO6EeSxS9_G15_gSg" partWithPort="_wAf-UMOKEeSSS8SwKHucgQ" role="_J5xTgMO5EeSxS9_G15_gSg">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_DOQoUcO6EeSxS9_G15_gSg" value="1"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_DOQoUsO6EeSxS9_G15_gSg" value="1"/>
          </end>
          <end xmi:id="_DOQoU8O6EeSxS9_G15_gSg" partWithPort="_bS384MODEeSSS8SwKHucgQ" role="_m1ajcMO5EeSxS9_G15_gSg">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_DOQoVMO6EeSxS9_G15_gSg" value="1"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_DOQoVcO6EeSxS9_G15_gSg" value="1"/>
          </end>
        </ownedConnector>
        <ownedConnector xmi:id="_CZ02sO1nEeSNVueSbviXfA" name="Connector4">
          <end xmi:id="_CZ1dwO1nEeSNVueSbviXfA" partWithPort="_tcmSoMOUEeSy9Z1Kd1VJnQ" role="_SSMs8MOLEeSSS8SwKHucgQ"/>
          <end xmi:id="_CZ1dwe1nEeSNVueSbviXfA" partWithPort="_bS384MODEeSSS8SwKHucgQ" role="_oyJrcIFWEeSxK_Fl3WspFw"/>
        </ownedConnector>
        <ownedConnector xmi:id="_DVHaQO1nEeSNVueSbviXfA" name="Connector5">
          <end xmi:id="_DVIoYO1nEeSNVueSbviXfA" partWithPort="_u28wwMOUEeSy9Z1Kd1VJnQ" role="_q4ZLUMOmEeSy9Z1Kd1VJnQ"/>
          <end xmi:id="_DVIoYe1nEeSNVueSbviXfA" partWithPort="_bS384MODEeSSS8SwKHucgQ" role="_oyJrcIFWEeSxK_Fl3WspFw"/>
        </ownedConnector>
        <ownedBehavior xmi:type="uml:StateMachine" xmi:id="_F3llQMUeEeS9x_uTNp8Ezw" name="ComputerSystem_SM" isReentrant="false">
          <region xmi:id="_IAM3kMUeEeS9x_uTNp8Ezw" name="Region1">
            <transition xmi:id="_PQTBEMUeEeS9x_uTNp8Ezw" name="incarnateUser" source="_83cecAu-EeWCGuiso4e4-g" target="_h-CpgAuyEeWCGuiso4e4-g">
              <effect xmi:type="uml:OpaqueBehavior" xmi:id="_Z4ZoMMUeEeS9x_uTNp8Ezw" name="incarnateUser">
                <language>C++</language>
                <body>    /**
    * Incarnate the user
    */
    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] is incarnating a user.&quot; &lt;&lt; std::endl;
    UMLRTCapsuleId userId = frame.incarnate(user, User);
    initStatus = userId.isValid();
</body>
              </effect>
              <trigger xmi:id="_AW6JkBVwEeWTkNGQfAIBEw" name="onTimeout" port="_f_gCwAu-EeWCGuiso4e4-g">
                <event xmi:type="uml:CallEvent" href="pathmap://UMLRTRTSLIB/UMLRT-RTS.uml#_IaEO8HDxEeSwWKwNKw1iAA"/>
              </trigger>
            </transition>
            <transition xmi:id="_yXj1oAuyEeWCGuiso4e4-g" name="userOK" guard="_J_WmUAuzEeWCGuiso4e4-g" source="_h-CpgAuyEeWCGuiso4e4-g" target="_Nin-UMUeEeS9x_uTNp8Ezw">
              <ownedRule xmi:id="_J_WmUAuzEeWCGuiso4e4-g" name="userOK">
                <specification xmi:type="uml:OpaqueExpression" xmi:id="_J_WmUQuzEeWCGuiso4e4-g" name="userOK">
                  <language>C++</language>
                  <body>    return(initStatus);
</body>
                </specification>
              </ownedRule>
              <effect xmi:type="uml:OpaqueBehavior" xmi:id="_0UN1wA4GEeWZmqO69MGcNA" name="userIncarnated">
                <language>C++</language>
                <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] incarnated the user.&quot; &lt;&lt; std::endl;
</body>
              </effect>
            </transition>
            <transition xmi:id="_zHs5IAuyEeWCGuiso4e4-g" name="userNOK" guard="_aIfNEAuzEeWCGuiso4e4-g" source="_h-CpgAuyEeWCGuiso4e4-g" target="_tBnrsAuyEeWCGuiso4e4-g">
              <ownedRule xmi:id="_aIfNEAuzEeWCGuiso4e4-g" name="userNOK">
                <specification xmi:type="uml:OpaqueExpression" xmi:id="_aIfNEQuzEeWCGuiso4e4-g" name="initStatusNOK">
                  <language>C++</language>
                  <body>    return(!initStatus);
</body>
                </specification>
              </ownedRule>
              <effect xmi:type="uml:OpaqueBehavior" xmi:id="_uITGEA4GEeWZmqO69MGcNA" name="errorIncarnatingUser">
                <language>C++</language>
                <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] FAILed to incarnate the user!&quot; &lt;&lt; std::endl;
</body>
              </effect>
            </transition>
            <transition xmi:id="_J7s-8Au_EeWCGuiso4e4-g" name="setComputerInitTimer" source="_NC-08MUeEeS9x_uTNp8Ezw" target="_ZDdWUAvBEeWCGuiso4e4-g">
              <effect xmi:type="uml:OpaqueBehavior" xmi:id="_BJHSgAvAEeWCGuiso4e4-g" name="setComputerTimer">
                <language>C++</language>
                <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] is initializing &quot;;
    numSec = 20;
    timerID = timer.informIn(UMLRTTimespec(numSec,0));
    initStatus = timerID.isValid();
</body>
              </effect>
            </transition>
            <transition xmi:id="_W5o1AAu_EeWCGuiso4e4-g" name="incarnateDevices" source="_u8HzEAu-EeWCGuiso4e4-g" target="_wkR8UAvBEeWCGuiso4e4-g">
              <effect xmi:type="uml:OpaqueBehavior" xmi:id="_02LZ4AvCEeWCGuiso4e4-g" name="incarnateDevicesAndWait">
                <language>C++</language>
                <body>    /**
    * Initialise the devices
    */
    /**
    * Incarnate the local printer
    */
    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] local printer incarnation&quot;;
    UMLRTCapsuleId printerId = frame.incarnate(printer, LocalPrinter);
    bool printerStatus = printerId.isValid();
    if ( printerStatus ) {
    std::cout &lt;&lt; &quot; successful.&quot; &lt;&lt; std::endl;
    } else {
    std::cout &lt;&lt; &quot; FAILED!&quot; &lt;&lt; std::endl;
    }
    /**
    * Incarnate the mass storage device
    */
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] mass storage incarnation&quot;;
    UMLRTCapsuleId storageId = frame.incarnate(massStorage, ExtMassStorage);
    bool storageStatus = storageId.isValid();
    if ( storageStatus ) {
    std::cout &lt;&lt; &quot; successful.&quot; &lt;&lt; std::endl;
    } else {
    std::cout &lt;&lt; &quot; FAILED!&quot; &lt;&lt; std::endl;
    }
    bool timerStatus = false;
    if ( printerStatus &amp;&amp; storageStatus ) {
    /**
    * Set timer to wait for device initialisation
    */
    numSec = 15;
    timerID = timer.informIn(UMLRTTimespec(numSec,0));
    timerStatus = timerID.isValid();
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] &quot;;
    if ( ! timerStatus ) {
    std::cout &lt;&lt; &quot;FAILED to &quot;;
    }
    std::cout &lt;&lt; &quot;set &quot; &lt;&lt; numSec &lt;&lt; &quot; seconds timout for device initialization wait.&quot; &lt;&lt; std::endl;
    }
    initStatus = ( printerStatus &amp;&amp; storageStatus &amp;&amp; timerStatus);
</body>
              </effect>
              <trigger xmi:id="_vlDCAAvDEeWCGuiso4e4-g" name="onComputerTimeout" port="_f_gCwAu-EeWCGuiso4e4-g">
                <event xmi:type="uml:CallEvent" href="pathmap://UMLRTRTSLIB/UMLRT-RTS.uml#_IaEO8HDxEeSwWKwNKw1iAA"/>
              </trigger>
            </transition>
            <transition xmi:id="_ecM8oAvBEeWCGuiso4e4-g" name="timerOK" guard="_KhKVEAvCEeWCGuiso4e4-g" source="_ZDdWUAvBEeWCGuiso4e4-g" target="_u8HzEAu-EeWCGuiso4e4-g">
              <ownedRule xmi:id="_KhKVEAvCEeWCGuiso4e4-g" name="validTimer">
                <specification xmi:type="uml:OpaqueExpression" xmi:id="_KhKVEQvCEeWCGuiso4e4-g" name="validTimer">
                  <language>C++</language>
                  <body>    return(initStatus);
</body>
                </specification>
              </ownedRule>
              <effect xmi:type="uml:OpaqueBehavior" xmi:id="_wGf_gA4DEeWZmqO69MGcNA" name="TimerSet">
                <language>C++</language>
                <body>    std::cout &lt;&lt; &quot; and set a &quot; &lt;&lt; numSec &lt;&lt; &quot; seconds timer.&quot; &lt;&lt; std::endl;
</body>
              </effect>
            </transition>
            <transition xmi:id="_gDAiYAvBEeWCGuiso4e4-g" name="compTimerFail" guard="_j4M5AAvGEeWCGuiso4e4-g" source="_ZDdWUAvBEeWCGuiso4e4-g" target="_tBnrsAuyEeWCGuiso4e4-g">
              <ownedRule xmi:id="_j4M5AAvGEeWCGuiso4e4-g" name="Failed">
                <specification xmi:type="uml:OpaqueExpression" xmi:id="_j4M5AQvGEeWCGuiso4e4-g" name="Failed">
                  <language>C++</language>
                  <body>    return(!initStatus);
</body>
                </specification>
              </ownedRule>
              <effect xmi:type="uml:OpaqueBehavior" xmi:id="_rbKRwA4DEeWZmqO69MGcNA" name="TimerFail">
                <language>C++</language>
                <body>    std::cout &lt;&lt; &quot; but FAILed to set a &quot; &lt;&lt; numSec &lt;&lt; &quot; seconds timer!&quot; &lt;&lt; std::endl;
</body>
              </effect>
            </transition>
            <transition xmi:id="_g65XMAvCEeWCGuiso4e4-g" name="Failed" guard="_Z956cAvDEeWCGuiso4e4-g" source="_wkR8UAvBEeWCGuiso4e4-g" target="_tBnrsAuyEeWCGuiso4e4-g">
              <ownedRule xmi:id="_Z956cAvDEeWCGuiso4e4-g" name="Failed">
                <specification xmi:type="uml:OpaqueExpression" xmi:id="_Z956cQvDEeWCGuiso4e4-g" name="failure">
                  <language>C++</language>
                  <body>    return(!initStatus);
</body>
                </specification>
              </ownedRule>
              <effect xmi:type="uml:OpaqueBehavior" xmi:id="_mWsncA4FEeWZmqO69MGcNA" name="IncarnateFail">
                <language>C++</language>
                <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] did not incarnate all devices!&quot; &lt;&lt; std::endl;
</body>
              </effect>
            </transition>
            <transition xmi:id="_ioaB4AvCEeWCGuiso4e4-g" name="Success" guard="_hrbm0AvDEeWCGuiso4e4-g" source="_wkR8UAvBEeWCGuiso4e4-g" target="_83cecAu-EeWCGuiso4e4-g">
              <ownedRule xmi:id="_hrbm0AvDEeWCGuiso4e4-g">
                <specification xmi:type="uml:OpaqueExpression" xmi:id="_hrbm0QvDEeWCGuiso4e4-g" name="Success">
                  <language>C++</language>
                  <body>    return(initStatus);
</body>
                </specification>
              </ownedRule>
              <effect xmi:type="uml:OpaqueBehavior" xmi:id="_TOqxMA4GEeWZmqO69MGcNA" name="devicesIncarnated">
                <language>C++</language>
                <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] incarnated all external devices!&quot; &lt;&lt; std::endl;
    // context()->debugOutputModel();
</body>
              </effect>
            </transition>
            <subvertex xmi:type="uml:Pseudostate" xmi:id="_NC-08MUeEeS9x_uTNp8Ezw" name="Initial1"/>
            <subvertex xmi:type="uml:State" xmi:id="_Nin-UMUeEeS9x_uTNp8Ezw" name="Running">
              <entry xmi:type="uml:OpaqueBehavior" xmi:id="_1wK1AO4KEeSAlbC0LA6o5Q" name="Running">
                <language>C++</language>
                <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] is {Running}.&quot; &lt;&lt; std::endl;
</body>
              </entry>
            </subvertex>
            <subvertex xmi:type="uml:Pseudostate" xmi:id="_h-CpgAuyEeWCGuiso4e4-g" name="userOK?" kind="choice"/>
            <subvertex xmi:type="uml:State" xmi:id="_tBnrsAuyEeWCGuiso4e4-g" name="Failure">
              <entry xmi:type="uml:OpaqueBehavior" xmi:id="_mKmHgAvIEeWCGuiso4e4-g" name="ComputerSystemFailed">
                <language>C++</language>
                <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; (localTime->tm_year + 1900) &lt;&lt; &quot;.&quot; &lt;&lt; std::setw(2) &lt;&lt; (localTime->tm_mon + 1) &lt;&lt; &quot;.&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_mday &lt;&lt; &quot; &quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] terminated in failure!&quot; &lt;&lt; std::endl;
</body>
              </entry>
            </subvertex>
            <subvertex xmi:type="uml:State" xmi:id="_u8HzEAu-EeWCGuiso4e4-g" name="WaitingForComputerInit">
              <entry xmi:type="uml:OpaqueBehavior" xmi:id="_GZec4A4FEeWZmqO69MGcNA" name="waitingForComputerInit">
                <language>C++</language>
                <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] is waiting for computer initialisation {WaitingForComputerInit}.&quot; &lt;&lt; std::endl;
</body>
              </entry>
            </subvertex>
            <subvertex xmi:type="uml:State" xmi:id="_83cecAu-EeWCGuiso4e4-g" name="WaitingForDeviceInit">
              <entry xmi:type="uml:OpaqueBehavior" xmi:id="_eZK6wA4GEeWZmqO69MGcNA" name="waitForDeviceInit">
                <language>C++</language>
                <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;] is waiting for external device initialization.&quot; &lt;&lt; std::endl;
</body>
              </entry>
            </subvertex>
            <subvertex xmi:type="uml:Pseudostate" xmi:id="_ZDdWUAvBEeWCGuiso4e4-g" name="timerOK?" kind="choice"/>
            <subvertex xmi:type="uml:Pseudostate" xmi:id="_wkR8UAvBEeWCGuiso4e4-g" name="initOK?" kind="choice"/>
          </region>
        </ownedBehavior>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="_og5ZMMOKEeSSS8SwKHucgQ" name="User" classifierBehavior="_-AYDoMO4EeSxS9_G15_gSg" isActive="true">
        <ownedAttribute xmi:type="uml:Port" xmi:id="_J5xTgMO5EeSxS9_G15_gSg" name="computerPort" type="_vOIpQMO2EeSxS9_G15_gSg" isOrdered="true" aggregation="composite" isBehavior="true" isConjugated="true"/>
        <ownedAttribute xmi:type="uml:Port" xmi:id="_0W-4cMUhEeS9x_uTNp8Ezw" name="timer" visibility="public" isOrdered="true" aggregation="composite" isBehavior="true" isService="false">
          <type xmi:type="uml:Collaboration" href="pathmap://UMLRTRTSLIB/UMLRT-RTS.uml#_MxQZgGXsEeS_4daqvwyFrg"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_JoJRcBaOEeWD0440ocvGbg" name="numSec" visibility="protected" aggregation="composite">
          <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_O2UmgBaOEeWD0440ocvGbg" name="timerID" visibility="protected" aggregation="composite">
          <type xmi:type="uml:Class" href="pathmap://UMLRTRTSLIB/UMLRT-RTS.uml#_6qkTMGXmEeS_4daqvwyFrg"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_js2k8BaYEeWD0440ocvGbg" name="status" visibility="protected" aggregation="composite">
          <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
        </ownedAttribute>
        <ownedBehavior xmi:type="uml:StateMachine" xmi:id="_-AYDoMO4EeSxS9_G15_gSg" name="User_SM" isReentrant="false">
          <region xmi:id="_-3QBQMO4EeSxS9_G15_gSg" name="Region1">
            <transition xmi:id="_hjkPUMO5EeSxS9_G15_gSg" name="initialize" source="_ebPzgMO5EeSxS9_G15_gSg" target="_T-PT0BaUEeWD0440ocvGbg">
              <effect xmi:type="uml:OpaqueBehavior" xmi:id="_b3oZ8MWrEeS9x_uTNp8Ezw" name="Initialize_USER">
                <language>C++</language>
                <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;(&quot; &lt;&lt; this->getClass()->name &lt;&lt; &quot;)] initializing&quot;;
    numSec = 15;
    timerID = timer.informIn(UMLRTTimespec(numSec,0));
</body>
              </effect>
            </transition>
            <transition xmi:id="_lys4IBaNEeWD0440ocvGbg" name="onTimeout1" source="_hADSkMO5EeSxS9_G15_gSg" target="_pwd0kBaVEeWD0440ocvGbg">
              <effect xmi:type="uml:OpaqueBehavior" xmi:id="_laox4BaXEeWD0440ocvGbg" name="saveDocument">
                <language>C++</language>
                <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;(&quot; &lt;&lt; this->getClass()->name &lt;&lt; &quot;)]&quot;;
    bool sendStatus = computerPort.saveDocument().send();
    //numSec = 10;
    timerID = timer.informIn(UMLRTTimespec(numSec,0));
    status = sendStatus &amp;&amp; timerID.isValid();
</body>
              </effect>
              <trigger xmi:id="_HpnOkBaWEeWD0440ocvGbg" name="onTimeout" port="_0W-4cMUhEeS9x_uTNp8Ezw">
                <event xmi:type="uml:CallEvent" href="pathmap://UMLRTRTSLIB/UMLRT-RTS.uml#_IaEO8HDxEeSwWKwNKw1iAA"/>
              </trigger>
            </transition>
            <transition xmi:id="_nTBbYBaNEeWD0440ocvGbg" name="onTimeout2" source="_T6h8sBaNEeWD0440ocvGbg" target="_9FTvQBbKEeWa4sJtLVaM7A">
              <effect xmi:type="uml:OpaqueBehavior" xmi:id="_XefLsJJMEeWg8uhgJTo7AQ" name="saveTimout">
                <language>C++</language>
                <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;(&quot; &lt;&lt; this->getClass()->name &lt;&lt; &quot;)] Save timeout received&quot; &lt;&lt; std::endl;
</body>
              </effect>
              <trigger xmi:id="_MPje8BaWEeWD0440ocvGbg" name="onTimeout" port="_0W-4cMUhEeS9x_uTNp8Ezw">
                <event xmi:type="uml:CallEvent" href="pathmap://UMLRTRTSLIB/UMLRT-RTS.uml#_IaEO8HDxEeSwWKwNKw1iAA"/>
              </trigger>
            </transition>
            <transition xmi:id="_oLCBcBaNEeWD0440ocvGbg" name="onTimeout3" source="_asvQUBaNEeWD0440ocvGbg" target="_pDk9kBaOEeWD0440ocvGbg">
              <trigger xmi:id="_kZTtMBaWEeWD0440ocvGbg" name="onTimeout" port="_0W-4cMUhEeS9x_uTNp8Ezw">
                <event xmi:type="uml:CallEvent" href="pathmap://UMLRTRTSLIB/UMLRT-RTS.uml#_IaEO8HDxEeSwWKwNKw1iAA"/>
              </trigger>
            </transition>
            <transition xmi:id="_FKR60BaVEeWD0440ocvGbg" name="initTimerSet" guard="_aEu7gBaVEeWD0440ocvGbg" source="_T-PT0BaUEeWD0440ocvGbg" target="_hADSkMO5EeSxS9_G15_gSg">
              <ownedRule xmi:id="_aEu7gBaVEeWD0440ocvGbg" name="timerValid">
                <specification xmi:type="uml:OpaqueExpression" xmi:id="_aEu7gRaVEeWD0440ocvGbg" name="timerValid">
                  <language>C++</language>
                  <body>    return(timerID.isValid());
</body>
                </specification>
              </ownedRule>
              <effect xmi:type="uml:OpaqueBehavior" xmi:id="_EY4oMBaXEeWD0440ocvGbg" name="initTimerSet">
                <language>C++</language>
                <body>    std::cout &lt;&lt; &quot; and set a &quot; &lt;&lt; numSec &lt;&lt; &quot; seconds timer.&quot; &lt;&lt; std::endl;
</body>
              </effect>
            </transition>
            <transition xmi:id="_F0U9YBaVEeWD0440ocvGbg" name="initTimerFail" guard="_lJFZwBaVEeWD0440ocvGbg" source="_T-PT0BaUEeWD0440ocvGbg" target="_pDk9kBaOEeWD0440ocvGbg">
              <ownedRule xmi:id="_lJFZwBaVEeWD0440ocvGbg" name="invalidTimer">
                <specification xmi:type="uml:OpaqueExpression" xmi:id="_lJFZwRaVEeWD0440ocvGbg">
                  <language>C++</language>
                  <body>    return(!timerID.isValid());
</body>
                </specification>
              </ownedRule>
              <effect xmi:type="uml:OpaqueBehavior" xmi:id="_QFvQ4BaXEeWD0440ocvGbg" name="initTimerFail">
                <language>C++</language>
                <body>    std::cout &lt;&lt; &quot; but FAILed to set a &quot; &lt;&lt; numSec &lt;&lt; &quot; seconds timer.&quot; &lt;&lt; std::endl;
</body>
              </effect>
            </transition>
            <transition xmi:id="_5m4ToBaVEeWD0440ocvGbg" guard="_Q9XxkBaZEeWD0440ocvGbg" source="_pwd0kBaVEeWD0440ocvGbg" target="_T6h8sBaNEeWD0440ocvGbg">
              <ownedRule xmi:id="_Q9XxkBaZEeWD0440ocvGbg" name="saveOK">
                <specification xmi:type="uml:OpaqueExpression" xmi:id="_Q9XxkRaZEeWD0440ocvGbg" name="saveOK">
                  <language>C++</language>
                  <body>    return(status);
</body>
                </specification>
              </ownedRule>
              <effect xmi:type="uml:OpaqueBehavior" xmi:id="__KXC8BaYEeWD0440ocvGbg" name="saveRequested">
                <language>C++</language>
                <body>    std::cout &lt;&lt; &quot; asked for the document to be saved.&quot; &lt;&lt; std::endl;
</body>
              </effect>
            </transition>
            <transition xmi:id="_9nd0MBaVEeWD0440ocvGbg" guard="_VPw-YBaaEeWD0440ocvGbg" source="_r9cCcBaVEeWD0440ocvGbg" target="_asvQUBaNEeWD0440ocvGbg">
              <ownedRule xmi:id="_VPw-YBaaEeWD0440ocvGbg" name="printSet">
                <specification xmi:type="uml:OpaqueExpression" xmi:id="_VPw-YRaaEeWD0440ocvGbg" name="printSet">
                  <language>C++</language>
                  <body>    return(status);
</body>
                </specification>
              </ownedRule>
              <effect xmi:type="uml:OpaqueBehavior" xmi:id="_2Q8J0JLcEeWTl7q8dOahXg" name="printRequested">
                <language>C++</language>
                <body>    std::cout &lt;&lt; &quot; asked for the document to be printed.&quot; &lt;&lt; std::endl;
</body>
              </effect>
            </transition>
            <transition xmi:id="_xs7fYBaWEeWD0440ocvGbg" guard="_ZfQ6IBaZEeWD0440ocvGbg" source="_pwd0kBaVEeWD0440ocvGbg" target="_pDk9kBaOEeWD0440ocvGbg">
              <ownedRule xmi:id="_ZfQ6IBaZEeWD0440ocvGbg" name="saveFail">
                <specification xmi:type="uml:OpaqueExpression" xmi:id="_ZfQ6IRaZEeWD0440ocvGbg" name="saveFail">
                  <language>C++</language>
                  <body>    return(!status);
</body>
                </specification>
              </ownedRule>
              <effect xmi:type="uml:OpaqueBehavior" xmi:id="_E7D2QBaZEeWD0440ocvGbg" name="saveFailed">
                <language>C++</language>
                <body>    std::cout &lt;&lt; &quot; FAILed to ask for the document to be saved!&quot;;
    if ( timerID.isValid() ) {
    std::cout &lt;&lt; &quot; - FAILed to send message!&quot; &lt;&lt; std::endl;
    } else {
    std::cout &lt;&lt; &quot; FAILed to set timer!&quot; &lt;&lt; std::endl;
    }
</body>
              </effect>
            </transition>
            <transition xmi:id="_ykTzUBaWEeWD0440ocvGbg" guard="_a5ow8BaaEeWD0440ocvGbg" source="_r9cCcBaVEeWD0440ocvGbg" target="_pDk9kBaOEeWD0440ocvGbg">
              <ownedRule xmi:id="_a5ow8BaaEeWD0440ocvGbg" name="printFail">
                <specification xmi:type="uml:OpaqueExpression" xmi:id="_a5ow8RaaEeWD0440ocvGbg" name="printFail">
                  <language>C++</language>
                  <body>    return(!status);
</body>
                </specification>
              </ownedRule>
              <effect xmi:type="uml:OpaqueBehavior" xmi:id="_uAQGAJLcEeWTl7q8dOahXg" name="printFailure">
                <language>C++</language>
                <body>    std::cout &lt;&lt; &quot; FAILed to ask for the document to be printed!&quot;;
    if ( timerID.isValid() ) {
    std::cout &lt;&lt; &quot; - FAILed to send message!&quot; &lt;&lt; std::endl;
    } else {
    std::cout &lt;&lt; &quot; FAILed to set timer!&quot; &lt;&lt; std::endl;
    }
</body>
              </effect>
            </transition>
            <transition xmi:id="_qJVUoBaiEeWD0440ocvGbg" source="_asvQUBaNEeWD0440ocvGbg" target="_4BUksBaNEeWD0440ocvGbg"/>
            <transition xmi:id="_CmFQMBbLEeWa4sJtLVaM7A" name="isFalsePrintDoc" guard="_aMC04BbLEeWa4sJtLVaM7A" source="_9FTvQBbKEeWa4sJtLVaM7A" target="_r9cCcBaVEeWD0440ocvGbg">
              <ownedRule xmi:id="_aMC04BbLEeWa4sJtLVaM7A" name="isFalse">
                <specification xmi:type="uml:OpaqueExpression" xmi:id="_aMC04RbLEeWa4sJtLVaM7A" name="isFalse">
                  <language>C++</language>
                  <body>    return(false);
</body>
                </specification>
              </ownedRule>
              <effect xmi:type="uml:OpaqueBehavior" xmi:id="_NakGcBbLEeWa4sJtLVaM7A" name="printDoc">
                <language>C++</language>
                <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;]&quot;;
    bool sendStatus = computerPort.printDocument().send();
    //numSec = 10;
    timerID = timer.informIn(UMLRTTimespec(numSec,0));
    status = sendStatus &amp;&amp; timerID.isValid();
</body>
              </effect>
            </transition>
            <transition xmi:id="_DanrgBbLEeWa4sJtLVaM7A" name="isTrueDone" guard="_TjYe0BbLEeWa4sJtLVaM7A" source="_9FTvQBbKEeWa4sJtLVaM7A" target="_4BUksBaNEeWD0440ocvGbg">
              <ownedRule xmi:id="_TjYe0BbLEeWa4sJtLVaM7A" name="isTrue">
                <specification xmi:type="uml:OpaqueExpression" xmi:id="_TjYe0RbLEeWa4sJtLVaM7A" name="isTrue">
                  <language>C++</language>
                  <body>    return(true);
</body>
                </specification>
              </ownedRule>
              <effect xmi:type="uml:OpaqueBehavior" xmi:id="_DCwnAJJPEeWg8uhgJTo7AQ" name="SuccessfulRun">
                <language>C++</language>
                <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot;&lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;(&quot; &lt;&lt; this->getClass()->name &lt;&lt; &quot;)] Successful Run!&quot; &lt;&lt; std::endl;
</body>
              </effect>
            </transition>
            <subvertex xmi:type="uml:Pseudostate" xmi:id="_ebPzgMO5EeSxS9_G15_gSg" name="Initial"/>
            <subvertex xmi:type="uml:State" xmi:id="_hADSkMO5EeSxS9_G15_gSg" name="Alive">
              <entry xmi:type="uml:OpaqueBehavior" xmi:id="_gwa88Oz_EeSEsOihEv1CcQ" name="UserIsAlive">
                <language>C++</language>
                <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;(&quot; &lt;&lt; this->getClass()->name &lt;&lt; &quot;)] is alive!&quot; &lt;&lt; std::endl;
</body>
              </entry>
            </subvertex>
            <subvertex xmi:type="uml:State" xmi:id="_T6h8sBaNEeWD0440ocvGbg" name="Waiting4DocSave">
              <entry xmi:type="uml:OpaqueBehavior" xmi:id="__09VoJJLEeWg8uhgJTo7AQ" name="Waiting4DocSave_EN">
                <language>C++</language>
                <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;(&quot; &lt;&lt; this->getClass()->name &lt;&lt; &quot;)] user is {Waiting4DocSave}&quot; &lt;&lt; std::endl;
</body>
              </entry>
            </subvertex>
            <subvertex xmi:type="uml:State" xmi:id="_asvQUBaNEeWD0440ocvGbg" name="Waiting4DocPrint">
              <entry xmi:type="uml:OpaqueBehavior" xmi:id="_7CiQkJLcEeWTl7q8dOahXg" name="wait4Print">
                <language>C++</language>
                <body>    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;(&quot; &lt;&lt; this->getClass()->name &lt;&lt; &quot;)] user is {Waiting4DocPrint}&quot; &lt;&lt; std::endl;
</body>
              </entry>
            </subvertex>
            <subvertex xmi:type="uml:State" xmi:id="_4BUksBaNEeWD0440ocvGbg" name="TestDone">
              <entry xmi:type="uml:OpaqueBehavior" xmi:id="_f5R6wBaaEeWD0440ocvGbg" name="testDone">
                <language>C++</language>
                <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;(&quot; &lt;&lt; this->getClass()->name &lt;&lt; &quot;)] is finished testing.&quot; &lt;&lt; std::endl;
    std::exit(EXIT_SUCCESS); // successful execution
</body>
              </entry>
            </subvertex>
            <subvertex xmi:type="uml:State" xmi:id="_pDk9kBaOEeWD0440ocvGbg" name="FAILED">
              <entry xmi:type="uml:OpaqueBehavior" xmi:id="_m7LQMBaaEeWD0440ocvGbg" name="testFailed">
                <language>C++</language>
                <body>    time_t currentTime;
    struct tm *localTime;
    time( &amp;currentTime );
    localTime = localtime( &amp;currentTime );
    std::cout &lt;&lt; std::setfill('0') &lt;&lt; &quot;[&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_min &lt;&lt; &quot;:&quot; &lt;&lt; std::setw(2) &lt;&lt; localTime->tm_sec &lt;&lt; &quot;] &quot;;
    std::cout &lt;&lt; &quot;[&quot; &lt;&lt; this->getName() &lt;&lt; &quot;(&quot; &lt;&lt; this->getClass()->name &lt;&lt; &quot;)] {FAILED}!&quot;;
    std::exit(EXIT_FAILURE); // unsuccessful execution
</body>
              </entry>
            </subvertex>
            <subvertex xmi:type="uml:Pseudostate" xmi:id="_T-PT0BaUEeWD0440ocvGbg" name="tid1?" kind="choice"/>
            <subvertex xmi:type="uml:Pseudostate" xmi:id="_pwd0kBaVEeWD0440ocvGbg" name="tid2?" kind="choice"/>
            <subvertex xmi:type="uml:Pseudostate" xmi:id="_r9cCcBaVEeWD0440ocvGbg" name="tid3?" kind="choice"/>
            <subvertex xmi:type="uml:Pseudostate" xmi:id="_9FTvQBbKEeWa4sJtLVaM7A" name="TesterChoice" kind="choice"/>
          </region>
        </ownedBehavior>
      </packagedElement>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_s8h5kO1kEeSNVueSbviXfA" name="Top" isActive="true">
      <ownedAttribute xmi:id="_3f1gQO1kEeSNVueSbviXfA" name="computerSystem" visibility="protected" type="_SfgCwMODEeSSS8SwKHucgQ"/>
    </packagedElement>
    <profileApplication xmi:id="_YSrkcX_6EeSOLqU6j-e_hg">
      <eAnnotations xmi:id="_YSrkcn_6EeSOLqU6j-e_hg" source="http://www.eclipse.org/uml2/2.0.0/UML">
        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/umlrt#/"/>
      </eAnnotations>
      <appliedProfile href="pathmap://UML_RT_PROFILE/uml-rt.profile.uml#_1h74oEeVEeO0lv5O1DTHOQ"/>
    </profileApplication>
    <profileApplication xmi:id="_v0WsUIB5EeSeANT-DfY5oA">
      <eAnnotations xmi:id="_v1QEMIB5EeSeANT-DfY5oA" source="http://www.eclipse.org/uml2/2.0.0/UML">
        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/umlrt/statemachine#/"/>
      </eAnnotations>
      <appliedProfile href="pathmap://UML_RT_PROFILE/UMLRealTimeSM-addendum.profile.uml#_KLcn0FDtEeOA4ecmvfqvaw"/>
    </profileApplication>
    <profileApplication xmi:id="_fBXrIOnTEeSH6cvOy39y3w">
      <eAnnotations xmi:id="_5rTkwKJ7EeW_QZB0kJjvdw" source="PapyrusVersion">
        <details xmi:id="_5rTkwaJ7EeW_QZB0kJjvdw" key="Version" value="0.0.11"/>
        <details xmi:id="_5rTkwqJ7EeW_QZB0kJjvdw" key="Comment" value=""/>
        <details xmi:id="_5rTkw6J7EeW_QZB0kJjvdw" key="Copyright" value=""/>
        <details xmi:id="_5rTkxKJ7EeW_QZB0kJjvdw" key="Date" value="2015-12-10"/>
        <details xmi:id="_5rTkxaJ7EeW_QZB0kJjvdw" key="Author" value=""/>
      </eAnnotations>
      <eAnnotations xmi:id="_fBe_4OnTEeSH6cvOy39y3w" source="http://www.eclipse.org/uml2/2.0.0/UML">
        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/umlrt/cppproperties#/"/>
      </eAnnotations>
      <appliedProfile href="pathmap://UMLRT_CPP/RTCppProperties.profile.uml#_vl5LALs8EeSTjNEQkASznQ"/>
    </profileApplication>
  </uml:Model>
  <UMLRealTime:Capsule xmi:id="_BBz20IB6EeSeANT-DfY5oA" base_Class="_fMulcH_6EeSOLqU6j-e_hg"/>
  <UMLRealTime:CapsulePart xmi:id="_Q7rdEIB7EeSeANT-DfY5oA" base_Property="_p_mqAIB6EeSeANT-DfY5oA"/>
  <UMLRealTime:ProtocolContainer xmi:id="_0kN7cIB-EeSeANT-DfY5oA" base_Package="_vn-D4IB-EeSeANT-DfY5oA"/>
  <UMLRealTime:Protocol xmi:id="_-6XP4IB-EeSeANT-DfY5oA" base_Collaboration="_6tx6sIB-EeSeANT-DfY5oA"/>
  <UMLRealTime:RTMessageSet xmi:id="_iXWF4IB_EeSeANT-DfY5oA" base_Interface="_B2K5sIB_EeSeANT-DfY5oA"/>
  <UMLRealTime:RTMessageSet xmi:id="_kMr24IB_EeSeANT-DfY5oA" base_Interface="_CSN8gIB_EeSeANT-DfY5oA" rtMsgKind="out"/>
  <UMLRealTime:RTMessageSet xmi:id="_msdE8IB_EeSeANT-DfY5oA" base_Interface="_CwJOoIB_EeSeANT-DfY5oA" rtMsgKind="inOut"/>
  <UMLRealTime:RTPort xmi:id="_51RokICCEeSeANT-DfY5oA" base_Port="_ui7KkICCEeSeANT-DfY5oA"/>
  <UMLRealTime:RTPort xmi:id="_5P1ysICiEeSeANT-DfY5oA" isWired="false" base_Port="_dmbmsICiEeSeANT-DfY5oA"/>
  <UMLRealTime:Capsule xmi:id="_uWX_sICrEeSYmJvm6id8mw" base_Class="_ZUBdgIB6EeSeANT-DfY5oA"/>
  <UMLRealTime:RTPort xmi:id="_eRPSsICsEeSYmJvm6id8mw" isWired="false" base_Port="_NFL2YICsEeSYmJvm6id8mw"/>
  <UMLRealTime:RTPort xmi:id="_Ded9EIFXEeSxK_Fl3WspFw" base_Port="_oyJrcIFWEeSxK_Fl3WspFw"/>
  <UMLRTStateMachines:RTStateMachine xmi:id="_x4gVsMNyEeSSS8SwKHucgQ" base_StateMachine="_2cxfEICrEeSYmJvm6id8mw"/>
  <UMLRTStateMachines:RTRegion xmi:id="_0ZOmAMNyEeSSS8SwKHucgQ" base_Region="_3ifJ8ICrEeSYmJvm6id8mw"/>
  <UMLRTStateMachines:RTPseudostate xmi:id="_4YJSoMNyEeSSS8SwKHucgQ" base_Pseudostate="_75RkAICrEeSYmJvm6id8mw"/>
  <UMLRealTime:Capsule xmi:id="_T2g5AMODEeSSS8SwKHucgQ" base_Class="_SfgCwMODEeSSS8SwKHucgQ"/>
  <UMLRealTime:Capsule xmi:id="_26PPkMOFEeSSS8SwKHucgQ" base_Class="_vk5ZsMOFEeSSS8SwKHucgQ"/>
  <UMLRealTime:Capsule xmi:id="_3rCaYMOFEeSSS8SwKHucgQ" base_Class="_z6QQYMOFEeSSS8SwKHucgQ"/>
  <UMLRealTime:Capsule xmi:id="_LoxXUMOKEeSSS8SwKHucgQ" base_Class="_9YrV0MOJEeSSS8SwKHucgQ"/>
  <UMLRealTime:Capsule xmi:id="_qd1nAMOKEeSSS8SwKHucgQ" base_Class="_og5ZMMOKEeSSS8SwKHucgQ"/>
  <UMLRealTime:Capsule xmi:id="_IIl_sMOLEeSSS8SwKHucgQ" base_Class="_CperoMOLEeSSS8SwKHucgQ"/>
  <UMLRealTime:Capsule xmi:id="_I2hcsMOLEeSSS8SwKHucgQ" base_Class="_FTGZQMOLEeSSS8SwKHucgQ"/>
  <UMLRTStateMachines:RTStateMachine xmi:id="_ZIvRgMOMEeSSS8SwKHucgQ" base_StateMachine="_Qm-r0MOMEeSSS8SwKHucgQ"/>
  <UMLRTStateMachines:RTRegion xmi:id="_cy3Z4MOMEeSSS8SwKHucgQ" base_Region="_Shge0MOMEeSSS8SwKHucgQ"/>
  <UMLRTStateMachines:RTPseudostate xmi:id="_p4MRYMOMEeSSS8SwKHucgQ" base_Pseudostate="_oTeWUMOMEeSSS8SwKHucgQ"/>
  <UMLRTStateMachines:RTState xmi:id="_0wQnIMOMEeSSS8SwKHucgQ" base_State="_tkuNgMOMEeSSS8SwKHucgQ"/>
  <UMLRTStateMachines:RTState xmi:id="_V-vv0MOOEeSSS8SwKHucgQ" base_State="_TRQO0MOOEeSSS8SwKHucgQ"/>
  <UMLRTStateMachines:RTStateMachine xmi:id="_gbwNUMOmEeSy9Z1Kd1VJnQ" base_StateMachine="_cv6NsMOmEeSy9Z1Kd1VJnQ"/>
  <UMLRTStateMachines:RTRegion xmi:id="_ingTMMOmEeSy9Z1Kd1VJnQ" base_Region="_d298YMOmEeSy9Z1Kd1VJnQ"/>
  <UMLRealTime:Capsule xmi:id="_QB7BsMOyEeSxS9_G15_gSg" base_Class="_N2fr8MOyEeSxS9_G15_gSg"/>
  <UMLRealTime:Protocol xmi:id="_vOKecMO2EeSxS9_G15_gSg" base_Collaboration="_vOIpQMO2EeSxS9_G15_gSg"/>
  <UMLRealTime:RTMessageSet xmi:id="_vOMToMO2EeSxS9_G15_gSg" base_Interface="_vOLFgMO2EeSxS9_G15_gSg"/>
  <UMLRealTime:RTMessageSet xmi:id="_vOPW8MO2EeSxS9_G15_gSg" base_Interface="_vOOI0MO2EeSxS9_G15_gSg" rtMsgKind="out"/>
  <UMLRealTime:RTMessageSet xmi:id="_vOSaQMO2EeSxS9_G15_gSg" base_Interface="_vORMIMO2EeSxS9_G15_gSg" rtMsgKind="inOut"/>
  <UMLRealTime:RTPort xmi:id="_MWYf4MO5EeSxS9_G15_gSg" base_Port="_J5xTgMO5EeSxS9_G15_gSg"/>
  <UMLRTStateMachines:RTStateMachine xmi:id="_aXLhIMO5EeSxS9_G15_gSg" base_StateMachine="_-AYDoMO4EeSxS9_G15_gSg"/>
  <UMLRTStateMachines:RTRegion xmi:id="_cbzrUMO5EeSxS9_G15_gSg" base_Region="_-3QBQMO4EeSxS9_G15_gSg"/>
  <UMLRealTime:Capsule xmi:id="_4eZ98MO6EeSxS9_G15_gSg" base_Class="_2WM7UMO6EeSxS9_G15_gSg"/>
  <UMLRealTime:CapsulePart xmi:id="_Jjrc0MO7EeSxS9_G15_gSg" base_Property="_EFn4sMO7EeSxS9_G15_gSg"/>
  <UMLRTStateMachines:RTStateMachine xmi:id="_pAM_YMQOEeSirL7ina4YrA" base_StateMachine="_j6H2YMQOEeSirL7ina4YrA"/>
  <UMLRTStateMachines:RTRegion xmi:id="_sVSE0MQOEeSirL7ina4YrA" base_Region="_lPuXYMQOEeSirL7ina4YrA"/>
  <UMLRTStateMachines:RTPseudostate xmi:id="_tlw1QMQOEeSirL7ina4YrA" base_Pseudostate="_rMOyEMQOEeSirL7ina4YrA"/>
  <UMLRTStateMachines:RTState xmi:id="_v_H5UMQOEeSirL7ina4YrA" base_State="_uPDp4MQOEeSirL7ina4YrA"/>
  <UMLRealTime:RTPort xmi:id="_1lgoIMQQEeSirL7ina4YrA" base_Port="_JKtYAMQPEeSirL7ina4YrA"/>
  <UMLRealTime:CapsulePart xmi:id="_dnKFsMQdEeSirL7ina4YrA" base_Property="_PPdAUMQdEeSirL7ina4YrA"/>
  <UMLRealTime:CapsulePart xmi:id="_erbmIMQdEeSirL7ina4YrA" base_Property="_a5T_YMQdEeSirL7ina4YrA"/>
  <UMLRealTime:ProtocolContainer xmi:id="_sSRPQMQdEeSirL7ina4YrA" base_Package="_pfCSoMQdEeSirL7ina4YrA"/>
  <UMLRealTime:Protocol xmi:id="_sSre8MQdEeSirL7ina4YrA" base_Collaboration="_sSppwMQdEeSirL7ina4YrA"/>
  <UMLRealTime:RTMessageSet xmi:id="_sSvwYMQdEeSirL7ina4YrA" base_Interface="_sSsGAMQdEeSirL7ina4YrA"/>
  <UMLRealTime:RTMessageSet xmi:id="_sSzawMQdEeSirL7ina4YrA" base_Interface="_sSxlkMQdEeSirL7ina4YrA" rtMsgKind="out"/>
  <UMLRealTime:RTMessageSet xmi:id="_sS3FIMQdEeSirL7ina4YrA" base_Interface="_sS1P8MQdEeSirL7ina4YrA" rtMsgKind="inOut"/>
  <UMLRealTime:ProtocolContainer xmi:id="_224dgMQdEeSirL7ina4YrA" base_Package="_TL3RUMO2EeSxS9_G15_gSg"/>
  <UMLRealTime:CapsulePart xmi:id="_9I7zEMUdEeS9x_uTNp8Ezw" base_Property="_bS384MODEeSSS8SwKHucgQ"/>
  <UMLRealTime:CapsulePart xmi:id="_9_jSAMUdEeS9x_uTNp8Ezw" base_Property="_wAf-UMOKEeSSS8SwKHucgQ"/>
  <UMLRealTime:CapsulePart xmi:id="_-tvNsMUdEeS9x_uTNp8Ezw" base_Property="_tcmSoMOUEeSy9Z1Kd1VJnQ"/>
  <UMLRealTime:CapsulePart xmi:id="_BKNQIMUeEeS9x_uTNp8Ezw" base_Property="_u28wwMOUEeSy9Z1Kd1VJnQ"/>
  <UMLRTStateMachines:RTStateMachine xmi:id="_MS9tQMUeEeS9x_uTNp8Ezw" base_StateMachine="_F3llQMUeEeS9x_uTNp8Ezw"/>
  <UMLRTStateMachines:RTPseudostate xmi:id="_QfG9kMUeEeS9x_uTNp8Ezw" base_Pseudostate="_NC-08MUeEeS9x_uTNp8Ezw"/>
  <UMLRTStateMachines:RTState xmi:id="_RTJCkMUeEeS9x_uTNp8Ezw" base_State="_Nin-UMUeEeS9x_uTNp8Ezw"/>
  <UMLRTStateMachines:RTRegion xmi:id="_SLUnwMUeEeS9x_uTNp8Ezw" base_Region="_IAM3kMUeEeS9x_uTNp8Ezw"/>
  <UMLRealTime:ProtocolContainer xmi:id="_4y_ysMXPEeSsD5C2f30z-g" base_Package="_2hCXIMXPEeSsD5C2f30z-g"/>
  <UMLRealTime:Protocol xmi:id="_4zT7wMXPEeSsD5C2f30z-g" base_Collaboration="_4zRfgMXPEeSsD5C2f30z-g"/>
  <UMLRealTime:RTMessageSet xmi:id="_4zW_EMXPEeSsD5C2f30z-g" base_Interface="_4zUi0MXPEeSsD5C2f30z-g"/>
  <UMLRealTime:RTMessageSet xmi:id="_4zbQgMXPEeSsD5C2f30z-g" base_Interface="_4zZbUMXPEeSsD5C2f30z-g" rtMsgKind="out"/>
  <UMLRealTime:RTMessageSet xmi:id="_4zfh8MXPEeSsD5C2f30z-g" base_Interface="_4zdswMXPEeSsD5C2f30z-g" rtMsgKind="inOut"/>
  <UMLRealTime:RTPort xmi:id="_zcbt8MXgEeSsD5C2f30z-g" base_Port="_vXWH4MXgEeSsD5C2f30z-g"/>
  <UMLRealTime:RTPort xmi:id="_LYlM8MYAEeSsD5C2f30z-g" base_Port="_pCSIcMXOEeSsD5C2f30z-g"/>
  <UMLRealTime:RTPort xmi:id="_B3RZUMYBEeSsD5C2f30z-g" base_Port="_5Gm08MYAEeSsD5C2f30z-g"/>
  <UMLRealTime:RTPort xmi:id="_D0J8wMYBEeSsD5C2f30z-g" isWired="false" base_Port="_oyefIMYAEeSsD5C2f30z-g"/>
  <UMLRealTime:CapsulePart xmi:id="_PXljsMYBEeSsD5C2f30z-g" base_Property="_I8yqgMYBEeSsD5C2f30z-g"/>
  <UMLRTStateMachines:RTStateMachine xmi:id="_43YbQMYCEeSsD5C2f30z-g" base_StateMachine="_tFC1oMYCEeSsD5C2f30z-g"/>
  <UMLRTStateMachines:RTRegion xmi:id="_5xvxwMYCEeSsD5C2f30z-g" base_Region="_vz1-MMYCEeSsD5C2f30z-g"/>
  <UMLRTStateMachines:RTPseudostate xmi:id="_A76SYMYDEeSsD5C2f30z-g" base_Pseudostate="_AE38sMYDEeSsD5C2f30z-g"/>
  <UMLRTStateMachines:RTState xmi:id="_Fm0iUMYDEeSsD5C2f30z-g" base_State="_DcG-QMYDEeSsD5C2f30z-g"/>
  <UMLRTStateMachines:RTState xmi:id="_EveYsMYFEeSsD5C2f30z-g" base_State="_D3UosMYFEeSsD5C2f30z-g"/>
  <UMLRealTime:RTPort xmi:id="_4j93UMbDEeSvmLj5mtpd2g" base_Port="_w7EMQMbDEeSvmLj5mtpd2g"/>
  <UMLRTStateMachines:RTPseudostate xmi:id="_10DfAMbEEeSvmLj5mtpd2g" base_Pseudostate="_yNH0kMbEEeSvmLj5mtpd2g"/>
  <UMLRTStateMachines:RTState xmi:id="_kZxiAMbbEeSvmLj5mtpd2g" base_State="_RN478MbbEeSvmLj5mtpd2g"/>
  <UMLRTStateMachines:RTState xmi:id="_pfVGkMbbEeSvmLj5mtpd2g" base_State="_fsiW0MbbEeSvmLj5mtpd2g"/>
  <UMLRTStateMachines:RTRegion xmi:id="_qSwuoMbbEeSvmLj5mtpd2g" base_Region="_WVcEksbbEeSvmLj5mtpd2g"/>
  <UMLRTStateMachines:RTState xmi:id="_rNKhYMbbEeSvmLj5mtpd2g" base_State="_iQYMkMbbEeSvmLj5mtpd2g"/>
  <UMLRTStateMachines:RTPseudostate xmi:id="_skbPQMbbEeSvmLj5mtpd2g" base_Pseudostate="_WVfH4MbbEeSvmLj5mtpd2g"/>
  <UMLRTStateMachines:RTPseudostate xmi:id="_t0fwAMbbEeSvmLj5mtpd2g" base_Pseudostate="_W86UQMbbEeSvmLj5mtpd2g"/>
  <UMLRTStateMachines:RTPseudostate xmi:id="_uyIc8MbbEeSvmLj5mtpd2g" base_Pseudostate="_XUhjAMbbEeSvmLj5mtpd2g"/>
  <UMLRTStateMachines:RTState xmi:id="_7ezNwMbkEeSvmLj5mtpd2g" base_State="_Bt8igMbjEeSvmLj5mtpd2g"/>
  <UMLRTStateMachines:RTState xmi:id="_8snrwMbkEeSvmLj5mtpd2g" base_State="_HrCd8MbhEeSvmLj5mtpd2g"/>
  <UMLRTStateMachines:RTState xmi:id="_9lw6QMbkEeSvmLj5mtpd2g" base_State="_JoagwMYJEeSsD5C2f30z-g"/>
  <UMLRTStateMachines:RTState xmi:id="_HsMWcMePEeSz1oN1Kl4Now" base_State="_Eytn4MePEeSz1oN1Kl4Now"/>
  <UMLRTStateMachines:RTPseudostate xmi:id="_RAX2MMdQEeSiG8QCXtAiEg" base_Pseudostate="_OIT1sMOnEeSy9Z1Kd1VJnQ"/>
  <UMLRTStateMachines:RTState xmi:id="_TaM0UMdQEeSiG8QCXtAiEg" base_State="_Pm2QQMOnEeSy9Z1Kd1VJnQ"/>
  <UMLRTStateMachines:RTState xmi:id="_UnREYMdQEeSiG8QCXtAiEg" base_State="_PG3vsMOnEeSy9Z1Kd1VJnQ"/>
  <UMLRealTime:RTPort xmi:id="_-4K5QOoCEeSISfdD9i8SIg" base_Port="_yYoMwMXOEeSsD5C2f30z-g"/>
  <UMLRealTime:RTPort xmi:id="_AqMQgOoDEeSISfdD9i8SIg" isNotification="true" base_Port="_m1ajcMO5EeSxS9_G15_gSg"/>
  <UMLRealTime:RTPort xmi:id="_Ejlj8OoDEeSISfdD9i8SIg" base_Port="_jacOAMYBEeSsD5C2f30z-g"/>
  <UMLRealTime:RTPort xmi:id="_XO3XUOoDEeSISfdD9i8SIg" isWired="false" base_Port="_-hXZwMQZEeSirL7ina4YrA"/>
  <UMLRealTime:RTConnector xmi:id="_lTSUUOoDEeSISfdD9i8SIg" base_Connector="_xN9oQMYBEeSsD5C2f30z-g"/>
  <UMLRealTime:RTConnector xmi:id="_ToR1sOoEEeSISfdD9i8SIg" base_Connector="_SHmf8MXPEeSsD5C2f30z-g"/>
  <UMLRTStateMachines:RTPseudostate xmi:id="_sW99AOoEEeSISfdD9i8SIg" base_Pseudostate="_vjKL0MeMEeSz1oN1Kl4Now"/>
  <UMLRTStateMachines:RTPseudostate xmi:id="_LO6hkOoFEeSISfdD9i8SIg" base_Pseudostate="_bshqkMbGEeSvmLj5mtpd2g"/>
  <UMLRTStateMachines:RTPseudostate xmi:id="_MmqXoOoFEeSISfdD9i8SIg" base_Pseudostate="_ND7NAMbHEeSvmLj5mtpd2g"/>
  <UMLRTStateMachines:RTState xmi:id="_OHqQUOoFEeSISfdD9i8SIg" base_State="_6wgK4MbEEeSvmLj5mtpd2g"/>
  <UMLRTStateMachines:RTState xmi:id="_O1iqAOoFEeSISfdD9i8SIg" base_State="_mZ_S0MbGEeSvmLj5mtpd2g"/>
  <UMLRTStateMachines:RTPseudostate xmi:id="_PoHWcOoFEeSISfdD9i8SIg" base_Pseudostate="_9b6ywMeJEeSz1oN1Kl4Now"/>
  <UMLRTStateMachines:RTPseudostate xmi:id="_QS3joOoFEeSISfdD9i8SIg" base_Pseudostate="_h1RbUMeTEeSz1oN1Kl4Now"/>
  <UMLRTStateMachines:RTPseudostate xmi:id="_UZTNgOoFEeSISfdD9i8SIg" base_Pseudostate="_Ntc9AMeJEeSz1oN1Kl4Now"/>
  <UMLRTStateMachines:RTPseudostate xmi:id="_VFaFkOoFEeSISfdD9i8SIg" base_Pseudostate="_u_tRwMeSEeSz1oN1Kl4Now"/>
  <UMLRealTime:RTPort xmi:id="_Oaq2cOoGEeSISfdD9i8SIg" base_Port="_SSMs8MOLEeSSS8SwKHucgQ"/>
  <UMLRTStateMachines:RTPseudostate xmi:id="_Tw5UQOoGEeSISfdD9i8SIg" base_Pseudostate="_RN0-gMOOEeSSS8SwKHucgQ"/>
  <UMLRealTime:RTPort xmi:id="_Yua-MOoGEeSISfdD9i8SIg" base_Port="_q4ZLUMOmEeSy9Z1Kd1VJnQ"/>
  <UMLRTStateMachines:RTPseudostate xmi:id="_efwDoOoGEeSISfdD9i8SIg" base_Pseudostate="_jTAHQMOmEeSy9Z1Kd1VJnQ"/>
  <UMLRealTime:RTConnector xmi:id="_IQ7bkOoHEeSISfdD9i8SIg" base_Connector="_DOQBQMO6EeSxS9_G15_gSg"/>
  <UMLRealTime:RTConnector xmi:id="_MRSbwOqNEeSlmKRr_VnIAg" base_Connector="_BzuQsOqNEeSlmKRr_VnIAg"/>
  <UMLRealTime:RTConnector xmi:id="_NyYbEOqNEeSlmKRr_VnIAg" base_Connector="_AtlvEOqNEeSlmKRr_VnIAg"/>
  <UMLRealTime:CapsulePart xmi:id="_Ph_GkOz1EeSfXf8RKMFgHQ" base_Property="_c8b1UOqLEeSlmKRr_VnIAg"/>
  <UMLRealTime:RTPort xmi:id="_XIGG4Oz2EeSfXf8RKMFgHQ" isWired="false" base_Port="_0W-4cMUhEeS9x_uTNp8Ezw"/>
  <UMLRealTime:RTPort xmi:id="_L7c8YO0DEeST5KnPUdkGIg" isWired="false" base_Port="_hwfLcO0CEeSVocSGS756bA"/>
  <UMLRealTime:RTPort xmi:id="_NxOY8O0IEeSzlZWHZcnPXA" isWired="false" base_Port="_DzjO4O0IEeSzlZWHZcnPXA"/>
  <UMLRealTime:RTPort xmi:id="_Q3jwYO0LEeSzlZWHZcnPXA" isWired="false" base_Port="_Mt-r4O0LEeSzlZWHZcnPXA"/>
  <UMLRTStateMachines:RTState xmi:id="_jdSKAO06EeSEgM2oS3E6ZA" base_State="_hADSkMO5EeSxS9_G15_gSg"/>
  <UMLRealTime:RTConnector xmi:id="_PrTtIO1iEeSNVueSbviXfA" base_Connector="_MWa08O1iEeSNVueSbviXfA"/>
  <UMLRealTime:Capsule xmi:id="_s8nZIO1kEeSNVueSbviXfA" base_Class="_s8h5kO1kEeSNVueSbviXfA"/>
  <UMLRealTime:RTConnector xmi:id="_EgjSoO1nEeSNVueSbviXfA" base_Connector="_DVHaQO1nEeSNVueSbviXfA"/>
  <UMLRealTime:RTConnector xmi:id="_Fl6_QO1nEeSNVueSbviXfA" base_Connector="_CZ02sO1nEeSNVueSbviXfA"/>
  <UMLRealTime:CapsulePart xmi:id="_LA0hsO1nEeSNVueSbviXfA" base_Property="_3f1gQO1kEeSNVueSbviXfA"/>
  <UMLRTStateMachines:RTState xmi:id="_8_JSQO4MEeSAlbC0LA6o5Q" base_State="_rcvLcO4MEeSAlbC0LA6o5Q"/>
  <UMLRTStateMachines:RTRegion xmi:id="_Gs370O4NEeSAlbC0LA6o5Q" base_Region="_FtPDwe4NEeSAlbC0LA6o5Q"/>
  <UMLRTStateMachines:RTState xmi:id="_Q3CNQO4OEeSAlbC0LA6o5Q" base_State="_5D02wO4NEeSAlbC0LA6o5Q"/>
  <UMLRTStateMachines:RTPseudostate xmi:id="_R_gRMO4OEeSAlbC0LA6o5Q" base_Pseudostate="_KlKcAO4NEeSAlbC0LA6o5Q"/>
  <UMLRTStateMachines:RTState xmi:id="_vXVl4AuyEeWCGuiso4e4-g" base_State="_tBnrsAuyEeWCGuiso4e4-g"/>
  <UMLRealTime:RTPort xmi:id="_MjT7YAu0EeWCGuiso4e4-g" isWired="false" base_Port="_Uh604AutEeWCGuiso4e4-g"/>
  <UMLRealTime:RTPort xmi:id="_iCuewAu-EeWCGuiso4e4-g" isWired="false" base_Port="_f_gCwAu-EeWCGuiso4e4-g"/>
  <UMLRealTime:RTPort xmi:id="_QilVsA4XEeWZmqO69MGcNA" isWired="false" base_Port="_Nf-gUA4XEeWZmqO69MGcNA"/>
  <UMLRTStateMachines:RTState xmi:id="_qxXhUA4YEeWZmqO69MGcNA" base_State="_p3iWUA4YEeWZmqO69MGcNA"/>
  <RTCppProperties:CapsuleProperties xmi:id="_XBA9UDbKEeW4wMkAMpslKA" headerPreface="#include &lt;iostream>&#xD;&#xA;#include &lt;iomanip>&#xD;&#xA;#include &lt;ctime>&#xD;&#xA;#include &quot;ResourceType.hh&quot;&#xA;&#xA;" base_Class="_fMulcH_6EeSOLqU6j-e_hg"/>
  <RTCppProperties:CapsuleProperties xmi:id="_fBlhgDbKEeW4wMkAMpslKA" headerPreface="#include &lt;iostream>&#xD;&#xA;#include &lt;iomanip>&#xD;&#xA;#include &lt;ctime>&#xD;&#xA;#include &quot;ResourceType.hh&quot;&#xD;&#xA;#include &quot;USBPrinterDriver.hh&quot;&#xD;&#xA;#include &quot;USBStorageDriver.hh&quot;&#xD;&#xA;" base_Class="_2WM7UMO6EeSxS9_G15_gSg"/>
  <RTCppProperties:CapsuleProperties xmi:id="_k5iMUDbKEeW4wMkAMpslKA" headerPreface="#include &lt;iostream>&#xD;&#xA;#include &lt;iomanip>&#xD;&#xA;#include &lt;ctime>&#xD;&#xA;#include &quot;AppType.hh&quot;" base_Class="_9YrV0MOJEeSSS8SwKHucgQ"/>
  <RTCppProperties:CapsuleProperties xmi:id="_qXqB4DbKEeW4wMkAMpslKA" headerPreface="#include &lt;iostream>&#xD;&#xA;#include &lt;iomanip>&#xD;&#xA;#include &lt;ctime>&#xD;&#xA;#include &lt;string>&#xD;&#xA;#include &quot;ResourceType.hh&quot;&#xD;&#xA;#include &quot;AppType.hh&quot;" base_Class="_N2fr8MOyEeSxS9_G15_gSg"/>
  <RTCppProperties:CapsuleProperties xmi:id="_v7oAwDbKEeW4wMkAMpslKA" headerPreface="#include &lt;iostream>&#xD;&#xA;#include &lt;iomanip>&#xD;&#xA;#include &lt;ctime>&#xD;&#xA;#include &quot;USBDeviceClasses.hh&quot;&#xD;&#xA;" base_Class="_ZUBdgIB6EeSeANT-DfY5oA"/>
  <RTCppProperties:CapsuleProperties xmi:id="_zQzM0DbKEeW4wMkAMpslKA" headerPreface="#include &lt;iostream>&#xD;&#xA;#include &lt;iomanip>&#xD;&#xA;#include &lt;ctime>&#xD;&#xA;#include &quot;USBDeviceClasses.hh&quot;" base_Class="_vk5ZsMOFEeSSS8SwKHucgQ"/>
  <RTCppProperties:CapsuleProperties xmi:id="_2npM0DbKEeW4wMkAMpslKA" headerPreface="#include &lt;iostream>&#xD;&#xA;#include &lt;iomanip>&#xD;&#xA;#include &lt;ctime>&#xD;&#xA;#include &quot;USBDeviceClasses.hh&quot;&#xD;&#xA;" base_Class="_z6QQYMOFEeSSS8SwKHucgQ"/>
  <RTCppProperties:CapsuleProperties xmi:id="_7_KrIDbKEeW4wMkAMpslKA" headerPreface="#include &lt;iostream>&#xD;&#xA;#include &lt;iomanip>&#xD;&#xA;#include &lt;ctime>&#xD;&#xA;" base_Class="_CperoMOLEeSSS8SwKHucgQ"/>
  <RTCppProperties:CapsuleProperties xmi:id="_-xUCoDbKEeW4wMkAMpslKA" headerPreface="#include &lt;iostream>&#xD;&#xA;#include &lt;iomanip>&#xD;&#xA;#include &lt;ctime>" base_Class="_FTGZQMOLEeSSS8SwKHucgQ"/>
  <RTCppProperties:ParameterProperties xmi:id="_bzNtwDbaEeW03-NJeOeEgg" base_Parameter="_VSn4AIFTEeSxK_Fl3WspFw" pointsToType="true"/>
  <RTCppProperties:CapsuleProperties xmi:id="_SeAh0DbuEeW0p8LSyg9Iow" headerPreface="#include &lt;iostream>&#xA;#include &lt;iomanip>&#xA;#include &lt;cstdlib>" base_Class="_og5ZMMOKEeSSS8SwKHucgQ"/>
  <RTCppProperties:AttributeProperties xmi:id="_5n39MDeGEeWhGObvnSPAKw" pointsToType="true" base_Property="_L0QU8MYDEeSsD5C2f30z-g"/>
  <RTCppProperties:ParameterProperties xmi:id="_UcO8wGJWEeWmlLBbIGVA7w" base_Parameter="_tb5aIcO3EeSxS9_G15_gSg" pointsToType="true"/>
  <RTCppProperties:ParameterProperties xmi:id="_EKwTEGLqEeWdXZOiB-_tgQ" base_Parameter="_U6r-4BadEeWD0440ocvGbg" pointsToType="true"/>
  <RTCppProperties:ParameterProperties xmi:id="_N7hpkGLqEeWdXZOiB-_tgQ" base_Parameter="_nENlgBacEeWD0440ocvGbg" pointsToType="true"/>
</xmi:XMI>
