Points-To Analysis for Javascript∗

Total Page:16

File Type:pdf, Size:1020Kb

Points-To Analysis for Javascript∗ Points-to Analysis for JavaScript∗ Dongseok Jang Kwang-Moo Choe Dept. of Computer Science Dept. of Computer Science Korea Advanced Institute of Science & Korea Advanced Institute of Science & Technology Technology [email protected] [email protected] ABSTRACT ysis, scripting language JavaScript is widely used by web developers and the com- plexity of JavaScript programs has increased over the last 1. INTRODUCTION year. Therefore, the need for program analysis for Java- JavaScript is a scripting language designed for client-side Script is evident. Points-to analysis for JavaScript is to de- web scripting. There is now a standardized version, EC- termine the set of objects to which a reference variable or MAScript[6]. JavaScript has attracted more users and Java- an object property may point. Points-to analysis for Java- Script programs have become lengthy and complex. Al- Script is a basis for further program analyses for JavaScript. most all web browsers support JavaScript. With help of It has a wide range of applications in code optimization and the DOM[11] and Ajax[7], there are more and more sophis- software engineering tools. However, points-to analysis for ticated JavaScript programs used in popular web sites in JavaScript has not yet been developed. these days. The web sites use JavaScript to implement im- JavaScript has dynamic features such as the runtime mod- portant application logic rather than simple user interfaces. ification of objects through addition of properties or updat- A problem of JavaScript programs is slow execution speed. ing of methods. We propose a points-to analysis for Java- That is because JavaScript programs are usually executed Script which precisely handles the dynamic features of Java- by interpreters and JavaScript has many dynamic features Script. Our work is the first attempt to analyze the points-to which must be checked at runtime. The speed of JavaScript behavior of JavaScript. We evaluate the analysis on a set programs affects people’s perception about the responsive- of JavaScript programs. We also apply the analysis to a ness of popular websites. code optimization technique to show that the analysis can Performance improvement through the use of code opti- be practically useful. mization is an important method for making JavaScript a proper choice for building high quality software. Because a Categories and Subject Descriptors JavaScript statement executes many machine instructions, D.3.2 [Programming Languages]: Language Classifica- a little change of a JavaScript source code can bring about tions—Specialized application languages; F.3.2 [Logics and much improvement of the performance. Code optimization Meanings of Programs]: Semantics of Programming Lan- can be statically applied by using source level transforma- guages—Program analysis tion. JavaScript compilers can also adopt code optimization to generate faster target code. Even JavaScript interpreters can utilize code optimization techniques at runtime. General Terms Points-to analysis for JavaScript is essential for code opti- Algorithms,Design,Experimentation,Languages mization, but it has not yet been developed. Points-to anal- ysis for JavaScript determines the set of objects to which a Keywords reference variable or an object property may point. Points- to analysis enables essential analyses for code optimization, JavaScript, points-to analysis, pointer analysis, program anal- such as side-effect analysis and def-use analysis. ∗This work was supported by the Engineering Research Cen- In this paper, we present and evaluate a points-to analy- ter of Excellence Program of Korea Ministry of Education, sis for JavaScript as a first step for further program analyses Science and Technology(MEST) / Korea Science and Engi- for JavaScript. Our analysis is based on Andersen’s points- neering Foundation(KOSEF), grant number R11-2008-007- to analysis for C[2]. In Section 2, we discuss a motivating 02004-0. example of our research. Then, we define a restricted lan- guage to briefly describe points-to behavior of JavaScript in Section 3. We present a constraint-based, flow- and context- insensitive 1 points-to analysis for the restricted language in Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are Section 4. In Section 5, we evaluate our analysis on a set not made or distributed for profit or commercial advantage and that copies of JavaScript programs. We also evaluate the impact of bear this notice and the full citation on the first page. To copy otherwise, to the analysis on a special case of partial-redundancy elimi- republish, to post on servers or to redistribute to lists, requires prior specific 1 permission and/or a fee. A flow-insensitive analysis does not take control-flow into SAC’09 March 8-12, 2009, Honolulu, Hawaii, U.S.A. account. A context-insensitive analysis does not distinguish Copyright 2009 ACM 978-1-60558-166-8/09/03 ...$5.00. between different invocations of a function S0 : var str = prompt(); If we maintain information for each property to increase S1 : var a = new Object(); // o1 the precision of the analysis, we obtain the points-to graph S2 : a.x = new Object(); // o2 on the bottom right of Figure 1. In the graph, we maintain S3 : a.y = new Object(); // o3 the name of each property of an object. For example, we use S4 : // o a[str] = new Object(); 4 o1.x to represent the property x of the object o1. For the S5 : b = a.x; added property via the [ ] operator, we use the aggregate o1[ ] in the same way of Andersen’s analysis. When an object property is updated via the [ ] operator, a O 1 we may not know what property of the object is actually updated because the name of the changing property may O a O 1 O 1.x 2 not be statically determined. Any existing property of the object may be updated, or a new property may be created O .y O1 [] O 2 1 O 3 in the object. Because str may evaluate to "x" or "y" at S4, o1.x and o1.y point to o4 in our points-to graph for the b O 3 O 1 [] O 4 program. The node o1[ ] is for the case that str evaluate to a property name which cannot be statically determined. In O 4 b our points-to graph, the points-to set of b is {o2, o4}. This is more accurate than the conventional approaches. Our points-to analysis increases accuracy by distinguishing each Figure 1: Example of JavaScript program and its property separately while considering dynamic features of points-to graphs. Top: Program code, Bottom left: JavaScript. Conventional graph, Bottom right: Graph with con- sidering properties 3. SIMPLESCRIPT For presentation brevity, we define SimpleScript, a re- nation[1] for the JavaScript programs. Section 6 discusses stricted language of JavaScript. The most part of Simple- related work. Finally, Section 7 presents conclusions and Script is based on Thiemann’s work [16], but modified in future work. some ways. We add the . operation and a unique global ob- ject to SimpleScript to expose significant points-to behaviors 2. MOTIVATION of JavaScript. JavaScript is a weakly and dynamically typed object-based In a sense, a JavaScript object is an associative array–a language. JavaScript has no classes but supports construc- data structure that allows to dynamically associate arbitrary 2 tors and prototyping to share functionality of code. Java- data values with arbitrary strings. An object property can Script provides the runtime modification of objects through be accessed as an array element. The feature is represented addition of properties or updating of methods. A JavaScript in JavaScript syntax. For example, the JavaScript expres- object is just like an associative array– a data structure that sion object.property is equivalent to object["property"]. allows to dynamically associate arbitrary data values with In Figure 1, the program shows that behavior. S0 gets arbitrary strings(property names). a string from a library function. Then, S1 creates a new JavaScript has lexically scoped first-class functions which object o1 with no properties. Here we name an object by behave as functions or methods. When a function object is its allocation site in a program. S2 assigns o2 to a non- assigned to a property of an object, the function acts as a existing property named x of o1 referenced by a. Because method if it is referenced by the property of the object and it does not exist, the property is created on the fly and the called. If a function is called as a method of an object, each value is assigned to the newly created property. S3 does reference to this is bound to the object in the function body. similar operations to the property y of o1. S4 assigns o4 Otherwise, each reference to this resolves to the unique to a property whose name is given by the expression str global object of JavaScript. A function can be used as a via the [ ] operator. The expression str may evaluate to constructor when invoked through the new operator. The "x","y", or a non-existing property name. When an object new operator creates a new object, and calls a constructor property is accessed by the [ ] operator, the actual property which binds this to the new object in the function body. name may be statically unknown. JavaScript has a unique global object. Whenever a vari- Conventional points-to analyses based on Andersen’s anal- able is declared in the global scope or a value is assigned to ysis[2] treat elements of an array as an aggregate. If we an undeclared variable, the variable becomes a property of naively adapt the conventional analyses to JavaScript, ob- the global object.
Recommended publications
  • Oracle® Server X5-8 Product Notes
    ® Oracle Server X5-8 Product Notes Part No: E56303-20 August 2021 Oracle Server X5-8 Product Notes Part No: E56303-20 Copyright © 2015, 2021, Oracle and/or its affiliates. This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited. The information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing. If this is software or related documentation that is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, then the following notice is applicable: U.S. GOVERNMENT END USERS: Oracle programs (including any operating system, integrated software, any programs embedded, installed or activated on delivered hardware, and modifications of such programs) and Oracle computer documentation or other Oracle data delivered to or accessed by U.S. Government end users are "commercial computer software" or "commercial computer software documentation" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, the use, reproduction, duplication, release, display, disclosure, modification, preparation of derivative works, and/or adaptation of i) Oracle programs (including any operating system, integrated software, any programs embedded, installed or activated on delivered hardware, and modifications of such programs), ii) Oracle computer documentation and/or iii) other Oracle data, is subject to the rights and limitations specified in the license contained in the applicable contract.
    [Show full text]
  • PRIMERGY RX300 S5 Operating Manual
    PRIMERGY RX300 S5 Operating manual Edition september 2009 Comments… Suggestions… Corrections… The User Documentation Department would like to know your opinion of this manual. Your feedback helps us optimize our documentation to suit your individual needs. Feel free to send us your comments by e-mail to [email protected]. Certified documentation according to DIN EN ISO 9001:2000 To ensure a consistently high quality standard and user-friendliness, this documentation was created to meet the regulations of a quality management system which complies with the requirements of the standard DIN EN ISO 9001:2000. cognitas. Gesellschaft für Technik-Dokumentation mbH www.cognitas.de Copyright and Trademarks Copyright © 2009 Fujitsu Technology Solutions GmbH. All rights reserved. Delivery subject to availability. The right to technical modification is reserved. All hardware and software names used are trade names and/or trademarks of their respective manufacturers. Contents 1 Preface . 7 1.1 Concept and target groups for this manual . 7 1.2 Documentation overview . 8 1.3 Features . 10 1.4 Notational conventions . 22 1.5 Technical data . 23 2 Installation steps, overview . 25 3 Important information . 27 3.1 Safety instructions . 27 3.2 ENERGY STAR . 34 3.3 CE conformity . 34 3.4 FCC Class A Compliance Statement . 35 3.5 Transporting the server . 36 3.6 Notes on installing in the rack . 37 3.7 Environmental protection . 38 4 Hardware installation . 41 4.1 Unpacking the server . 42 4.2 Installing/removing the server in/from the rack . 43 4.2.1 Rack system requirements . 43 4.2.2 Installation in PRIMECENTER/DataCenter Rack .
    [Show full text]
  • Appendix a the Ten Commandments for Websites
    Appendix A The Ten Commandments for Websites Welcome to the appendixes! At this stage in your learning, you should have all the basic skills you require to build a high-quality website with insightful consideration given to aspects such as accessibility, search engine optimization, usability, and all the other concepts that web designers and developers think about on a daily basis. Hopefully with all the different elements covered in this book, you now have a solid understanding as to what goes into building a website (much more than code!). The main thing you should take from this book is that you don’t need to be an expert at everything but ensuring that you take the time to notice what’s out there and deciding what will best help your site are among the most important elements of the process. As you leave this book and go on to updating your website over time and perhaps learning new skills, always remember to be brave, take risks (through trial and error), and never feel that things are getting too hard. If you choose to learn skills that were only briefly mentioned in this book, like scripting, or to get involved in using content management systems and web software, go at a pace that you feel comfortable with. With that in mind, let’s go over the 10 most important messages I would personally recommend. After that, I’ll give you some useful resources like important websites for people learning to create for the Internet and handy software. Advice is something many professional designers and developers give out in spades after learning some harsh lessons from what their own bitter experiences.
    [Show full text]
  • Kubuntu Desktop Guide
    Kubuntu Desktop Guide Ubuntu Documentation Project <[email protected]> Kubuntu Desktop Guide by Ubuntu Documentation Project <[email protected]> Copyright © 2004, 2005, 2006 Canonical Ltd. and members of the Ubuntu Documentation Project Abstract The Kubuntu Desktop Guide aims to explain to the reader how to configure and use the Kubuntu desktop. Credits and License The following Ubuntu Documentation Team authors maintain this document: • Venkat Raghavan The following people have also have contributed to this document: • Brian Burger • Naaman Campbell • Milo Casagrande • Matthew East • Korky Kathman • Francois LeBlanc • Ken Minardo • Robert Stoffers The Kubuntu Desktop Guide is based on the original work of: • Chua Wen Kiat • Tomas Zijdemans • Abdullah Ramazanoglu • Christoph Haas • Alexander Poslavsky • Enrico Zini • Johnathon Hornbeck • Nick Loeve • Kevin Muligan • Niel Tallim • Matt Galvin • Sean Wheller This document is made available under a dual license strategy that includes the GNU Free Documentation License (GFDL) and the Creative Commons ShareAlike 2.0 License (CC-BY-SA). You are free to modify, extend, and improve the Ubuntu documentation source code under the terms of these licenses. All derivative works must be released under either or both of these licenses. This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE AS DESCRIBED IN THE DISCLAIMER. Copies of these licenses are available in the appendices section of this book. Online versions can be found at the following URLs: • GNU Free Documentation License [http://www.gnu.org/copyleft/fdl.html] • Attribution-ShareAlike 2.0 [http://creativecommons.org/licenses/by-sa/2.0/] Disclaimer Every effort has been made to ensure that the information compiled in this publication is accurate and correct.
    [Show full text]
  • Transport Protocols
    Transport Protocols Reading: Sec. 2.5, 5.1 – 5.2, 6.1 – 6.4 Slides by Rexford @ Princeton & Slides accompanying the Internet Lab Manual, slightly altered by M.D. Goals for Today’s Lecture • Principles underlying transport-layer services – (De)multiplexing – Reliable delivery – Flow control – Congestion control • Transport-layer protocols in the Internet – User Datagram Protocol (UDP) • Simple (unreliable) message delivery • Realized by a SOCK_DGRAM socket – Transmission Control Protocol (TCP) • Reliable bidirectional stream of bytes • Realized by a SOCK_STREAM socket 2 Transport Layer • Transport layer protocols are end-to-end protocols • They are only implemented at the end hosts HOST HOST Application Application Transport Transport Network Network Network Data Link Data Link Data Link Data Link 3 Role of Transport Layer • Application layer – Between applications (e.g., browsers and servers) – E.g., HyperText Transfer Protocol (HTTP), File Transfer Protocol (FTP), Network News Transfer Protocol (NNTP) • Transport layer – Between processes (e.g., sockets) – Relies on network layer and serves the application layer – E.g., TCP and UDP • Network layer – Between nodes (e.g., routers and hosts) – Hides details of the link technology (e.g., IP) 4 Context User User User User Application Process Process Process Process Layer TCP UDP Transport Layer ICMP IP IGMP Network Layer Hardware ARP RARP Interface Link Layer Media 5 Context To which application ? TCP header TCP data ICMP UDP TCP 1 IGMP 2 17 6 TCP ) ( IP header hdr DEST SRC Protocol type cksum IP IP data ) ( ) ( Others 0806 8035 0800 ARP RARP IP IPIPIP ) ( dest source MAC MAC Ethernet frame type data CRC ) ( 6 Port Numbers • UDP (and TCP) use port numbers to identify applications • A globally unique address at the transport layer (for both UDP and TCP) is a tuple <IP address, port number> • There are 65,535 UDP ports per host.
    [Show full text]
  • Templates, Microformats and Structured Editing Francesc Campoy Flores, Vincent Quint, Irène Vatton
    Templates, Microformats and Structured Editing Francesc Campoy Flores, Vincent Quint, Irène Vatton To cite this version: Francesc Campoy Flores, Vincent Quint, Irène Vatton. Templates, Microformats and Structured Editing. ACM Symposium on Document Engineering, Oct 2006, Amsterdam, Netherlands. pp.188- 197, 10.1145/1166160.1166211. inria-00193958 HAL Id: inria-00193958 https://hal.inria.fr/inria-00193958 Submitted on 5 Dec 2007 HAL is a multi-disciplinary open access L’archive ouverte pluridisciplinaire HAL, est archive for the deposit and dissemination of sci- destinée au dépôt et à la diffusion de documents entific research documents, whether they are pub- scientifiques de niveau recherche, publiés ou non, lished or not. The documents may come from émanant des établissements d’enseignement et de teaching and research institutions in France or recherche français ou étrangers, des laboratoires abroad, or from public or private research centers. publics ou privés. Templates, Microformats and Structured Editing Francesc Campoy Flores Vincent Quint Irene` Vatton INRIA Rhone-Alpesˆ INRIA Rhone-Alpesˆ INRIA Rhone-Alpesˆ 655 avenue de l’Europe 655 avenue de l’Europe 655 avenue de l’Europe 38334 Saint Ismier, France 38334 Saint Ismier, France 38334 Saint Ismier, France francesc.campoy- [email protected] [email protected][email protected] ABSTRACT the server side only, as a source format from which other rep- Microformats and semantic XHTML add semantics to web resentations are derived. Documents are transformed into pages while taking advantage of the existing (X)HTML in- XHTML before delivery to the client. This ensures that frastructure. This approach enables new applications that information can be presented on many different types of de- can be deployed smoothly on the web.
    [Show full text]
  • Certified Desugaring of Javascript
    Certified desugaring of Javascript JS meets JSCert Marek Materzok 1 Introduction Marek Materzok – Certified desugaring of Javascript 2 What is JSCert EcmaScript 5 formalized in Coq Verified and tested interpreter (JSRef) Interpreter extracted to OCaml Marek Materzok – Certified desugaring of Javascript 3 What is JS (S5 variant) A core calculus for EcmaScript 5, based on the call-by-value lambda calculus An embedding of ES5 into the core calculus (the desugaring function) The environment file – ES5 algorithms and built-in objects implemented in the core calculus Interpreter of the core calculus Marek Materzok – Certified desugaring of Javascript 4 Usefulness of JS Designing of type systems and program analysis tools Examples: typecheckers for Javascript (TeJaS, Strobe) Uses: ADsafety, typed jQuery, verified private browsing More info: http://www.jswebtools.org/ Marek Materzok – Certified desugaring of Javascript 5 LambdaCert: S5 married with JSCert Semantics of the S5 core calculus formalized in Coq The interpreter reimplemented in Coq Desugaring function (ES5 to S5 core) reimplemented in Coq Interpreter + desugaring extracted to OCaml Equivalence proof for the semantics and the interpreter Work in progress: proving soundness of S5 (core + desugaring + environment) with respect to JSCert Marek Materzok – Certified desugaring of Javascript 6 What’s done? A lot. What’s not (yet) done? bit-shift operators for, for-in, do-while, switch eval arguments object function object creation / defineOwnProperty / internal methods for some
    [Show full text]
  • Slidy - a Web Based Alternative to Microsoft Powerpoint
    Slidy - a web based alternative to Microsoft PowerPoint Dave Raggett W3C/Volantis [email protected] © 2006 Dave Raggett Abstract HTML Slidy is an open source Web-based alternative to Microsoft PowerPoint based upon XHTML, CSS and JavaScript, and which runs on a wide variety of browsers. I will introduce Slidy, and describe the challenges faced in developing an accessible cross platform browser-based editor for slide presentations. Slidy is available at http://www.w3.org/Talks/Tools/Slidy/ Introduction Slide presentations are a familiar part of life. In Victorian times, presenters were able to project images of glass slides and opaque objects using a device called an epidiascope. In the last century these were superseded by 35mm slides and the overhead projector. As computers and inkjet printers become more affordable, computer generated slides took over from hand drawn foils. This era came to an end with the spread of the video projector which displays slides directly from the computer. Today Microsoft PowerPoint is omnipresent. The first version was released in 1987 for the Apple Macintosh and used to produce black and white overhead transparencies. Microsoft bought the company that produced it (Forethought) and adapted it for use on Windows, and PowerPoint has been part of the Microsoft Office suite since 1990. One of the problems with PowerPoint is the difficulty of making your slides available to others. The files tend to be very large and many people are suspicious of binary email attachments. Another problem is that the format is proprietary to Microsoft so that you are dependent on one company for the software needed to produce and view the slides.
    [Show full text]
  • The A.D.E. Taxonomy of Spreadsheet Application Development
    Edith Cowan University Research Online Theses: Doctorates and Masters Theses 1992 The A.D.E. taxonomy of spreadsheet application development Maria Jean Hall Edith Cowan University Follow this and additional works at: https://ro.ecu.edu.au/theses Part of the Software Engineering Commons Recommended Citation Hall, M. J. (1992). The A.D.E. taxonomy of spreadsheet application development. https://ro.ecu.edu.au/ theses/1696 This Thesis is posted at Research Online. https://ro.ecu.edu.au/theses/1696 Edith Cowan University Copyright Warning You may print or download ONE copy of this document for the purpose of your own research or study. The University does not authorize you to copy, communicate or otherwise make available electronically to any other person any copyright material contained on this site. You are reminded of the following: Copyright owners are entitled to take legal action against persons who infringe their copyright. A reproduction of material that is protected by copyright may be a copyright infringement. Where the reproduction of such material is done without attribution of authorship, with false attribution of authorship or the authorship is treated in a derogatory manner, this may be a breach of the author’s moral rights contained in Part IX of the Copyright Act 1968 (Cth). Courts have the power to impose a wide range of civil and criminal sanctions for infringement of copyright, infringement of moral rights and other offences under the Copyright Act 1968 (Cth). Higher penalties may apply, and higher damages may be awarded, for offences and infringements involving the conversion of material into digital or electronic form.
    [Show full text]
  • Energy-Efficient Mobile Network I/O Optimization at the Application Layer
    Energy-Eicient Mobile Network I/O Optimization at the Application Layer Kemal Guner*, MD S Q Zulkar Nine*, Tevk Kosar*, M. Fatih Bulut‡ * University at Bualo (SUNY) ‡IBM Thomas J. Watson Research Center {kemalgne, mdsqzulk, tkosar}@bualo.edu, [email protected] ABSTRACT Limited battery power is becoming an increasingly crit- Mobile data trac (cellular + WiFi) will exceed PC Internet ical problem for smartphones and mobile computing, and trac by 2020. As the number of smartphone users and the many techniques have been proposed in the literature to amount of data transferred per smartphone grow exponen- overcome this at dierent layers. At the physical layer, tech- tially, limited battery power is becoming an increasingly niques were proposed to choose appropriate modulation, critical problem for mobile devices which depend on the coding, and transmission power control schemes to improve network I/O. Despite the growing body of research in power energy eciency of the mobile device [17, 19, 52, 54, 58]. At management techniques for the mobile devices at the hard- the media access control (MAC) layer, several new energy- ware layer as well as the lower layers of the networking stack, ecient MAC protocol designs were proposed [13, 39, 39, there has been little work focusing on saving energy at the 46, 63, 64, 67]. At the network layer, low-power and scal- application layer for the mobile systems during network I/O. able routing algorithms were developed [16, 53, 55, 59, 66]. In this paper, to the best of our knowledge, we are rst to pro- At the transport layer, trac shaping techniques [5] and vide an in-depth analysis of the eects of application-layer new transport protocols [5, 15, 24, 40, 77] were proposed to data transfer protocol parameters on the energy consump- exploit application-specic information and reduce power tion of mobile phones.
    [Show full text]
  • DA-683 Linux User's Manual
    DA-683 Linux User’s Manual First Edition, January 2011 www.moxa.com/product © 2011 Moxa Inc. All rights reserved. Reproduction without permission is prohibited. DA-683 Linux User’s Manual The software described in this manual is furnished under a license agreement and may be used only in accordance with the terms of that agreement. Copyright Notice Copyright ©2011 Moxa Inc. All rights reserved. Reproduction without permission is prohibited. Trademarks The MOXA logo is a registered trademark of Moxa Inc. All other trademarks or registered marks in this manual belong to their respective manufacturers. Disclaimer Information in this document is subject to change without notice and does not represent a commitment on the part of Moxa. Moxa provides this document as is, without warranty of any kind, either expressed or implied, including, but not limited to, its particular purpose. Moxa reserves the right to make improvements and/or changes to this manual, or to the products and/or the programs described in this manual, at any time. Information provided in this manual is intended to be accurate and reliable. However, Moxa assumes no responsibility for its use, or for any infringements on the rights of third parties that may result from its use. This product might include unintentional technical or typographical errors. Changes are periodically made to the information herein to correct such errors, and these changes are incorporated into new editions of the publication. Technical Support Contact Information www.moxa.com/support Moxa Americas Moxa China (Shanghai office) Toll-free: 1-888-669-2872 Toll-free: 800-820-5036 Tel: +1-714-528-6777 Tel: +86-21-5258-9955 Fax: +1-714-528-6778 Fax: +86-21-5258-5505 Moxa Europe Moxa Asia-Pacific Tel: +49-89-3 70 03 99-0 Tel: +886-2-8919-1230 Fax: +49-89-3 70 03 99-99 Fax: +886-2-8919-1231 Table of Contents 1.
    [Show full text]
  • Supported Browsers
    IBM Kenexa BrassRing on Cloud Supported Browsers Revision Date: July, 2017 Edition Notice Note: Before using this information and the product it supports, read the information in the following Notice section. This edition applies to IBM® Kenexa® BrassRing® on Cloud® Supported Browsers. Licensed Materials - Property of IBM © Copyright IBM® Corporation, 2017. US Government Users Restricted Rights – Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. ©.Copyright IBM Corporation, 2015-2017. All rights reserved 2 Notices This information was developed for products and services offered in the U.S.A and other countries. Consult your local IBM representative for information on the products and services currently available in your area. Any reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, program, or service may be used. Any functionally equivalent product, program, or service that does not infringe any IBM intellectual property right may be used instead. However, it is the user's responsibility to evaluate and verify the operation of any non-IBM product, program, or service. IBM may have patents or pending patent applications covering subject matter described in this document. The furnishing of this document does not grant you any license to these patents. You can send license inquiries, in writing, to: IBM Director of Licensing IBM Corporation North Castle Drive Armonk, NY 10504-1785 U.S.A. For license inquiries regarding double-byte (DBCS) information, contact the IBM Intellectual Property Department in your country or send inquiries, in writing, to: Intellectual Property Licensing Legal and Intellectual Property Law IBM Japan Ltd.
    [Show full text]