Patent Publication Number: US-2023133930-A1

Title: Inter-browser presentation control

Description:
This application claims the benefit of priority to U.S. Provisional Application No. 63/273,208, filed Oct. 29, 2021, incorporated by reference in its entirety herein. 
    
    
     TECHNICAL FIELD 
     The field relates to online presentation and electronic browser control. 
     RELATED ART 
     Online applications allow multiple users to view and share content with one another. An online application may be part of an online platform coupled to a contact management system. The online platform may host the online application. The online platform can manage access rights and communications between remote users and serve content from a content management system to instances of an online application running on remote computing devices. The content management system may store and generate electronic content for output through the online platform to users for display, viewing, editing or manipulation. A content management system can be used with a number of online applications to deliver content for education, business, government, non-profit services, or other applications. 
     Increasingly, online applications are web applications accessed by users through web browsers (also called browsers). Web applications are built to support World Wide Web protocols and technology over one more data networks including a local area network, medium area network, or wide area network, such as, the Internet. Web applications have gained in popularity as they allow remote users to more easily use their browsers to access and operate web applications. Ease of access and operation is especially important in many sectors, such as, education, where users having a range of experience or knowledge need to be accommodated. 
     Despite their popularity, browsers have limitations with respect to their use in web applications. Browsers were originally designed to support getting and fetching web pages from Web servers over the World Wide Web. Remote users independently controlled operation and navigation through their respective browsers. Similarly with the rise of web applications, remote users at a browser remain restricted to independent and generally passive operation of a browser in the web application. 
     In contrast, separate online meeting tools have been developed which allow users to meet virtually over a network and communicate through audio and/or video with one another. These tools, such as, a Zoom Meeting or Phone product, or Microsoft Teams tool, or Google Meet tool allow users to meet virtually and allow users to control which user is presenting a display or content to other users. These tools however only operate separately from other web applications. 
     BRIEF SUMMARY 
     Computer-implemented methods, systems and computer-readable storage medium are provided for inter-browser presentation control. 
     In an embodiment, a computer-implemented method for controlling presentation in a web application among remote users over a data network is provided. The method includes outputting to a first user a page in the web application having a remote control user-interface (UI) element. Further steps are enabling the first user to turn on or off remote control presentation through a selection made with the remote control user-interface (UI) element and sharing presentation data selected by the first user through the web application to other remote users depending on whether the remote control UI element is turned on or off. 
     In another embodiment, a computer-implemented system for inter-browser presentation control among remote users of a web application shared over a network is provided. The system includes a web application and an inter-browser controller. The web application is configured to output to a first user a page in the web application having a remote control user-interface (UI) element. The remote control UI element is configured to enable the first user to turn on or off remote control presentation through a selection made with the remote control UI element. 
     In a further aspect, the inter-browser controller controls sharing of presentation data selected by the first user through the web application to other remote users depending on whether the remote control UI element is turned on or off. 
     In an embodiment, the system further includes computer-readable memory coupled to the inter-browser controller. The memory stores inter-browser controller state information and the inter-browser controller manages updates to the stored inter-browser controller state information. 
     In another aspect, the inter-browser controller state information includes group state information identifying a join group and whether remote sharing control is on or off, and the inter-browser controller manages changes to the group state information. 
     In a still further aspect, the inter-browser controller state information includes individual user state information. This includes state information corresponding to inputs made by respective users with respect to associated content on a page. The inter-browser controller changes individual state information in response to respective user inputs and communicates with the web application to share updated individual state information corresponding to the individual inputs made by a user to other remote users when the remote control UI element is turned on. 
     Further embodiments, features, and advantages of the invention, as well as the structure and operation of the various embodiments of the invention are described in detail below with reference to accompanying drawings. 
    
    
     
       BRIEF DESCRIPTION OF THE FIGURES 
       Embodiments are described with reference to the accompanying drawings. In the drawings, like reference numbers may indicate identical or functionally similar elements. The drawing in which an element first appears is generally indicated by the left-most digit in the corresponding reference number. 
         FIG.  1    is a diagram of an example web application page having inter-browser presentation control according to an embodiment of the present invention. 
         FIG.  2 A  is a diagram of a system having inter-browser presentation control in accordance with an embodiment. 
         FIG.  2 B  is a flowchart diagram of a computer-implemented method for controlling presentation in a web application among remote users in accordance with an embodiment. 
         FIG.  3    is a flowchart diagram of a routine for privileged user browser action in accordance with an embodiment. 
         FIG.  4    is a flowchart diagram of a routine for follower user browser receive operation in accordance with an embodiment. 
         FIG.  5    is a flowchart diagram of a routine for follower user browser action in accordance with an embodiment. 
         FIG.  6    is a diagram showing example data communication and state updates between an inter-browser controller and user browsers in a joined group according to an embodiment. 
     
    
    
     DETAILED DESCRIPTION 
     The inventors recognized what is needed is an inter-browser control that enables remote users to control who is presenting content to other users in a web application. The inventors recognized an inter-browser control is needed which does not require users of a web application, such as, an online education web application, to switch to a separate meeting tool to control presentation by different users. 
     Embodiments of the present invention provide computer-implemented methods and systems having remote inter-browser control for a web application. In an embodiment, remote control is enabled or disabled through a user-interface (UI) element provided on a web application page. The UI element enables a user to remotely control presentation of a page in a web application. 
     Embodiments refer to illustrations described herein with reference to particular applications. It should be understood that the invention is not limited to the embodiments. Those skilled in the art with access to the teachings provided herein will recognize additional modifications, applications, and embodiments within the scope thereof and additional fields in which the embodiments would be of significant utility. 
     In the detailed description of embodiments herein, references to “one embodiment”, “an embodiment”, “an example embodiment”, etc., indicate that the embodiment described may include a particular feature, structure, or characteristic, but every embodiment may not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment. Further, when a particular feature, structure, or characteristic is described in connection with an embodiment, it is submitted that it is within the knowledge of one skilled in the art to effect such feature, structure, or characteristic in connection with other embodiments whether or not explicitly described. 
     In embodiments, computer-implemented methods and systems allow a privileged user to control other users&#39; browser location, page, state, and components, while preserving the ability for the other users to use the browser page with or without interference. The privileged user provides a mechanism to join a controlled session. Examples of mechanisms may include, but are not limited to, a URL, short URL, text code, or QR code. Other users utilize mechanisms to join the controlled session. 
     The privileged user can switch control on or off at any time. When control is turned on, the privileged user controls which URL, page components or content (static, audio, video, etc.) the other users see in their browser for the controlled session. Actions the privileged user takes will communicate state changes to the other users&#39; browsers to mimic. The privileged user may control only the URL or page but may further control the entirety of the page so that the other users cannot take any action on it. When control is turned off, the privileged user and other users can navigate independently without impacting each other&#39;s experience. 
     Regardless of the level of control, the other users&#39; URL, page, and other state information are transmitted to the privileged user so they can monitor the users&#39; independent activity and decide whether to keep control off or to re-enable it so they can regain control of the other users&#39; browsers. 
     In one application, computer-implemented methods and systems with browser control as described herein enable better distance learning between educators and students without the need for separate proprietary software deployment, installation, and management. 
     Browser control as described herein may be implemented in any web application coupled to an online platform having content delivery where a privileged user may want to control the browser experience of other users. This may include online platforms used in education, such as, an online platform and content management system available from LearnZillion, Inc. or Weld North Education LLC. An online application may be a web application accessed through a browser on a computing device or a downloadable application implemented on a computing device. 
     In one embodiment, a first user (a privileged user with associated rights) may select the UI element to enable other remote users to have control over presentation on a web application page. For example, the first user may be a privileged user, such as an instructor. The instructor may then remotely select the UI element to allow other remote users, such as, one or more students to control presentation on the web application page. This control when enabled may allow a remote user to select content that appears on the web application page. This may include selecting one more content items, such as, starting or pausing audio or video files, inputting text, answering questions, navigating slides or images, selecting pages or content items to be viewed, or other presentation inputs. 
     In another embodiment, any remote user of the web application may select the UI element to have control over presentation on a web application page. Once the remote user selects the remote control UI element, the remote user is recognized as the privileged user with associated rights and has control over presentation on the web application page. 
     As described above, when remote control is turned on, the privileged user controls which URL, page components or content (static, audio, video, etc.) the other users see in their browser for the controlled session. Actions the privileged user takes will communicate state changes to the other users&#39; browsers to mimic. The privileged user may control only the URL or page but may further control the entirety of the page so that the other users cannot take any action on it. When control is turned off, the privileged user and other users can navigate independently without impacting each other&#39;s experience. 
     Example Web Application Page 
       FIG.  1    shows an example web application page  100  according to an embodiment. Page  100  includes a display area  105  and a menu bar  110 . Display area  105  is an area that displays one or more content items. Menu bar  110  includes a remote control UI element  120 . Remote control UI element  120  enables a privileged user to allow a remote user to select content that appears on the web application page. For example, as shown in  FIG.  1   , remote control UI element  120  may be a switch (off/on) that can be switched on to allow remote users to control presentation of content items on page  100 . Switch  120  may be switched off to not allow remote users to control presentation of content items on page  100 . UI element  120  is illustrative and not intended to be limiting. A slider, radio buttons, menus, or other type of UI controls may be used. Menu bar  110  may also include a page selection control  130  that enables a user to select one or more pages to be displayed. Other controls  140 - 160  may be also provided. Notes button  140  enables a user to input notes. Students button  150  allows a user to open a pop up window  155  to see other remote users (students) viewing the page. Stop button  160  enables a user currently presenting a page view to stop presenting. Other controls (indicated by an ellipsis in  FIG.  1   ) may also be provided depending on a particular application or available screen space. 
     In one embodiment, page  100  is displayed as part of a session controlled by an online web application. This web application may include for example an online web application available from LearnZillion, Inc. or Weld North Education LLC. The online web application may allow an instructor to build and store content for an online presentation in a content management system. The content may include a lesson plan, assignments, quiz, test, or other type of education content. Content items output on a page  100  may be text, images, audio, video, hyperlinks, or other types of content. For example, instructional content may be obtained from servers for output to browsers as described in U.S. Pat. No. 10,955,999 by Lotinsky et al. and incorporated by reference herein in its entirety. 
     In one example, an instructor can select remote control  120  to enable control to be given to a particular student. For example, as shown in  FIG.  1    an instructor may select a first student, Brendan English, which is then highlighted in window  155 . The instructor then may select remote control button  120  to enable the first student to control content presented on page  100 . The first student may then input selections in page area  105  for example to answer a question being displayed. The first student may also toggle to a different page through page selection control  130  or perform other inputs. 
     By turning on remote control  120  and selecting the first student as the privileged user, the web application then responds to the privileged user and controls which URL, page components or content (static, audio, video, etc.) the other users see in their browser for the controlled session. Actions the privileged user takes will communicate state changes to the other users&#39; browsers to mimic. The privileged user may control only the URL or page but may further control the entirety of the page so that the other users cannot take any action on it. When control is turned off, the privileged user and other users can navigate independently without impacting each other&#39;s experience. 
     Online Platform with Inter-Brower Control 
       FIG.  2 A  is a diagram of a system  200  having inter-browser control an according to an embodiment. System  200  includes one or more client computing devices  210  coupled to an online platform  240  over one or more data networks  235 . Client computing device  210  includes browser  220 . Online platform  240  includes web application  241  and inter-browser controller  242 . Online platform  240  is also coupled to a content management system  250  and one or more databases  260 . 
     Web application  241  is hosted on online platform  241 . A remote user can access web application  241  through browser  220 . According to a feature, web application  241  includes or is coupled to inter-browser controller  242  to control presentation of content on displays of one or more remote client computing devices  210  as described above with respect to  FIG.  1   . For example, web application  241  outputs a page  100  having remote control UI element  120 . 
     Inter-browser controller  242  controls data presented to other remote users according to the setting of remote control UI element  120 . Inter-browser controller  242  receives data and signals from web application  241  which correspond to user inputs made at browser  220 . When a privileged user turns on remote control at his or her browser  220 , a signal is sent through web application  241  to inter-browser controller  242 . When remote control is on, inter-browser controller  242  controls which URL, page components or content (static, audio, video, etc.) other remote users see in their respective browsers during a controlled session. Actions the privileged user takes in the web application  241  will be communicated as state changes to the other users&#39; browsers to mimic. The privileged user may control only the URL or page but may further control the entirety of the page so that the other users cannot take any action on it. When control is turned off, inter-browser controller  242  will be turned off and will allow the privileged user and other users to navigate independently without impacting each other&#39;s experience. 
     In embodiments, one or more client computing devices  210  may be coupled over communication links to one or more networks  235 . Online platform  240  may include content management system  250  coupled to one or more databases  260 . Network(s)  235  can be any data network or combination of data networks, including but not limited to, a computer or telephony network, local area computer network, medium area network or the Internet. 
     In one implementation, online platform  240  may be implemented on one or more servers running on one or more computing devices at the same or different locations. A server can be any type of data server including, but not limited to, a server that can execute or support an application interfacing on remote client computing devices. A web server can also be coupled to a server or can be a part of server. A server in content management system  250  can also manage and access data stored in one or more databases  260 . Each database  260  may be a relational database or other type of database. 
     Inter-browser controller  242  may be implemented on one or more processors and coupled to a memory device that stores inter-browser controller state information. 
     Operation 
       FIG.  2 B  is a flowchart diagram of a computer-implemented method  270  for controlling presentation in a web application among remote users in accordance with an embodiment (steps  272 - 276 ). In one embodiment, method  270  including each of steps  272 - 276  may be carried out by web application  241 . 
     In step  272 , web application  241  outputs to a first user a page having a remote control user-interface (UI) element. For example, web application  241  may output page  100  having menu bar  110  with a remote control UI element  120  to a browser for rendering for display to a first user at a client computing device  210 . 
     Next, web application  241  enables the first user to turn on or off remote control presentation through a selection made with remote control user-interface (UI) element  120  (step  274 ). For example, web application  241  may receive a signal indicative of the user selection and report to inter-browser controller  242  to update state information accordingly. 
     Finally in step  276 , web application  241  shares presentation data selected by the first user through the web application to other remote users depending on whether the remote control UI element  120  is turned on or off. For example, web application  241  may output presentation data to requesting browsers of remote users according to the updated state information when remote sharing is on. In this way, state changes are communicated to browsers of other remote users to mimic state changes made at a first user browser (having control of presentation) when remote control is turned on. Otherwise, when remote sharing is off, users may navigate on their own browsers independently and updated state information changes made by one user are not communicated to other users. State information is managed by inter-browser controller  242  coupled to web application  241 . The operation of system  200  including inter-browser controller  242  is described further with respect to an example operation between a privileged user and a group of follower users. 
     Example Privileged User and Follower User Operation with Remote Sharing 
     The operation of inter-browser presentation on system  200  is described further with respect to a group of users where presentation control can be shared between a privileged user and one or more follower users. For brevity, the operation is described with reference to computer-implemented routines shown in  FIGS.  3 - 5    and an example joined group in  FIG.  6   . These examples are illustrative and not intended to be limiting. For example, as shown in  FIG.  6   , a privileged user  601  (e.g., a teacher interacting with a browser  611 ) may carry out a lesson plan with a group of follower users  602 - 604  (e.g., students interacting with respective browsers  612 ,  613  and other browsers not shown for clarity). The lesson plan may have multiple slides or other display views of content relating to the lesson plan. As shown in the example in  FIG.  6   , browser  611  may display a web page  621  having a display panel showing a slide  4  in the lesson plan with a question requiring a student to select one of two checkboxes. Web page  621  also includes menu bar having a remote control switch (on/off) to control remote browser presentation. 
       FIG.  6    further shows example inter-browser controller state information  630  that is managed by inter-browser controller  242 . Inter-browser controller  242  is coupled to a memory device  625  that stores inter-browser controller state information  630 . Inter-browser state information  630  includes group state information  632  and individual user state information  634 - 636 . Group state information  632  may be a join code, whether remote control browser sharing is on or off, and a URL or address of content to be displayed (such as lesson plan). Further state information relating to the content is also stored. For example, the content state information may be state information on content inputs (such as, an identifier for the slide  4  of the lesson plan content, and state information on whether two checkboxes in slide  4  are selected.) Individual user state information  634 ,  636  may be state information corresponding to inputs made by users  601 ,  602  when they are a privileged user or a follower user when they have remote sharing control or are allowed to input. State information  634 ,  636  as shown may include a URL and content state information. The URL or address identifies content to be displayed (such as lesson plan). Content state information may be state information on content inputs (such as, an identifier for the slide  4  of the lesson plan content, and state information on whether two checkboxes in slide  4  are selected.) For brevity, two user state information block  634 ,  636  are shown but in practice user state information is stored and managed for each user of a joined group. 
     During an initialization, inter-browser controller  242  (receiving input from web application  241 ) may initialization inter-browser controller state information  630 . This can include creating a join code and adding any other initial group state information  632  or individual user state information  634 - 636  for users in the group. A join code may be for example a meeting ID or address users may use to join in a group. Inter-browser controller  242  can also designate one of the users as privileged user  601  and others as follower users  602 - 604 , and set remote control on or off as a default setting. 
     During operation when remote control is on, follower users  602 - 604  may use their respective browsers to input an answer on slide  4 . In the joined group, each user views the pages selected for display and inputs to those pages made by the privileged user  621 . For instance, user  602  may input a check to select a first checkbox. Inter-browser controller  242  then propagates updated state information such that each user  601 - 604  in the joined group views an updated page showing the selected first checkbox. In this way, presentation control is shared online with others users across different browsers. If remote control is off, then browser inputs made by follower users  602 - 604  is not shared amongst the joined group. 
     In a still further example, a privileged user  601  may control which follower user  602 - 604  is able to provide input. In this way, a privileged user  601  can effectively ‘call on’ a student for an answer. Only the input made by the called on student is shared with the joined group. For example, user  601  can select a particular student from a menu  155  or the user-interface element. 
       FIG.  3    is a flowchart diagram of a routine  300  for privileged user browser action in accordance with an embodiment (steps  310 - 330 ). Routine  300  is carried out by inter-browser controller  242  in response to a privileged user  601  action on browser  611  (such as selecting a new slide or a checkbox on a current slide). In step  310 , inter-browser controller  242  checks if the user web browser  611  is controlling. Inter-browser controller  242  checks state information  630 . In particular, group state information  632  is checked to confirm remote control sharing is on for the joined group and the privileged user  601  is presenting. If no, remote sharing is not on and the user  601  is not presenting, then control proceeds to do nothing (step  320 ). In this case, the privileged user action at browser  611  is not propagated to the follower users  602 - 604 . 
     If yes the privileged user  601  browser  611  is controlling, control proceeds to step  330 . In step  330 , inter-browser controller  242  updates state information  630 . In particular, state information  634  is updated to represent the action privileged user  601  made on browser  611  (such as selecting a new slide or a checkbox on a current slide). If user  601  selected a first checkbox on slide  4  displayed on page  621  using browser  611 , then state information  634  for user  601  (User  1 ) is updated to indicate Checkbox  1  is now YES. Similar updates to state information  634  (or group state information  632 ) may be made in response to other privileged user  601  inputs such as selecting Checkbox  2 , a new slide number, a new lesson plan or other content at a new URL, or switching off remote control or stopping presentation. 
     During operation when privileged user  601  is presenting, follower users  602 - 604  at respective browsers receive and view pages output by web application  241  under the control of inter-browser controller  242 .  FIG.  4    is a flowchart diagram of a routine  400  for follower user browser receive operation in accordance with an embodiment (steps  410 - 430 ). In step  410 , inter-browser controller  242  checks if a follower user web browser is remote controlled. Inter-browser controller  242  checks state information  630 . In particular, group state information  632  is checked to confirm remote control sharing is on for the joined group and a privileged user is presenting. If no, remote sharing is not on and the user is not presenting, then control proceeds to do nothing (step  420 ). In this case, with remote sharing off and not presenting, the inter-browser controller state information  630  is not propagated to the follower user. In other words, for a follower user  602  his or her associated user state information  636  is not updated. 
     If yes, remote sharing is on and the privileged user is presenting, control proceeds to step  430 . In step  430 , inter-browser controller  242  updates state information  636  associated with follower user  602 . In particular, state information  636  is updated to represent the action privileged user  601  action made on browser  611  (such as selecting a new slide or a checkbox on a current slide). If the privileged user selected a first checkbox on slide  4  displayed on page  621  using browser  611 , then state information  636  for follower user  602  is updated to indicate Checkbox  1  is now YES. Similar updates to follower user state information  636  (or group state information  632 ) may be made in response to other privileged user  601  inputs such as selecting checkbox  2 , a new slide number, a new lesson plan or other content at a new URL, or switching off remote control or stopping presentation. In this way, browser  612  of a follower user  602  receives updated page information from web application  241  and renders updated page  622  on browser  612  according to updated state information  630  managed by inter-browser controller  242 . 
     During operation remote control sharing may be passed to a follower user. For example, privileged user  601  may select remote control sharing on and a follower user  601  at respective browser  612  may then take action.  FIG.  5    is a flowchart diagram of a routine  500  for follower user browser action in accordance with an embodiment (steps  510 - 560 ). Routine  500  is carried out in response to an action made by a follower user  602  on browser  612  (such as selecting a new slide or a checkbox on a current slide on page  622 ) (step  510 ). 
     In step  520 , inter-browser controller  242  checks if the user web browser  612  is controlled. Inter-browser controller  242  checks state information  630 . In particular, group state information  632  is checked to confirm whether remote control sharing is on for the joined group and whether the followed user  602  is remote controlled (i.e., there is a privileged user presenting in the joined group). If no, follower user browser  612  is not remote controlled, then control proceeds to allow the browser action input at browser  612  to be made (step  530 ) and reports the action input to inter-browser controller  242  (step  540 ). 
     If yes, the follower user  602  browser  612  is remote controlled by a privileged user  601  (that is remote control sharing is on), then control proceeds to step  550 . Inter-browser controller  242  checks whether follower user  602  is allowed to do a certain action (step  550 ). If yes, action allowed, then control proceeds to step  530 . If no, certain action not allowed, then control proceeds to step  560  (do nothing). In this way, with remote control on and the follower user allowed to do a certain action in step  550  like point a cursor at a slide and make a selection, the browser action input at browser  612  is allowed to be made (step  530 ) and the browser  612  reports the action input to inter-browser controller  242  (step  540 ) for propagation to other users. For example, if follower user  602  selects a checkbox  2  Yes answer in a lesson plan slide then the state information  636  for checkbox  2  is changed by inter-browser controller  242  to indicate Yes. Other users in the group then have their display pages updated to show the checkbox  2  Yes selection in accordance with output from inter-browser controller  242  through web application  241 . Other certain actions of a user may be disallowed when being remote controlled by another user. For example, if a student tries to advance a slide while under remote control of another user, this action is ignored. 
     Further Embodiments and Example Implementations 
     Various embodiments can be implemented on client and server sides, for example, using one or more computing devices. A computing device (such as client computing device  210  and ones implementing platform  240  or CMS  250 ) can be any type of device having one or more processors and memory. For example, a computing device can be a workstation, mobile device (e.g., a mobile phone, personal digital assistant, tablet or laptop), computer, server, computer cluster, server farm, game console, smart television, set-top box, kiosk, embedded system, or other device having at least one processor and computer-readable memory. In addition to at least one processor and memory, such a computing device may include software, firmware, hardware, or a combination thereof. Software may include one or more applications and an operating system. Hardware can include, but is not limited to, a processor, memory and user interface display or other input/output device. 
     Aspects of computing embodiments on client and server sides (including client computing device  210 , browser  220 , platform  240  including components web application  241  and inter-browser controller  242 , and CMS  250 ) may be implemented electronically using hardware, software modules, firmware, tangible computer readable or computer usable storage media having instructions stored thereon, or a combination thereof and may be implemented in one or more computing devices, computer systems or other processing systems. 
     System  200  may be implemented on one more computing devices. In embodiments, browser  220  can be a commercially available web browser, such as, a CHROME browser available from Google Inc., an EDGE browser (or Internet Explorer) browser available from Microsoft Inc., a SAFARI browser available from Apple Inc., or other type of browser. Client computing device  210  can be any electronic computing device that can support a browser  220 . A user can enter control inputs to browser  220  through a user interface (such as a keyboard, microphone, or touchscreen) at client computing device  210 . 
     In one embodiment, database  260  stores content including content blocks that include one or more of text content, accessibility content, text-based image definitions (e.g., scalable vector graphic (SVG)), references to external raster image assets, and references to external objects (e.g., audio files, video files, and assessment items). In one implementation, database  260  can be a relational database used with a database management system that provides JSON support. Asset object storage devices can also be used with CMS  250  on any computer-readable memory device that stores objects. This can include images, audio files, video files, etc. 
     Embodiments are also directed to computer program products comprising software stored on any computer-usable medium. Such software, when executed in one or more data processing devices (such as a processor), causes a data processing device(s) to operate as described herein or, as noted above, allows for the synthesis and/or manufacture of electronic devices (e.g., ASICs, or processors) to perform embodiments described herein. Embodiments employ any computer-usable or -readable medium, and any computer- usable or -readable storage medium known now or in the future. Examples of computer- usable or computer-readable mediums include, but are not limited to, primary storage devices (e.g., any type of random access memory), secondary storage devices (e.g., hard drives, floppy disks, CD ROMS, ZIP disks, tapes, magnetic storage devices, optical storage devices, MEMS, nano-technological storage devices, etc.), and communication mediums (e.g., wired and wireless communications networks, local area networks, wide area networks, intranets, etc.). Computer-usable or computer-readable mediums can include any form of transitory (which include signals) or non-transitory media (which exclude signals). Non-transitory media comprise, by way of non-limiting example, the aforementioned physical storage devices (e.g., primary and secondary storage devices). 
     Embodiments of the present invention have been described above with the aid of functional building blocks illustrating the implementation of specified functions and relationships thereof. The boundaries of these functional building blocks have been arbitrarily defined herein for the convenience of the description. Alternate boundaries can be defined so long as the specified functions and relationships thereof are appropriately performed. The breadth and scope of the present invention should not be limited by any of the above-described exemplary embodiments. 
     The foregoing description of the specific embodiments will so fully reveal the general nature of the invention that others can, by applying knowledge within the skill of the art, readily modify and/or adapt for various applications such specific embodiments, without undue experimentation, without departing from the general concept of the present invention. Therefore, such adaptations and modifications are intended to be within the meaning and range of equivalents of the disclosed embodiments, based on the teaching and guidance presented herein. It is to be understood that the phraseology or terminology herein is for the purpose of description and not of limitation, such that the terminology or phraseology of the present specification is to be interpreted by the skilled artisan in light of the teachings and guidance.