You are on page 1of 20

Chapter 1 Introduction

1.1 General Android is a software stack for mobile devices that includes an operating system, middleware and application frame work. Each layer of the stack groups together several programs that support specific operating system functions. Android's mobile operating system is based on the Linux kernel. Android is the first environment that combines the following: • • • • • • A truly open, free development platform based on Linux and open source A component-based architecture inspired by Internet mash ups. Tons of built-in services out of the box Automatic management of the application life cycle High-quality graphics and sound Portability across a wide range of current and future hardware

Android offers a fresh take on the way mobile applications and interact with Users, along with the technical underpinnings to make it possible. But the best part of Android is the Software used by android can be written by anyone who knows JAVA programming well and that makes Android , swiftly emerging and developing technology ever. 1.2 History Android was first developed by Andy Rubin, Rich Miner, Nick Sears & Chris White in United States in October, 2003. It was acquired by Google in August, 2005. And now, Android is a wholly owned subsidiary of Google Inc. Android is an open source software toolkit for mobile phones that was Created by Google and the Open Handset Alliance. It’s inside millions of Cell phones and other mobile devices, making Android a major platform for application developers. Open Handset Alliance was built from the ground-up to enable developers to create compelling mobile applications that take full advantage of all a handset has to offer and the association has now more than 73 companies in it, working for development of mobile operating services as an open handset. Some of them are LG, Samsung, HTC, Google, Linux, Intel, Sprint, Motorola, Java etc. HTC was the first company who delivered Android Operating System in their Mobile device as an OHA (Open Handset Alliance) .

1

1.3 Android Versions (Flavours) Android (1.0) B cone (1.1) Cupcake (1.5) Donut (1.6) Eclair (2.x) Froyo(2.2) Gingerbread (2.3x) Honeycomb (3.x) Ice-cream Sandwich (Expected to arrive in November, 2011)

2

For that a thorough study of android operating system and android application development is needed. Live wallpaper is a new feature It lets you replace boring static wallpaper images with everything from vibrant and pulsing music visualizations to quiet. 3 . and a few other single-fingered gestures have always been supported in Android. 1. With pinch zoom.4 Objective to study In today’s world and in near future. but it never changes. and pyrotechnics are just a few of the ideas that are possible. It looks nice. This can be used for traffic controlling system and for many more applications. Android is going to be developed as an emerging technology and so mobile devices having android operating systems can be viewed as multipurpose tools. slide shows.5.1 Multi Touch Multi-touch is simply an extension of the regular touch-screen user Interface. Before Android 2. Tap.1. drag. The biggest challenge for one is to fetch the real time data from the web to your screen. because of the popularity of the Apple iPhone. meditative ponds that respond to your touch with gentle ripples. Displaying current weather conditions. Another better way is Pinch zoom.5. or you pull them apart to make it bigger. Magic 8 Balls.0. early Android users suffered from a kind of gesture envy.5 Future Scope of Work 1.2 Live Wall Papers Regular wallpaper just sits there. you had to use a clunky zoom control with icons that you pressed to zoom in and out 1. However. using two or more fingers instead of one. you place two fingers on the screen and squeeze them together to make the item you’re viewing smaller.

Dex files are more compact and efficient than class files.). process management. and a native web browser engine (WebKit). Android Libraries. including the Dalvik Virtual Machine.Chapter 2 Architecture of Android Software Stack Android's mobile operating system is based on the Linux kernel. Next is the Android runtime. memory management. The next level up contains the Android native libraries. 2D and 3D graphics. The core Java libraries are also part of the Android runtime. an important consideration for the limited memory and battery powered devices that Android targets. MP3. Dalvik Virtual Machine and runtime. etc. Application Framework and Android application. Dalvik runs dex files. Basic Architecture is shown below : Figure 2.1 Starting at the bottom is the Linux Kernel. which are coverted at compile time from standard classand jar files. the SQL database (SQLite). H. Media codecs (MPEG-4. but you’ll be calling them through Java interfaces. They are written in 4 . Android contains a layered architecture with five layers: Kernel. In this layer you can find the Surface Manager (for compositing windows). Android uses Linux for its device drivers.264. Basic Architecture of Android stack is shown below. They are all written in C/C++ internally. and networking.

The Android operating system is used on smartphones. Parts of this toolkit are provided by Google. and Google TV uses a special x86 version of Android. netbooks. the applications that Google writes have to go through the same public API that you use. and other devices The main hardware platform for Android is the ARM architecture. Android provides a substantial subset of the Java 5 Standard Edition packages. One of the unique and powerful qualities of Android is that all applications have a level playing field. which manages the life cycle of applications and a common “back-stack” for user navigation. 5 . Here. Most of the code will live here. That is. The next level up is the Application Framework layer. alongside built-in applications such as the Phone and Web Browser. the top layer is the Applications layer. Finally. I/O. and parts are extensions or services that you write. including Collections.Java. There is support for x86 from the Android-x86 project. You can even tell Android to make your application replace the standard applications if you like. and so forth. Google TV. Further we will discuss about Memory management & Process Management in android in details. as is everything above this layer. The most important component of the framework is the Activity Manager. tablets.

One cannot exit from any application. processes cannot be quit. power management software and several hardware drivers Basically Android Kernel performs these tasks:     Memory Management Process Management I/O handling / Drivers Networking The two very important tasks Memory Management and Process Management is discussed here. which stops and kills processes as necessary to manage resources. Google used the Linux version 2. In android. The state of the current running activity will be saved to the system process. The YouTube app starts. Because. Throughout the termination of the app process we get more memory resources and can start the new activity (process). Then you start some more apps. From the Browser there is a video link for YouTube.1 Memory Management Android memory management is a little unusual.Chapter 3 Detailed Study of Android Kernel The base of the stack is the kernel. Android uses its own runtime and Dalvik Virtual Machine to manage application memory. which includes Android's memory management programs. 3.6 OS to build Android's kernel. An another effect of the LRU is. That’s the reason why Android doesn’t need a swap file and users must not close applications. Linux keeps an LRU (last recently used) list and starts killing the oldest unneeded process if memory needed. Android Kernel ensures application responsiveness by stopping and killing processes as necessary to free resources for high priority applications. The browser will be opened. Each Android application runs in a separate process within its own Dalvik instance. that the user can go backwards. For sample: You read a mail and click a link. the memory management detects automatically if the free memory is to “less” and terminates old process automatically. relinquishing all responsibility for memory and process management to the Android run time. Then the you tube video is 6 . security settings.

These are the processes Android is trying to keep responsive by reclaiming resources. that the “closed apps” while they are running in background doesn’t need any CPU time and also so no battery power. As the name suggests. relinquishing all responsibility for memory and process management to the Android run time. 3. the process that has been at a lower priority longest will be killed first. But yes.over you can go back with the backward buttons and you are really fast in your mail application back.1 Active Processes Active (foreground) processes are those hosting applications with components currently interacting with the user. Each Android application runs in a separate process within its own Dalvik instance.comes into the picture. . Technically. Hierarchy of Processes according to their priority is given below. but they aren’t in the foreground or responding to user events. visible Activities are visible. which stops and kills processes as necessary to manage resources. When both have the same priority. Visible Processes Visible.2 Process Management This is needed when two applications with the same priority. The advantage is. the secondary application will have at least as high a priority as the application it supports. Process priority is also affected by interprocess dependencies. they need memory resources. if an application has a dependency on a Service or Content Provider supplied by a second application. There are generally very few of these processes. There are 7 . Figure 3. but inactive processes are those hosting “visible” Activities. and they will be killed only as a last resort. This happens when an Activity is only partially obscured (by a non-full-screen or transparent Activity). All Android applications will remain running and in memory until the system needs its resources for other applications.

The Android OS does not work like a desktop operating system. like Windows. You might recognize Apache as the popular open source Web server. it's very important. The OS itself automatically removes programs from memory as memory is needed. Experienced Java developers can create applications right away with this familiar package. Android maintains this cache to improve the start-up time of applications when they’re re-launched. they receive a slightly lower priority than visible Activities. and they’ll only be killed in extreme circumstances to allow active processes to continue. Because Services don’t interact directly with the user. Classes in this package are used by sockets and connections provided in other Java packages. They're also used for interacting with local files (a frequent occurrence when interacting with the network). or Ubuntu Linux. Handy for network communications between two Java language-based end points. Mac OS X. Contains classes that represent buffers of specific data types. Background Processes Processes hosting Activities that aren’t visible and that don’t have any Services that have been started are considered background processes.apache. java. Services support ongoing processing that should continue without a visible interface. Empty Processes To improve overall system performance. This is the multipurpose networking resource. Internet Protocol. this is not the case.tern to obtain resources for foreground processes. On Android.net Provides networking-related classes. These processes are routinely killed as required. 3. the user is responsible for closing programs in order to keep a reasonable amount of memory available.* 8 . The OS may also preload applications into memory which it thinks might soon be needed.3 Networking in Android The table shows some networking-related packages in the Android SDK with their activities.io java.generally very few visible processes. Though not explicitly networking. and generic HTTP handling. There will generally be a large number of background processes that Android will kill using a last-seen-first-killed pat. On a desktop OS. Started Service Processes Processes hosting Services that have been started. Android often retains applications in memory after they have reached the end of their lifetimes.nio org. Represents a number of packages that provide fine control and functions for HTTP communications. including stream and datagram sockets. java.

Although porting to a new CPU is not too difficult. 9 . This package includes the URI class. android.wifi android. For that Linux Kernel must be ported along with necessary board support components like device drivers. Table 3.net. Contains classes for managing all aspects of WiFi (802. as other processors are prevalent in certain markets.http android. Not all devices are equipped with WiFi capability. Contains classes for manipulating SSL certificates. which is used frequently in Android application development beyond traditional networking.net.cdma.* classes. such as CDMA.net. an additional package will likely be introduced to provide similar functions on non-GSM networks.4 I/O Handling and drivers At the highest level. ensuring optimal operation of the entire Android software stack requires extensive work.gsm Contains classes required for managing and sending SMS (text) messages. Android Kernel supports these drivers: Display Driver : Manages screen specifications Camera Driver : Manages Camera activity Flash Memory Driver : Manages Mass Storage IPC driver : Thread based communication manager This is how Android Kernel works.net Contains additional network access sockets beyond the core java.android.telephony. there is a need to port Android to devices which are not ARM-based. For now. Over time.1 3.telephony. particularly as Android makes headway in the "flipphone" strata of cell phones from manufacturers like Motorola and LG.11 wireless Ethernet) on the Android platform. or something like android.

Instead of drawing directly to the screen buffer. • Media codecs: Android can play video and record and play back audio in a variety of formats including AAC. you can write and deploy your own native libraries using the Native Development Toolkit (NDK). • 2D and 3D graphics: Two. Apple’s Safari browser. AVC (H.Chapter 4 Detailed Study of Android Libraries Native Libraries The next layer above the kernel contains the Android native libraries. This lets the system create all sorts of interesting effects such as see-through windows and fancy transitions.263. and Nokia’s S60 platform. You can use this for persistent storage in your application. Android uses the WebKit library.2 the same database used in Firefox and the Apple iPhone.264). • Browser engine: For the fast display of HTML content. and preinstalled by the phone vendor. • SQL database: Android includes the lightweight SQLite database engine. compiled for the particular hardware architecture used by the phone. H. but it’s much simpler. They exist only to be called by higher-level programs. the Apple iPhone.4 This is the same engine used in the Google Chrome browser. Starting in Android 1. Some of the most important native libraries include the following: • Surface Manager: Android uses a compositing window manager similar to Vista or Compiz.5. 10 . MP3. and MPEG-4.and three-dimensional elements can be combined in a single user interface with Android. These libraries are not applications that stand by themselves. The library will use 3D hardware if the device has it or a fast software renderer if it doesn’t. These shared libraries are all written in C or C++. your drawing commands go into off-screen bitmaps that are then combined with other bitmaps to form the display the user sees.

Mobile Maps provides developers with a simple way of adding map functionality to your mobile phone applications. It also includes access Mobile Maps to the map data itself. By using multiple networks. 11 . It enables you to serve ads in your AdWhirl app from any number of ad networks as well as your own house ads. from either TeleAtlas or OpenStreetMap depending on which data suits your application needs. open source tool that helps you make more money from your iPhone or Android app. size. and modular design. LGPL game engine for the Android platform that will push to streamline and standardize Android development for AGE games with a focus on performance.1 And many more are available in Android Market for developers.Some Examples of Android Library Tools : AdWhirl is a free. Table 4. you can determine which perform best for you and optimize accordingly to maximize your revenue and fill all your inventory AGE is an open source.

print. One of the key elements of Android is the Dalvik virtual machine. Rather than use a traditional Java virtual machine (VM) such as Java ME (Java Mobile Edition). The Dalvik VM uses the device’s underlying Linux kernel to handle low-level functionality including security. and. stack-based machines must use instructions to load data on the stack and manipulate that data. and process and memory management. thus. All Android hardware and system service access is managed using Dalvik as a middle tier. a format optimized to ensure minimal memory foot. The Dalvik VM executes Dalvik executable files. require more instructions than register machines to implement the same high level code. 12 . The relative merits of stack machines versus register-based approaches : Generally. developers have an abstraction layer that ensures they never have to worry about a particular hardware implementation. including the Dalvik virtual machine and the core Java libraries.dex executables are created by transforming Java language compiled classes using the tools supplied within the SDK. The Dalvik Virtual Machine Dalvik is a register-based virtual machine that’s been optimized to ensure that a device can run multiple instances efficiently. The . threading. It relies on the Linux kernel for threading and low-level memory management. Android uses its own custom VM designed to ensure that multiple instances run efficiently on a single device. By using a VM to host application execution. but the instructions in a register machine must encode the source and destination registers and.Chapter 5 Introduction to Dalvik Virtual Machine Android Runtime also sitting on top of the kernel is the Android runtime.

class files. Duplicate strings and other constants used in multiple class files are included only once in the . tend to be larger. A tool called dx is used to convert some (but not all) Java . Local variables must be copied to or from the operand stack by separate instructions. Multiple classes are included in a single .class files into the . Dalvik instead uses its own 16-bit instruction set that works directly on local variables.dex format. for example. The Dalvik executables may be modified again when installed onto a mobile device. Dalvik has been designed so that a device can run multiple instances of the VM efficiently.dex file is typically a few percent smaller in size than a compressed . Dalvik has some specific characteristics that differentiate it from other standard VMs:   The VM was slimmed down to use less space The constant pool has been modified to use only 32-bit indexes to simplify the interpreter Standard Java bytecode executes 8-bit stack instructions. Dalvik has a just-in-time compiler. This lowers Dalvik's instruction count and raises its interpreter speed. The local variable is commonly picked by a 4-bit 'virtual register' field.dex file. An uncompressed .jar (Java Archive) derived from the same . simple data structures and function libraries may be linked inline. Java byte code is also converted into an alternative instruction set used by the Dalvik VM.dex output to conserve space.2. and empty class objects may be short-circuited. Being optimized for low memory requirements. As of Android 2. 13 . byte order may be swapped in certain data.  Moreover. In order to gain further optimizations.therefore. This difference is primarily of importance to VM interpreters for which opcode dispatch tends to be expensive along with other factors similarly relevant to just-in-time compilation.

Life Cycles : During its lifetime.1 Application Framework Sitting above the native libraries and runtime. The most important parts of the framework are as follows: Activity Manager: This controls the life cycle of applications and maintains a common “backstack” for user navigation. but you can also extend it with your own components as needed. as shown in Figure 6.1 : Figure 6. you’ll find the Application Framework layer. each activity of an Android program can be in one of several states.Chapter6 Application Framework and Android Application 6. This layer provides the high-level building blocks you will use to create your applications.1 14 . The framework comes preinstalled with Android.

• onRestoreInstanceState(Bundle): This is called when the activity is being reinitialized from a state previously saved by the onSaveInstanceState( ) method. onCreate( ) takes one parameter that is either null or some state information previously saved by the onSaveInstanceState() method. such as a database record being edited. onStop( ) may never be called (the system may simply terminate your process). If memory is tight. The default implementation restores the state of your user interface Building Blocks The most important ones are activities.• onCreate(Bundle): This is called when the activity first starts up. You can use it to perform one-time initialization such as creating the user interface. • onStop( ): This is called when your activity is no longer visible to the user and it won’t be needed for a while. onDestroy( ) may never be called (the system may simply terminate your process). each activity is responsible for saving its own state so that it can be restored later as part of the application life cycle. • onResume( ): This is called when your activity can start interacting with the user. usually because another activity has been launched in front of it.services. This is where you should save your program’s persistent state. it indicates your activity is being redisplayed to the user from a stopped state. such as a cursor position within a text field. • onPause( ): This runs when the activity is about to go into the background. • onSaveInstanceState(Bundle): Android will call this method to allow the activity to save per-instance state. • onDestroy( ): This is called right before your activity is destroyed. THE BIG • onRestart( ): If this method is called. and content providers : Activities : An activity is a user interface screen. This is a good place to start animations and music. • onStart( ): This indicates the activity is about to be displayed to the user. If memory is tight. Usually you won’t need to override it because the default implementation saves the state for all your user interface controls automatically. Applications can define one or more activities to handle different phases of the program. An intent : 15 . intents.

” “phone home. and XML files that describe screen layouts should go in a directory starting with res/layout. This is useful for internationalization and for supporting multiple device types. For example.” or “open the pod bay doors. just about everything goes through intents. such as “pick a photo. 16 . 6. All the information there—names. you can invoke that intent. Google provides a content provider for contacts. Content Providers : A content provider is a set of data wrapped up in a custom API to read and write it. and so forth—can be shared by any application that wants to use it. You can add suffixes for particular languages. Service : A service is a task that runs in the background without the user’s direct interaction. but you want it to keep playing even when the user has moved on to a different program. another activity may bind to that service and tell it to switch tracks or stop playing. or other small piece of Non code information that your program needs. This is the best way to share global data between applications. similar to a Unix daemon. consider a music player. they’ll get the option to use your program instead of the standard one.” If your application needs to send mail. You will create and store your resources in the res directory inside your project.” In Android. PNG and JPG format bitmaps should go in a directory starting with res/drawable. so you have plenty of opportunities to replace or reuse components. there is intent for “send an email. The music may be started by an activity. For example. you can register an activity to handle that intent and replace the standard mail program. For example. So. screen orientations. Later.2 Applications and Widgets : The highest layer in the Android architecture diagram is the Applications and Widgets layer. addresses. along with convenient APIs to access them. For example. Using Resources : A resource is a localized text string. bitmap.It is a mechanism for describing a specific action. the code that does the actual playing should be in a service. phone numbers. The Android resource compiler (aapt) processes resources according to which subfolder they are in and the format of the file. The next time somebody tries to send an email. blissfully unaware of all the action going on below the waterline. At build time all your resources get compiled into your application. Android comes with many services built in. End users will see only these programs. Think of this as the tip of the Android iceberg. and more. pixel densities. Or if you’re writing a new email application.

the user will be able to download new programs to run on their phone. it will come prepackaged with a number of standard system applications. operate only in a small rectangle of the Home screen application.Applications are programs that can take over the whole screen and interact with the user. 17 . When someone buys an Android phone. That’s where All Android Consumers come in. widgets (which are sometimes called gadgets). including the following: • • • • • Phone dialer Email Contacts Web browser Android Market Using the Android Market. On the other hand.

Lifestyle . so one can easily make new applications. Android Operating System has a layered architecture. Social . Conclusion and Future Scope 7. Android has emerged as the best open source applications provider all across the world. 7. There are many challenges with the wider deployment of Android. it uses the Core Java Libraries and classes from the packages of Java Development Kit. but also for tablets. Android is Open Handset Alliance and Being an open source. Shopping . Android uses its own Virtual Machine. For handling processes. Productivity and Transportation. to provide the benefits of Memory Management.1 Summary Android can be used as a perfect operating system. which was introduced for mobile handsets. Networking and Device Drivers handling. using the ones that already exist. Books. desktops . a new standard of expertise and skill. All the source codes written for any application is available for free. This is why android covers half of the market of the world wide mobile business There is a vast development of Android applications and even major developments are expected in fields like. Entertainment. Communication. laptops and other Google devices. not only for mobile devices. like chrome book or net book. Android uses Linux Kernel. Health and Fitness. Dalvik Virtual Machine. Android Application Framework gives the detailed information on how an Android application initiates and how it can be carried out further.2 Conclusions Android is a disruptive technology. Android offers its developers. Android applications are written in Java language and based on the concept of pure Object Oriented Programming so. one must have these two concepts clear in his mind.Chapter 7 Summary . which allows the beginners to learn the basic OS concepts easily. but has much wider potential. Business. Finance. but various companies are committed for supporting developers. 18 . Process Management. Android applications are widely famous amongst the mobile markets. which has its own merits over the conventional register based methods. So.

7. as this permits optimization of power consumption. while Android (or Linux) provides other functionality. Each type of OS may thus be used optimally: RTOS * Hard real time * Optimal on the data plane * Certified software stack Non-real time OS (Android/Linux) * User application framework * Massive middleware offering (ecosystem) * User interface Running multiple operating systems can be facilitated in a number of ways. Steps can be taken to make such an OS deterministic. we can consider developing android as an embedded system. This approach is complex and can have performance limitations. Virtualization may be achieved using a hypervisor. as demands for high functionality and lower power consumption are reconciled. Android. giving each one apparent total control of the processor. which divides CPU time between the operating systems in a controlled way. Java Mobile Edition. but this approach has severe limitations. So. The use of multiple CPUs (cores on a chip or chips on a board) is increasingly attractive to system designers. and drivers. A better solution is to use a true. It is likely to have lower than required performance. but may be attractive if legacy hardware is deployed. is not real time. on each CPU. Linux Mobile (LiMo). There are already many mobile platforms on the market today. iPhone. BlackBerry. etc. Windows Mobile. one or more CPUs may be running Android/Linux and one or more others might run an RTOS. as appropriate for the required functionality. This provides the opportunity to simply run a different OS. to perform the real time activity for the system. like Linux.3 The future scope As the future scope of Android Applications. 19 . The use of multiple cores along with multiple operating systems will become increasingly common. may be incompatible with the needs of a real-time application. including Symbian. and more but Android is the most developing platform because of this qualities. real-time operating system.

20 .

94:75747...55..439039574.9.250 9070839039147 803/.088902   439039!74.0 .9.4:7 7084:7.5 47490782.08..9:..55.3-08.420892. 3002.92.250 .302.943 8:.943..9 %03/74/ 7084:7.0809.9.9-92. .3807.943 4:.0...3/.2 %03099208420-4/9708 94803/.790/-.088087084:7.08.08-:93 .7-3..0243 470../ ..9439070 3.9419010   470.4250/3944:7.70.4/031472././4478 33/74/ :89 .....0793408974:390398 844:.97.943 82.55.04770:80.-4:90.425430398   470.55...550/:53.3/9099489.:8942!9470.80941/.08.55.9438  470.20.2300/8 9-:/920.97:38390-.59 574.994.9439.9/40890. 90 09904594394:804:75747.2.947 89..-089.9....3/84 1479 .08  7084:7./078  .0/9098973 -92.9439.94738/04:75740./70.704-..948.34907 .43.943.4/09.03039 !894.50.3/7909 %8890-089.9.907 .439.030390:807.850.943 %88:801:147 39073.98  9031472.3/705.7/2.7939708.2 $4 90 ..0.23890. 4:.42507 .&3/..703.-3/949..33.4./07147.939039 ...939039  714: 70793./4190 89.208 .0  807...438/07.3/901472..5747. 14:7.0503941455479:3908 94705.3/09..302.384:/-03.250 440574.794.9.3/ 894704:77084:7.3.3/!1472./11070395747.5884:/43.09508 4:.. 5.08390708/70.8 5.39994005 5.7.3708907.3..9.1..-09003.89..3  3/74/.30.9807.90..70/-.47/394.7/430   $07.409.943 300/894803/2.807.2:8.439.3/.041 43.5494  5430420 47 45039054/-...74:3/94:990:807 8/70.3/1478:5547932:950/0.9 3907.382147/08.3./078.39894:809   &83#084:7.98.250 !.07 %02:8.5.824.09089.439039574..//708808 54303:2-078 .8:-14/0790 .0/4394.84789455.9 -:94:./08.

7003.9/08./70.7939708./7.94789..3/1089.-0 .7-08.4:98 84:/43.

.//8:1108 1475..3/2470    55.28 -881::3.7.9438 50/038908 .08 8.289055.9:70/.4:9 4:.9434343-0490.7..07 %34198.0-07  3/:80788004390805747.90730    .3.7041.3//098  %0089.7.9438...8909541903/74/.700347039.3//098.90 .3:.90..79.073903/74/.9438 .:.

709 90:807-0.4205705.55.0/... W439.943   038420430-:8.55...55.3/.39.709  &83903/74/.7003..90433.9438 3..9438.4203                                        .7/88902..7003..0790408.98 W0--74807 W3/74/.9.7084209208 .:/3901443  W!430/.9.0/9 ./098 4507.289.-094/434.9 80703/74/438:2078..04.3:2-074189.3/ 3907..82.70.705747.33/74/5430 9./305747.3/ /098 .07 W2.304190420 8.28 947:3439075430 %.9990:807  3904907.

9438.8.07...05980.47 /0..3-0:80/.70050.-7.02039 09473.:843.708907-.770/4:91:7907   3/74/.-01471700 84430.55.82:.3089.3450384:7.5907 $:22.08  -:9.3/3   3/74/.045078 .344 ..70/01.9.9.3..450    $:22.7 43.55.93$8902.3.3/4907440/0...3/3574.802070/.030.0841.0.943434.'79:.9438574..24:8..0308990/07/0542039413/74/ -:9...-098 /089458 .078.3/809.9437.3/0.03943.9:70 .422990/1478:554793/0.89843207984.0/14724-0...30 .943    43.43.3./090-030198410247.425..3.33/74/ .709419047//024-0-:83088  %0708.908..9438.3.890-089450384:7...05941 5:70 -0.   .3-0...088.32039 3.7390-...09080 94.9438 :839043089.:8438  3/74/8.73823/   47.9438.80/4390..59458.55.  %070..2047.90/310/80 448 :83088 422:3..090.8 2.0.8.30.385479.3..4.43.7  3/74/../089   3/74/ 507.708.0..0.3/:9:70$.4890 -033078940..94339.89/0.3/0. $...43.04520398.9 70390/!747.7098 3/74/ .243899024-02.9.078.9..0..8.80/ 2094/8   3/74/55.0452039413/74/.70.43.94507..9438.3/8 90 84:7.308.3/49.3/%7.841479.74:8 .55.02039  !74.7.0  3/74/41107898/0..141902.4/0879903147.0598.3:.74889047/  %88.55.702..943  39079.9388902 3494314724-0/0.3/-.8   3/74/:8083:0730 94574.50710.08808 3/74/:8089843'79:.032.30 .0/31472.88081742905.3/8098  -:9.0890/09..70799033.223849:80890470..90.08 0.  !74/:.3/ . ./07.04520399 $4 4302:89./87:59..7/410507980..83974/:.70.3/..070/.55.0 10890 0..045078     .55.0790....3/74/.3/93088 $4553 $4.0./07549039.7420 -4447309-44 3/74/8 503..3/03.

.3//7.70..302-0//0/88902 %0:80412:950..920 $9058...9:8-0:80/4592.-03.7089.9-0990 300/841.0 .8.3/74/ ..55.03942.880.450  8901:9:708. %01:9:708.83.0453.078 09.9. 43 70.70.920 $ 3/74/.91479088902 03/74/ 473: 574.3706:70/5071472. #% $ .97:0 70.4203.943.4708.95041 $2. 9204507.3/81471:3.3/4075407...438:25943.4392:9504507.3-09.425..07029.5574. 2.9 .0407 9.438/07/0.450413/74/55.9438 0.9 .4390/.7070.9438 98094.7/70.9. 920.920  592.8/02..0/   3/74/ 03: 834970.08:.943.3 $ /09072389.5.943  -0990784:943894:80.3.9388902 9450714729070..30 07910/8419.3./084907 1:3.43. -:998.42243 . 920.93 889028-0.

-07:333 3/74/..557457.94317...8../.507.9014790 706:70/1:3.0/:83.90/3.0.88.93889028.2047 .9.488902  &80739071.997.997.55.-0.30.55.010.-0. .9432..943415407 .439740/.8985072984592.439744190574.3/..029..847 .02//0.7/ 83.943..3.708/0540/  %0:80412:950!&8 .3-01..70.7039 949.../0890455479:39948257:3.547.9.0 5071472.9438 -:92..9 430.4250..83 .430.70411073 0.938890283.5574.470843./1107039 $ ..-4..8  '79:..9.3:  &807.438:25943   %8574.5843.09488902/083078 ../08!&920 -09003904507.7/..08847 %8.8.!& $4 430472470!&82.3:2-0741.0  #:3332:9504507.3.

.3/2470-:93/74/8902489/0..324-05.3#% $    %070.70994/./2.:8041986:.4-0/943  3:4-0 4 .077 .3/43047247049078297:3...3 !430 3/484-0 .91472843902. 3.04535.91472 -0.908     .3:.70.70.:/3 $2-.

     .