The present invention relates generally to computer-executable software, and more particularly to improving throughput on mobile devices.
In recent years, there has been an increased use of mobile client devices that provide active content to the user. A mobile web page, such as an ASP.Net page, may be constructed of a hierarchy of server-side controls. When a page is executed, the objects in the page hierarchy are traversed to render markup (such as HTML, compact HTML (cHTML), wireless markup language (WML), and the like) that is transmitted to the client device. During the rendering process, formatting and layout information specified for the controls is transformed into markup tags interpreted by the client device to produce the desired appearance on the display. In the most straightforward implementation, these markup tags are generated for each object in the hierarchy, potentially resulting in a great deal of redundant content being transmitted to the client device. Traditional methods for optimization have relied on the markup being known in its entirety. These traditional methods require a two pass process: the first pass gathering the markup, and the second analyzing the rendered markup to optimize where possible. Such traditional methods typically result in slower page updates to the client device, and potentially higher server computational costs.
Moreover, typical mobile connection speeds are a fraction of the current dialup connection speeds available on a desktop PC. The latency between a request and a response on many mobile connections has been a concern in the industry, and a frustration to the mobile user.
Additionally, typical mobile devices, especially cell phones, often have severe memory limitations, putting a restriction on how much data can be transmitted to the device.
Yet another concern arises in locations or countries where the end-user fee structure of browser-enabled mobile devices is a function of the amount of data transmitted.
Thus, there is a need in the art for a method and system directed at improving throughput on mobile devices.
The present invention is directed towards providing a system and method for optimizing HTML output in a just-in-time compiling environment for devices such as mobile devices.
In accordance with one aspect of the present invention, a system is directed towards the rendering of content on a device in response to a request from the device. The system includes server objects, a state-machine, and a writer. The server objects contain information that is related to the display of the content on the device. The state-machine is coupled to the server objects and is configured to preserve a current style state and a desired style state. The writer is coupled to the state-machine and is configured to dynamically determine whether the current style state matches the desired style state. If it is determined that the current style state does not match the desired style state, then the writer outputs a sufficient number of markup tags to transition from the current style state to the desired style state, wherein at least one unnecessary markup tag is not written to the device.
In another aspect of the above system, the system includes a device capabilities component that is coupled to the writer. The device capabilities component provides to the writer capabilities of the device by extracting an identification from the request of the device. Further, in yet another aspect of the above system, the writer dynamically determines the sufficient number of markup tags to be written such that markup tags not supported by the capabilities of the device are identified as unnecessary.
In yet another aspect of the present invention, a computer-implemented method is directed at providing markup output to a requesting device. The computer-implemented method includes receiving a request for the markup output, receiving a desired style state that represents a desired style state of markup tags, comparing the desired style state to a current style state that represents a current style state of markup tags, and if the desired style state is different from the current style state, outputting a sufficient number of markup tags to transition from the current style state to the desired style state, wherein at least one unnecessary markup tag is not written to the device.
In still another aspect of the present invention, the computer-implemented method above delays actually writing out a closing markup tag until the desired style state conflicts with the current style state. Further, in another aspect of the above computer-implemented method, the outputting a sufficient number of markup tags includes nesting the markup tags in a predetermined order that causes unnecessary close markup tags to be omitted.
A more complete appreciation of the present invention and its improvements can be obtained by reference to the accompanying drawings, which are briefly summarized below, to the following detailed description of illustrative embodiments of the present invention, and to the appended claims.
The foregoing aspects and many of the attendant advantages of the present invention will become more readily appreciated as the same becomes better understood by reference to the following detailed description, when taken in conjunction with the accompanying drawings, wherein:
The present invention now will be described more fully hereinafter with reference to the accompanying drawings, which form a part hereof, and which show, by way of illustration, specific exemplary embodiments through which the present invention may be practiced. The present invention may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein; rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the present invention to those skilled in the art. Like numbers refer to like elements throughout. As will be appreciated by one of skill in the art, the present invention may be embodied as methods or devices. Accordingly, the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment combining software and hardware aspects. The following detailed description is, therefore, not to be taken in a limiting sense.
Throughout the specification, the term “connected” means a direct connection between the things that are connected, without any intermediary devices or components. The term “coupled” means a direct connection between the things that are connected, or an indirect connection either through one or more passive or active intermediary devices or components. The meaning of “a,” “an,” and “the” include plural references. The meaning of “in” includes “in” and “on.”
Briefly stated, the present invention is directed towards providing a system and method for optimizing HTML output in a just-in-time compiling environment for such devices as mobile devices. Among other things, disclosed is a system, which employs a state machine to optimize the markup tag outputs in a single pass as device content is rendered. First, an illustrative operating environment and computing server are described. Then, components employed for optimizing the device content are discussed. Finally, methods for determining when tags are emitted to a device such that the number of tags is minimized (i.e., optimized) are disclosed.
Illustrative Operating Environment
Mobile devices 116A-C include such things as cell phones, pagers, web-enabled mobile devices, hand-held electronic devices, programmable and non-programmable consumer electronics, personal computers, and the like. Such devices typically range widely in terms of capabilities and features. For example, a cell phone may have a numeric keypad and a few lines of monochrome LCD display on which only text may be displayed. A web-enabled mobile device may have a touch sensitive screen, a stylus, and several lines of color LCD display in which both text and graphics may be displayed. A computer may have a keyboard, mouse, speakers, microphone, and a relatively large area on which to display forms.
It will be apparent to one of ordinary skill in the art that the present invention is not limited to mobile devices 116A-C. For example, the present invention may be employed for optimizing content to other computer devices such as desktop PCs, without departing from the spirit or scope of the present invention.
Network 110 connects server 102 and its components with mobile devices 116A-C. The network 110 is enabled to employ any form of computer readable media for communicating information from one electronic device to another. Also, network 110 can include the Internet in addition to local area networks (LANs), wide area networks (WANs), direct connections, such as through a universal serial bus (USB) port, other forms of computer-readable media, or any combination thereof. On an interconnected set of LANs, including those based on differing architectures and protocols, a router acts as a link between LANs, enabling messages to be sent from one to another. Also, communication links within LANs typically include twisted wire pair or coaxial cable, while communication links between networks may utilize analog telephone lines, full or fractional dedicated digital lines including T1, T2, T3, and T4, Integrated Services Digital Networks (ISDNs), Digital Subscriber Lines (DSLs), wireless links including satellite links, or other communications links known to those skilled in the art. Furthermore, remote computers and other related electronic devices can be remotely connected to either LANs or WANs via a modem and temporary telephone link. In essence, network 110 includes any communication method by which information may travel from any of mobile devices 116A-C to device capabilities component 104 and from optimizer component 108.
Server 102 is an example of a computing device, and is described in more detail in conjunction with
Server application objects 106 include pages, forms, and other server objects (hereinafter sometimes collectively referred to as server objects) for displaying information to and receiving input from users. A server application program (not shown) may include many such server objects. Typically, the server application program is arranged in terms of pages, e.g., information that should be displayed to a user together. A page may include links to other pages, forms, controls, and other server objects. A form may be used, for example, for collecting address information. The form may display address fields, prompt a user for address and name information, validate inputted information, and send the information to the server application program for further storage and use.
A form may have controls on it to facilitate user input. For example, a form may have a radio button control for receiving a user's selection. A form may have a textbox control for receiving textual input from the user. A form may have control buttons such as OK or CANCEL to receive confirmation or cancellation from a user. A control, however, is not limited to being placed within a form; it may also be placed within a page, another control, or another server object.
Device capabilities component 104 is described in more detail in conjunction with
Optimizer component 108, described in more detail in conjunction with
Illustrative Server Environment
The mass memory as described above illustrates another type of computer-readable media, namely computer storage media. Computer storage media may include volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information, such as computer readable instructions, data structures, program modules, or other data. Examples of computer storage media include RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by a computing device.
The mass memory also stores program code and data for providing a web site on a network. More specifically, the mass memory stores application programs including WWW server 230, such as Microsoft Corporation's Internet Information Server (IIS), and mobile Internet component 302 (which includes device capabilities component 104 and optimizer component 108). These application programs include computer executable instructions which, when executed by server 102, generate displays and perform the logic described elsewhere in this specification. Server 102 also has other application programs 250 that perform logical operations. Server 102 may also include an SMTP handler application for transmitting and receiving e-mail, an HTTP handler application for receiving and handing HTTP requests, and an HTTPS handler application for handling secure connections. The HTTPS handler application may initiate communication with an external application in a secure fashion.
Server 102 also includes input/output interface 224 for communicating with external devices, such as a mouse, keyboard, scanner, or other input devices not shown in
Operationally, when a device, such as mobile devices 116A-C, shown in
Server application objects 106 are stored server objects created for a software application. Typically, server objects are not constructed for use on only one device; rather, a developer typically creates the server objects by programming to a specified programming interface. Device capabilities component 104 abstracts device capabilities such that the developer does not need to know (but can still access if desired) the exact capabilities of the device in order to create an object to display on the device. Instead, the developer may create an object, which calls a feature-rich programming interface and relies on device adapter 310 to transform such calls in device-specific ways during requests from mobile devices 116A-C.
Mobile runtime process 312 builds the markup for the requesting device from control hierarchy 304, which mobile runtime process 312 constructed from server application objects 106. Controls encapsulate data that dictates how a control should be rendered for use by mobile devices 116A-C. One embodiment of a control is Label controls 306 which are employed to display text on mobile devices 116A-C. For example, a text property of Label control 306 specifies the text that is to be rendered. Another embodiment of a control is Form controls 308. Form controls 308 maybe considered as container controls with no visible representation, and are typically employed to call render methods of each of the controls contained in the form. Yet, another embodiment of a control that may be included in control hierarchy 304 is Style Controls (not shown), which expose a collection of properties describing a desired appearance on the user display (e.g., such as bold, right aligned, and the like). A typical structure of control hierarchy 304 may include controls (not shown) that function as a primary container and includes one or more form controls. Form controls may include one or more controls, such as panel controls (not shown), which in turn may be employed to group other server controls, thus, providing a hierarchical structure.
It will be apparent to one of ordinary skill in the art that the present invention is not limited to the above-described objects. For example, other user interface controls, validation controls, or utility server objects may be included within server application objects 106 and control hierarchy 304, without departing from the spirit or scope of the present invention.
Device adapter 310 receives device capabilities and a server object, e.g. a form, page, or control, from mobile runtime process 312 and selects an adapter for transforming the server object. Typically, device adapters are arranged in adapter sets within a device adapter store (not shown). That is, the adapters associated with a particular device or set of devices is grouped (at least logically) in an adapter set. For example, a set of devices may communicate using a wireless markup language (WML). A set of adapters may be logically grouped to handle conversion to and from WML. An adapter may inherit attributes and methods from another adapter in the same or another adapter set. An adapter set may inherit adapter associations, i.e., which server objects should be mapped to which adapters, from another adapter set. Methods and attributes of ancestor adapters may be extended, restricted, or over-written. Generally, object-oriented rules apply to the relationships and interactions between related adapters. This model makes it easier to create an adapter set for a new but similar device. For example, one device may accept hypertext markup language (HTML) documents. A new device may accept compact hypertext markup language (CHTML) documents.
Device adapter 310 may be instantiated by mobile runtime process 312 or by an executing server object spawned by mobile runtime process 312. As the server object executes, it may request that a page be rendered or that information be requested from a user using a device. Upon request (through invocation of one of device adapter 310's methods), device adapter 310 begins rendering a “page” of information to deliver to the device together with any controls necessary to process the server object's request.
In one embodiment of the present invention, once a server object from server application objects 106 begins execution and device adapter 310 is instantiated, device adapter 310 may cease communicating with mobile runtime process 312. Instead, it may receive commands from and deliver information to the associated executing server object. In other words, mobile runtime process 312 may instantiate device adapter 310, execute an appropriate server object from server application objects 106, associate the instantiated device adapter 310 with the executing server objects loaded into control hierarchy 304, and “step out of the way” as the executing server object and adapter interact with each other to send information through writer 314 to a device. Mobile runtime process 312 may then be available to service a request from another device by executing another instance of the same or a different server object, instantiating another device adapter, and associating the server object with the new device adapter.
In another embodiment of the invention, mobile runtime process 312 may be more involved. It may perform tasks such as instantiating device adapter 310, constructing control hierarchy 304, executing an appropriate server object from server application objects 106, associating the instantiated device adapter with the executing server object, instantiating and associating one or more form controls 308 as needed, relaying requests and/or information between the instantiated adapter(s) and associated executing server object(s), and relaying messages to adapters(s) and/or server objects as appropriate.
Device capabilities component 104 determines what capabilities a device has based upon information transmitted by mobile devices 116A-C. Different devices may have different capabilities as discussed in conjunction with
Optimizer component 108 includes mobile runtime process 312 and writer 314. In one embodiment, writer 314 includes state machine 316, both of which are described in more detail in conjunction with
State machine 316 preserves status information about what information has been written or may be written (emitted) by writer 314.
Mobile runtime process 312 receives requests, responses, and/or information from network interface 210 (through WWW server 230 shown in
Network interface 210 transmits and receives messages over network 110. Such messages may be transmitted and received using protocols including hypertext transfer protocol (HTTP), transmission control protocol/Internet protocol (TCP/IP), ftp, SMTP, direct file transfer, combinations thereof, and the like. In essence, any transmission protocol capable for transmitting information over network 110 may be used in conjunction with network interface 210 to send information to and receive information from devices.
Some embodiments of mobile Internet component 302 and its components have been described above. In light of this disclosure, it will be understood that components and interactions of the components within mobile Internet component 302 could be changed, added, or removed without departing from the spirit and scope of this invention. The following is a description of writer 314 and state machine 316 that might be employed to dynamically remove redundant markup tags, without changing the actual appearance to the user, and thereby render optimized content for the user.
Illustrative Writer Components
As shown in the figure, state machine 316 includes Tag Stack 402, Current State Register 404, and Style Stack 406.
Style Stack 406 may be implemented as a data structure, buffer area, or similar means for providing a pushdown list for storing those tags representing the desired style state that a control has requested to be emitted. In one embodiment, Style Stack 406 is configured as a last-in-first-out data structure. That is, those markup tags highest on Style Stack 406 reflect the most current request. Once writer 314 emits the markup tags associated with a control, writer 314 pops them from Style Stack 406 by invoking state machine 316.
Current State Register 404 may be implemented as a data type, storage buffer, or similar means for providing storage of markup tags that are currently active or opened and represent the current style state.
Tag Stack 402 may be implemented as a data structure, buffer area, or similar means for providing a pushdown list for storing information about what markup tags have been written that remain open when writer emits the markup tags. In one embodiment, Tag Stack 402 is configured as a last-in-first-out data structure. Markup tags highest on Tag Stack 402 reflect those open or active tags most recently emitted. As writer 314 emits tags that close or deactivate previously opened or activated tags, the associated open/activated tags are popped from Tag Stack 402 by invoking state machine 316.
By way of example, if a control ‘asks’ to render a markup tag for generating bold text (i.e., <b>, the open bold tag), the open bold tag, <b>, will be pushed onto Style Stack 406. Once writer 314 emits the open bold tag, the tag is pushed onto Tag Stack 402. Moreover, as bold reflects the current configuration of active tags, Current State Register 404 is also updated.
Generalized Operation
The operation of the present invention will now be described with respect to
It will be understood that each block of the flowchart illustrations (
Accordingly, blocks of the flowchart illustration support combinations of means for performing the specified functions, combinations of steps for performing the specified functions and program instruction means for performing the specified functions. It will also be understood that each block of the flowchart illustration, and combinations of blocks in the flowchart illustration, can be implemented by special purpose hardware-based systems which perform the specified functions or steps, or combinations of special purpose hardware and computer instructions.
The process continues at block 704 where the information about the requesting mobile device is employed to determine the device capabilities. For example, referring to
Block 706 is illustrated in detail in
The process continues at block 708 where the optimized markup output is communicated to the requesting mobile device. Upon completion of block 708, the logical process flow ends.
Traversing Control Objects
At decision block 802, it is determined whether there are any control objects that are to be rendered. If there are no more controls to be rendered, the process proceeds to block 814. Otherwise, if there is a control to be rendered in the control hierarchy, the process proceeds to block 804. It should be apparent that during the first pass, process 800 should proceed to block 804.
At block 804, when a control within the control hierarchy remains to be rendered, that control's style properties are pushed onto Style Stack. In one embodiment, the control calls a method that passes the effective style for the current control to writer 314 (
At decision block 806, it is determined whether the current control object has any information to be written (emitted) for the mobile device. If the control object contains a call to write information, the process proceeds to block 808. Briefly described here, and described in detail in conjunction with
Alternatively, if it is determined at decision block 806, that the control object does not request information to be written, the process proceeds to decision block 810.
At decision block 810, it is determined whether to exit the current control object. If so, the process proceeds to block 812, where the contents of the top level of the Style Stack are removed or popped before returning to decision block 802.
Alternatively, if at decision block 810, it is determined that the current control object is not to be exited, such as when the current control contains children control objects, the process returns to decision block 802.
Process 800 continues through the control object hierarchy as described above, until at decision block 802, it is determined that no further controls exist to be rendered. When it is determined at decision block 802 that no more controls are to be rendered, including a container control, the process proceeds to block 814.
At block 814, the markup tags that remain open on the Tag Stack are closed, and written out for transmission to the mobile device. As each markup tag is closed, it is popped off the Tag Stack. After all markup tags have been drained (popped off the stack), process 800 returns to block 708 (shown in
Transitioning States
At decision block 902, it is determined whether the markup tag properties of the Current State Register matches the style properties on the top of the Style Stack. If it is determined that the style properties do match, then no markup tags are emitted or written. The process proceeds to block 916, where any information the control may have to emit, is emitted. Alternatively, if at decision block 902 it is determined that the style properties within Current State Register do not match the style properties of the top of the Style Stack, the process proceeds to decision block 904.
At decision block 904, it is determined whether style properties on the top of the Style Stack contain additional markup tags not in the Current State Register. If it is determined, at decision block 904, that there are no additional markup tags, the process proceeds to block 912. Alternatively, if it is determined that there are extra markup tags on the top stack level that are not included in the Current State Register, the process proceeds to decision block 906, to determine the correct order to write out the markup tags. The traditional approaches for optimizing markup output would look ahead in the remaining control objects to determine the markup tag properties to be rendered. The present method instead looks at the Style Stack to predict the optimal order to open the markup tags.
At decision block 906, it is determined whether the markup tags have an optimal nesting order. If it is determined that the markup tags cannot be nested, the process proceeds to block 918. Alternatively, at decision block 906, if it is determined that the markup tags can be nested, the process proceeds to decision block 908.
By way of illustration, a traditional approach that looks ahead in the markup, would observe that rendered output for both controls are “bold,” but only the first control is “italic.” Therefore, the following markup:
could be optimized so that both controls share a bold tag:
However, for this optimization to be made, the <i> markup tag must be opened after the <b> tag, otherwise the result would interleave the tags, such as:
which is contrary to current HTML standard syntax. Therefore, if the <i> tag is opened first, then the <b> tag would have to be closed before closing the <i> tag, and then the <b> tag would have to be reopened. This would be equivalent to the unoptimized case. Therefore, in the example, opening the <b> tag before the <font> tag is not an arbitrary decision, but rather based on studies conducted by the inventors.
At decision block 908, it is determined whether a given markup tag came from a parent control. If it is determined that the markup tags are from the parent control, (a lower level on the Style Stack) the process proceeds to block 910 where the markup tags will be nested or ordered.
Alternatively, if at decision block 908, it is determined that the markup tags are not from the parent control, the process continues to block 918.
At block 918, markup tags that could not be nested or are not derived from the parent control are closed. That is, a close markup tag is written out for transmission to the requesting mobile device. Additionally, markup tags that are closed are popped from the Tag Stack. The process then continues to decision block 920.
At decision block 920, it is determined whether the closed markup tags are actually needed for the current style request. If it is determined that the closed markup tag is not required to satisfy the current style request, the process continues to block 912. Alternatively, if it is determined that a needed markup tag was closed, the process continues to block 922.
At block 922, markup tags that were closed to preserve the object hierarchy rules, are reopened. That is, the open markup tag is written out for transmission to the requesting mobile device. Additionally, the opened markup tag is pushed onto the Tag Stack. The process continues to block 912.
At block 912, any new required markup tags in the control's style request are opened (e.g., emitted as an open markup tag for transmission to the requesting mobile device). Additionally, the new required markup tags are pushed onto the Tag Stack. After block 912, the process continues to block 914.
To illustrate, a required markup tag may be determined based on the capabilities of the requesting mobile device. For example, some devices, although based on HTML, do not support the use of some markup tags, such as the <font> tag. Such markup tags would be determined not to be required. Therefore, eliminating the transmission of such markup tags provides an improvement in throughput to the requesting mobile device.
At block 914, the Current State Register is updated to reflect the markup tags that are currently active. As Current State Register 404, in
At block 916, information is emitted to the requesting device employing the current markup style tags. After block 916, the process returns to the decision block 810 in
Illustrative Example
By way of illustrating the generalized operation of the above-described embodiment of the present invention, suppose that a mobile device has requested server application objects that would render the following output:
As described above in conjunction with
Form control 502 is a container object that includes style instructions to set future output to “bold, and “blue.” Label1 control 504 includes instructions to render the output “Hello” in “bold, blue, and italicized.” No break is requested after the word “Hello.” Label2 control 506 includes instructions to render the output “World” in “bold, non-italicized, and in the color red.” Again, no break is requested after the output of “World.” Label3 control 508 includes instructions to render the output “!!!” in “bold, non-italicized, and in the color blue.” After the output “!!!,” Label3 control 508 requests a break command to be emitted to the requesting device.
At runtime, when example hierarchy 500 is traversed, each control would invoke a sequence of calls to writer 314.
Referring to the example illustrated in
When form control 502 is rendered, its style properties are pushed onto the Style Stack. This operation is illustrated in
Because form control 502 does not write any information, a write method or request is not invoked. Because there is no information being written, there is no content that needs to be “bold” or “blue,” so no markup tags would be written. Thus, the current state remains undefined until something is written. As illustrated in
Because form control 502 contains children controls, the process loops to render the child control. Therefore, at this step, the process does not pop contents from the Style Stack, and instead, begins to render the first child control, Label1 control 504.
As illustrated in
As seen in
Continuing with the example in
The process proceeds to exit Label1 control 504 where Label1 control 504's style information is popped from the Style Stack.
Next, form control 502 calls render on the next label, Label2 control 506. The style information of Label2 control 506 is pushed onto Style Stack, as illustrated by Style Stack 406.13 in
When the request to write is made (row 5,
However, transitioning from “blue” to “red” may be done in several ways. The <b> and <font> markup tags could be closed and reopened, or a new font markup tag could be nested in the original. Again, the present invention leverages the object hierarchy. As a result, Label2 control 506 would have its font markup tag nested, as illustrated in Tag Stack 402.15 in
The last control, Label3 control 508, in
Label3 control 508 in the example indicates that a break should be written before the next control, however, the <br> markup tag is not written by the present invention until the next request to write (as illustrated in
After the last label and form are exited, and the Tag Stack is drained, the pending break request will have no effect in this example, because there are no following controls.
Alternate Embodiments
It will be apparent to those skilled in the art that the above example does not illustrate all the possible objects or controls that may be displayed on mobile devices 116A-C.
For example, there are instances where it is desirable to only write out the formatting information (e.g., bold, color, and the like) or alternatively only write out layout information (e.g., right aligned, and the like). Therefore, another embodiment of the present invention determines if a request to write affects only layout or only formatting markup tags emissions. In this manner, additional markup tags may be filtered out which provide virtually no effect on the current control.
Additionally, certain conditions arise in HTML or other markup languages that ignore the consideration of already opened markup tags. At these instances, it is necessary to start a new context in state machine 316 in
Moreover, it will be apparent to one of ordinary skill in the art that the present invention is not limited to the optimization of markup tags. Any hierarchical structure that may include redundant information may benefit from the single pass optimization of the present invention. For example, a database structure may be employed, without departing from the spirit or scope of the present invention.
The above specification, examples, and data provide a complete description of the manufacture and use of the composition of the invention. Since many embodiments of the invention can be made without departing from the spirit and scope of the invention, the invention resides in the claims hereinafter appended.
This utility patent application is a continuation of a previously filed U.S. Provisional Application No. 60/317,160 filed on Sep. 4, 2001, the benefit of the filing date, which is hereby claimed under 35 U.S.C. §119(e).
Number | Name | Date | Kind |
---|---|---|---|
3937925 | Boothroyd | Feb 1976 | A |
3956615 | Anderson et al. | May 1976 | A |
4186871 | Anderson et al. | Feb 1980 | A |
4807154 | Scully et al. | Feb 1989 | A |
4847785 | Stephens | Jul 1989 | A |
4949300 | Christenson et al. | Aug 1990 | A |
4979148 | Bush et al. | Dec 1990 | A |
5299315 | Chin et al. | Mar 1994 | A |
5349657 | Lee | Sep 1994 | A |
5388156 | Blackledge, Jr. et al. | Feb 1995 | A |
5465332 | Deloye et al. | Nov 1995 | A |
5517655 | Collins et al. | May 1996 | A |
5548340 | Bertram | Aug 1996 | A |
5550560 | Kanada et al. | Aug 1996 | A |
5604908 | Mortson | Feb 1997 | A |
5638176 | Hobbs et al. | Jun 1997 | A |
5640449 | Worley et al. | Jun 1997 | A |
5649131 | Ackerman et al. | Jul 1997 | A |
5664228 | Mital | Sep 1997 | A |
5675520 | Pitt, III et al. | Oct 1997 | A |
5706505 | Fraley et al. | Jan 1998 | A |
5732256 | Smith | Mar 1998 | A |
5732267 | Smith | Mar 1998 | A |
5745103 | Smith | Apr 1998 | A |
5748890 | Goldberg et al. | May 1998 | A |
5774670 | Montulli | Jun 1998 | A |
5793982 | Shrader et al. | Aug 1998 | A |
5812996 | Rubin et al. | Sep 1998 | A |
5835724 | Smith | Nov 1998 | A |
5855020 | Kirsch | Dec 1998 | A |
5878141 | Daly et al. | Mar 1999 | A |
5878282 | Mital | Mar 1999 | A |
5897622 | Blinn et al. | Apr 1999 | A |
5911068 | Zimmerman et al. | Jun 1999 | A |
5918007 | Blackledge, Jr. et al. | Jun 1999 | A |
5940075 | Mutschler, III et al. | Aug 1999 | A |
5940847 | Fein et al. | Aug 1999 | A |
5953524 | Meng et al. | Sep 1999 | A |
5956489 | San Andres et al. | Sep 1999 | A |
5961601 | Iyengar | Oct 1999 | A |
5963952 | Smith | Oct 1999 | A |
5983227 | Nazem et al. | Nov 1999 | A |
5991802 | Allard et al. | Nov 1999 | A |
5995753 | Walker | Nov 1999 | A |
6006230 | Ludwug et al. | Dec 1999 | A |
6014637 | Fell et al. | Jan 2000 | A |
6014666 | Helland et al. | Jan 2000 | A |
6023714 | Hill et al. | Feb 2000 | A |
6032207 | Wilson | Feb 2000 | A |
6038551 | Barlow et al. | Mar 2000 | A |
6067578 | Zimmerman et al. | May 2000 | A |
6072664 | Aoyagi et al. | Jun 2000 | A |
6076108 | Courts et al. | Jun 2000 | A |
6101607 | Bachand et al. | Aug 2000 | A |
6108717 | Kimura et al. | Aug 2000 | A |
6115744 | Robins | Sep 2000 | A |
6121968 | Arcuri et al. | Sep 2000 | A |
6138150 | Nichols et al. | Oct 2000 | A |
6138171 | Walker | Oct 2000 | A |
6167524 | Goodnow et al. | Dec 2000 | A |
6173316 | De Boor et al. | Jan 2001 | B1 |
6178461 | Chan et al. | Jan 2001 | B1 |
6185608 | Hon et al. | Feb 2001 | B1 |
6203220 | Takenoshita et al. | Mar 2001 | B1 |
6205480 | Broadhurst et al. | Mar 2001 | B1 |
6212192 | Mirashrafi et al. | Apr 2001 | B1 |
6218958 | Eichstaedt et al. | Apr 2001 | B1 |
6230160 | Chan et al. | May 2001 | B1 |
6246422 | Emberling et al. | Jun 2001 | B1 |
6247044 | Gosling et al. | Jun 2001 | B1 |
6253228 | Ferris et al. | Jun 2001 | B1 |
6253234 | Hunt et al. | Jun 2001 | B1 |
6279151 | Breslau et al. | Aug 2001 | B1 |
6286133 | Hopkins | Sep 2001 | B1 |
6300947 | Kanevsky | Oct 2001 | B1 |
6326957 | Nathan et al. | Dec 2001 | B1 |
6334157 | Oppermann et al. | Dec 2001 | B1 |
6343148 | Nagy | Jan 2002 | B2 |
6351767 | Batchelder et al. | Feb 2002 | B1 |
6353447 | Truluck et al. | Mar 2002 | B1 |
6354477 | Trummer | Mar 2002 | B1 |
6363352 | Dailey et al. | Mar 2002 | B1 |
6370561 | Allard et al. | Apr 2002 | B1 |
6373841 | Goh et al. | Apr 2002 | B1 |
6397253 | Quinlan et al. | May 2002 | B1 |
6401099 | Koppolu et al. | Jun 2002 | B1 |
6401132 | Bellwood et al. | Jun 2002 | B1 |
6405241 | Gosling et al. | Jun 2002 | B2 |
6412008 | Fields et al. | Jun 2002 | B1 |
6430575 | Dourish et al. | Aug 2002 | B1 |
6457030 | Adams et al. | Sep 2002 | B1 |
6460071 | Hoffman | Oct 2002 | B1 |
6460141 | Olden | Oct 2002 | B1 |
6463442 | Bent et al. | Oct 2002 | B1 |
6470381 | De Boor et al. | Oct 2002 | B2 |
6480894 | Courts et al. | Nov 2002 | B1 |
6487665 | Andrews et al. | Nov 2002 | B1 |
6505238 | Tran | Jan 2003 | B1 |
6509913 | Martin et al. | Jan 2003 | B2 |
6535896 | Britton et al. | Mar 2003 | B2 |
6546516 | Wright et al. | Apr 2003 | B1 |
6556217 | Makipaa et al. | Apr 2003 | B1 |
6557038 | Becker et al. | Apr 2003 | B1 |
6560598 | Delo et al. | May 2003 | B2 |
6560618 | Ims | May 2003 | B1 |
6564251 | Katariya et al. | May 2003 | B2 |
6591272 | Williams | Jul 2003 | B1 |
6606418 | Mitchell et al. | Aug 2003 | B2 |
6610105 | Martin et al. | Aug 2003 | B1 |
6622168 | Datta | Sep 2003 | B1 |
6633416 | Benson | Oct 2003 | B1 |
6704728 | Chang et al. | Mar 2004 | B1 |
6714794 | O'Carroll | Mar 2004 | B1 |
6725219 | Nelson et al. | Apr 2004 | B2 |
6728421 | Kokemohr | Apr 2004 | B2 |
6826597 | Lonnroth et al. | Nov 2004 | B1 |
6886013 | Beranek | Apr 2005 | B1 |
6901437 | Li | May 2005 | B1 |
6954751 | Christfort et al. | Oct 2005 | B2 |
6961776 | Buckingham et al. | Nov 2005 | B1 |
20010037404 | Hafsteinsson et al. | Nov 2001 | A1 |
20010054020 | Barth et al. | Dec 2001 | A1 |
20020004815 | Muhlestein et al. | Jan 2002 | A1 |
20020008703 | Merrill et al. | Jan 2002 | A1 |
20020073163 | Churchill et al. | Jun 2002 | A1 |
20020078101 | Chang et al. | Jun 2002 | A1 |
20020078144 | Lamkin et al. | Jun 2002 | A1 |
20020083171 | Hoogenboom et al. | Jun 2002 | A1 |
20020095445 | alSafadi et al. | Jul 2002 | A1 |
20020103858 | Bracewell et al. | Aug 2002 | A1 |
20020107891 | Leamon et al. | Aug 2002 | A1 |
20020108102 | Muhlestein et al. | Aug 2002 | A1 |
20020116534 | Teeple | Aug 2002 | A1 |
20020120753 | Levanon et al. | Aug 2002 | A1 |
20020161928 | Ndili | Oct 2002 | A1 |
20020188890 | Shupps et al. | Dec 2002 | A1 |
20030009476 | Fomenko et al. | Jan 2003 | A1 |
20030009519 | Gosling et al. | Jan 2003 | A1 |
20030009567 | Farouk | Jan 2003 | A1 |
20030018827 | Gutherie et al. | Jan 2003 | A1 |
20030025728 | Ebbo et al. | Feb 2003 | A1 |
20030028565 | Landsman et al. | Feb 2003 | A1 |
20030074634 | Emmelmann | Apr 2003 | A1 |
20030097639 | Niyogi et al. | May 2003 | A1 |
20030187952 | Young et al. | Oct 2003 | A1 |
20040003112 | Alles et al. | Jan 2004 | A1 |
20040003139 | Cottrille et al. | Jan 2004 | A1 |
20040003248 | Arkhipov | Jan 2004 | A1 |
20040073873 | Croney et al. | Apr 2004 | A1 |
20040172484 | Hafsteinsson et al. | Sep 2004 | A1 |
Number | Date | Country |
---|---|---|
1156415 | Nov 2001 | EP |
1156427 | Nov 2001 | EP |
1156428 | Nov 2001 | EP |
1164473 | Dec 2001 | EP |
01111680.3-2201- | Apr 2002 | EP |
01111681.1-2201- | Apr 2002 | EP |
2339374 | Jan 2000 | GB |
WO 9821651 | May 1998 | WO |
WO 9844695 | Oct 1998 | WO |
WO 9934288 | Jul 1999 | WO |
WO 0127783 | Apr 2001 | WO |
WO 01755667 | Oct 2001 | WO |
WO 02213434 | Mar 2002 | WO |
Number | Date | Country | |
---|---|---|---|
20040205561 A1 | Oct 2004 | US |
Number | Date | Country | |
---|---|---|---|
60317160 | Sep 2001 | US |