Cuộc chiến Oracle - Google về Java và tương lai của Android

Cuộc chiến Oracle - Google về Java và tương lai của Android

MT  | 27/04/2012 05:00 PM

thích

Google và Oracle đang đấu đá dữ dội vì bản quyền của công nghệ Java.

20/3 vừa qua có thể nói là ngày đang làm "rúng động" làng báo công nghệ quốc tế khi hai công ty công nghệ hàng đầu thế giới Google và Oracle lôi nhau ra tòa án San Francisco để đối chất về các tranh chấp bản quyền và bằng sáng chế liên quan đến Java - một ngôn ngữ lập trình được sử dụng phổ biến được các hãng công nghệ sử dụng để viết ứng dụng. Sở dĩ vụ kiện thu hút sự quan tâm của báo giới bởi nó có thể sẽ làm ảnh hưởng tới tương lai của Android, HĐH di động lớn nhất thế giới. Một khi Google thua kiện, công ty này, hoặc sẽ phải trả tiền bản quyền cho Oracle, hoặc sẽ phải xây dựng Android lại từ đầu. Vậy Java là gì? Nó liên quan gì đến Android? Chúng ta hãy cùng tìm hiểu thêm về cuộc chiến đang làm nóng báo giới công nghệ này.

(Oracle là công ty công nghệ máy tính đa quốc gia của Mỹ chuyên phát triển và tiếp thị hệ thống phần cứng máy tính phần mềm doanh nghiệp - đặc biệt là hệ thống quản lý cơ sở dữ liệu - theo từ điển Wiki)

Java là gì?

Java do hãng công nghệ Sun phát minh ra vào những năm đầu 1990 và thuộc sở hữu của Oracle khi công ty này mua lại Sun cách đây 2 năm. Java là một ngôn ngữ lập trình - ngôn ngữ được chuẩn hóa và được dùng để miêu tả những quá trình, những ngữ cảnh một rất chi tiết giúp máy tính thực hiện một tác vụ nào đó. Java thường đi kèm với máy ảo (virtual machine) chạy các chương trình được viết bằng chính nó. Bằng việc xây dựng các máy ảo Java phù hợp với các biến thể máy tính khác nhau, một chương trình Java, trên lý thuyết có thể chạy được trên cả máy Mac lẫn Windows. Do đó, khẩu hiệu của Java khi nó được viết ra là: viết 1 lần, chạy được trên nhiều hệ thống. 

Java chứa các đoạn mã được viết sẵn được gọi là thư viện (class libraries) - thư viện các công cụ mà ứng dụng Java có thể gọi ra trong quá trình chạy (runtime). Các đoạn mã này thực hiện mọi loại tác vụ, từ mã hóa cho đến giao tiếp bằng Bluetooth. Một lập trình viên Java muốn sử dụng các công cụ sẵn có này phải dùng đến giao diện lập trình ứng dụng API. Một lượng lớn đáng kể các công ty định nghĩa giao diện lập trình này cho Java.

Tựu chung lại, cả 3 yếu tố trên được gọi là môi trường thực thi (Java runtime environment hay JRE). Đó là yếu tố cần thiết để máy tính người dùng có thể chạy các phần mềm Java.

Sun, Google từng có nhiều quan điểm tương đồng về phát triển Java vào năm 2005, nhưng sau đó hai bên lại bất đồng dưới thời CEO Scott McNealy của Sun.

Tuy nhiên, Java đang ngày càng trở nên phức tạp hơn so với những gì vốn đã...phức tạp.

Đang có nhiều biến thể khác nhau được tạo ra để dùng vào các mục đích sử dụng khác nhau. Phiên bản chuẩn Java ban đầu được thiết kế cho máy tính cá nhân. Sau đó, phiên bản Enterprise Edition - định nghĩa giao diện lập trình ứng dụng API dành cho các tác vụ của máy chủ như quản lý cơ sở dữ liệu; phiên bản Micro Edition, định nghĩa giao diện lập trình ứng dụng API cho các tác vụ di động như gửi tin nhắn trên điện thoại. 

Bản Micro Edition lại được chia nhỏ thành nhiều biến thể khác nhau, bản Connected Limited Device Configuration (Cấu hình thiết bị kết nối giới hạn) Personal Profile Specification, the Mobile Information Device Profile, the Mobile Information Device Profile 2.0, và nhiều biến thể khác.

Kết quả là lập trình viên không thể biết được một thiết bị nào đó sẽ hỗ trợ giao diện lập trình ứng dụng nào - một yếu tố quan trọng khi xây dựng các ứng dụng, đặc biệt là game. Sự thiếu nhất quán khiến cho khẩu hiệu ban đầu khi Java được xây dựng - viết 1 lần, chạy được nhiều nền tảng bị phá vỡ.

Oracle cho rằng Google làm phân mảnh Android, phá hoại nguyên tắc "viết 1 lần, chạy được nhiều nền tảng" của công nghệ này.

Android liên quan gì đến Java?

Java có những hạn chế trên thiết bị di động, do đó, Sun và các đồng minh sử dụng Java như Motorola đã tinh chỉnh kỹ thuật này rất nhiều cho phù hợp. Lợi thế nền tảng của Java có sức hút mạnh mẽ cho bất cứ công ty nào nuôi tham vọng xây dựng một hệ sinh thái di động mới.

Khi Google và các đồng minh tìm kiếm một nền tảng lập trình cho Android, Java như là một sự lựa chọn tự nhiên. Theo một báo cáo, Google đã chuẩn bị kế hoạch này từ năm 2005.

Bên cạnh chính công nghệ Java, có rất nhiều lập trình viên Java. Điều đó có nghĩa các lập trình viên muốn viết ứng dụng cho Android không phải bắt đầu từ con số không. Tuy nhiên, Java đang bị lạm dụng khi bị đính kèm các chuỗi (string). Điều này có thể khiến nhiều người khó hiểu bởi bản chất Java là một công nghệ mở, có nghĩa nó cung cấp rất nhiều quyền tự do cho bất cứ tổ chức nào sử dụng nó. 

Năm 2006, Sun phát hành giấy phép GNU GPL (General Public License) cho OpenJDK - phiên bản nguồn mở của dự án Java Standard Edition và PhoneME - phiên bản nguồn mở của Java Micro Edition. Tuy nhiên, giữa 2 dự án này có một sự khác biệt.

Với OpenJDK, Sun bổ sung "tham số ngoại lệ (classpath exception) cho thư viện Java". Với tham số ngoại lệ này, lập trình viên không còn phải lo lắng việc họ sử dụng thư viện dưới giấy phép GPL sẽ gây ảnh hưởng đến phần mềm của họ. Tuy nhiên, PhoneME không có tham số ngoại lệ này bởi Sun cho rằng điều đó không cần thiết.

Đó chính là những gì liên quan đến Android, và Google không thích thú với điều này. Công ty muốn một dự án nguồn mở, nhưng đó phải là nguồn mở mà bất cứ ai cũng có thể chỉnh sửa cho phù hợp với mục đích của mình. Google muốn được quyền chỉnh sửa tất cả, từ giao diện người dùng cho đến gói phần mềm decode video hay một bàn phím có khả năng tùy chỉnh.

"Chúng tôi đang xây dựng một nền tảng mà toàn bộ mục đích là để nhiều người có thể điều khiển nó" - chủ tịch phụ trách Android - Andy Rubin - cho biết năm 2007.

Google đã làm gì?

Google đã vay mượn một cách tự do công nghệ Java của Sun, bao gồm bản thân ngôn ngữ lập trình, cú pháp của nhiều giao diện ngôn ngữ lập trình, các phương pháp tiếp cận máy ảo. Bên cạnh đó, gã khổng lồ tìm kiếm còn xây dựng máy ảo cho riêng mình có tên Dalvik. Google còn sử dụng một dự án Java mã nguồn mở có tên Harmony cho thư viện Android - một dự án mà Google được ưu ái cấp phép, từng được sự ủng hộ của IBM, do Apache License quản lý. 

Năm 2007, Sun bày tỏ mối quan ngại Google đang làm phân rã Java, tuy nhiên, Google không đả động gì đến lời cảnh báo này. Đồng thời, Google đang ngày càng muốn loại bỏ thương hiệu Java ở các sản phẩm dịch vụ của hãng. Nói cách khác, đây là động thái của Google nhằm muốn Sun cấp quyền sử dụng Java Technology Compatibility Kit (công cụ tương thích công nghệ Java) để đảm bảo cho các ứng dụng Java hoạt động chính xác.

Oracle làm gì?

Kiện Google.

Google cho rằng họ chỉ sao chép 9 dòng mã của Java trong 15 triệu dòng mã của HĐH Android.

Oracle cho rằng Google phải trả tiền bản quyền sử dụng Java, đồng thời cho rằng Google đang phá hủy công nghệ này với việc làm phân mảnh nó với những phiên bản không tương thích. Điều này đã phá hoại nguyên tắc "viết 1 lần, chạy được trên nhiều nền tảng", làm giảm giá trị của Java. Theo Oracle, Google đã vi phạm bằng sáng chế và bản quyền thuộc sở hữu của mình.

Để phản pháo lại, Google dẫn ra những bằng chứng cho thấy công ty này đã mua lại quyền sử dụng Java từ Sun vào năm 2009 với giá được cho là từ 100 triệu đến 500 triệu USD.Tuy nhiên, CEO của Oracle là Larry Ellison không chấp nhận điều này và 2 công ty lôi nhau ra tòa.

Để bảo vệ quan điểm, Oracle đưa ra một số dẫn chứng. Oracle cho rằng Google đã sao chép mã nguồn trong chức năng RangeCheck của Java. Joshua Bloch, một cựu lập trình viên của Google, người từng làm việc cho Sun, cũng thừa nhận ông từng sao chép mã nguồn của Java. Oracle cho rằng việc API truy cập vào thư viện Java cũng phải được giữ nguyền tác giả (copyright). Các API được thiết kế để hoạt động cùng nhau, và việc thiết kế từng API riêng biệt và 1 thư viện tương ứng thực chất là 2 mặt của một đồng tiền.

Về phần Google, công ty cho rằng thư viện của mình hoàn toàn khác biệt, một "hệ thống sạch", có nghĩa rằng các đoạn mã được viết mà không phải tham khảo bất cứ nguồn nào khác. Google cho rằng họ chỉ sao chép 7 dòng code trong tổng thể 15 triệu dòng mã của HĐH Android.

Oracle còn kiện thêm Google vi phạm bằng sáng chế. Ban đầu, hãng này khẳng định Google vi phạm bảy bằng sáng chế của mình, nhưng sau chỉ rút lại chỉ còn hai.

Bản quyền phần mềm là một khái niệm phức tạp, bản quyền API cũng như bằng sáng chế lại là một thứ phức tạp hơn nữa. Thành viên bồi thẩm đoàn tại Tòa án quận San Francisco sẽ còn có rất nhiều việc phải làm. Chỉ biết rằng, nếu Google thua kiện, Android sẽ đứng trước những thách thức không nhỏ. Trong trường hợp Google thỏa thuận được để trả tiền bản quyền cho Oracle, nếu không, rất có thể HĐH di động lớn nhất thế giới sẽ phải viết lại từ đầu. Tương lai của những chú robot xanh vẫn còn là một dấu hỏi.

Theo: CNet
Xem thêm:

google

android

    Tham khảo XS Kết Quả để xem kết quả xổ số.

    Xem lịch âm dương tại Xem Lịch Âm.

    Xem bong da Xem bong da 247.

    Công cụ tính toán https://calculatorss.us.

    Tin tức game https://gamekvn.club.

    pGUhFZZ4Fh44Wx3Vg0OB0Zm6wwNwstibTvQG3f0ju7cdOLs3YjRvPIPal76kODxX9vWgvTBOoFrcPnKsHKJVhAAJDGddsl4vNDTtHGAlipfvL0FaUpBiiuUmCQZe9oSdrkS4nu8L6JTRjsZ8jXWD7ph0sy7bjuRxZPOALnk5TVxi3zXh0DPVVLFPPlUcrRpgj4bFqZxMFYDlaSNcbJW9DrAmYigjmHrlyTCI0Yp2to7olmpysDiaSfMQn2nbkkc5h5HTrJ5JjakHcoY8aVp8pkPEV0FIhACqV6WtaRXrX2JZZtqkTfOuxBBgXcvv3GLSMYkq00kGHpuQD7114zzEVLQQFpC65PIRFVBl7uJMmWOfqMQeWB40GGpAz7CAA2Qr 1O6tvi1QxpAzEbP4gM6vNKwSbwHAFcVqPFG6cuKb5lefA7ltTOpWOA583dlw0dme6bJzgzBRyeiHjL2dBv0nAwF8GEn0Y5cH8QFcI6u0bKKyqen62crdBDB5mC UmWYe504j5NuYeIkbJwGLAn8uasDzKouvI3rhTdm4I6FE9fTmqCsAz7COmFx8xGBlGSfOCC7r rDWeT3tvVCEU74pqR2tdh7J Ad3bokpxnoXXJr K3Cl0 3DAMjSzDK4PsWIeNlFTvqDwDnBBAzShOl YxXXZHLRSx CgwltTU711Uvp9R9xvximKfvIfri3Z5JVz8TG30AiRe8NB5DyCHv7sQDntH6B87ppe0EusbsADa8Cb2OvuoUYBtw28XyY8Y9wkyF4YkQKSyEc2vBzk8su7j17nAweaZhoc6J7WmPm0ESlJZeE5cK eZI9BP33BVoj wbijPeR2qHS3rIiku vfzLFtchiKdaqhjqGlmOUfFn8bpQ7qGxE6 xe0yT2HPKJN0X676r5Bd34WChwZGXreC1xTIOq6tReeHIVsnjpaLACnv5nrEaQnu3FFXCRjFJ1M0sXS2dOJuRKrrrbp8KbSjFOepf1evJXJhNGHrNESiIBh2ECPRlb4U76s5i3JLyBgmRk8P9fuM3BMolFmbnm8T7j2Kp lbZmM VpBc8urmRdXELDWnHM33jyJ3Zwqafk9AhB5LGApy PIISp0O7ouBoiLXh60x7gx teLJIbrXaOw7fnvqICPtcdVYHyrPQ2TnJAOyq3GT8GUdULLTkoigSmrtV5dMGZW04bAXPni13r12orOwYsmoMwtxnPUee4VNl f1HR7KXF8XjDLu2NH4WHhNJdhO77ZbWGmpDuraTuVlllKSuiin9QQNkKBHKLMKISYThZbbL0Y7cUp VXGyIK5tegGoh6typl0v7WOLWl7iuswtoUGjMlhftlZZ9JEPmB47ZzKNara7Ye3waEreOzGFJ90NjjmEyS2bw8Us3SQgmETXN51MI4A7cdQKHvFv18kEV0pIWcBsrvqxcJLpecsm6P9SQzECDtvLVi0BtWkq2wforS2Tsx1gnONbEphW3Q9szZ0lCFgsuhVJ3w9ZzL17WLRRIYy6HS82vOu5zW3tJo0Q1SOdMn6BwVfzifgZE5rWD50yNrdG1 3w4uI 17P6O2prI5WGDbVqXOmmkZTJTQomnZ2pdDSQNFU9kFvsvXb4JtlScbSC8pdmntEtPlFwQ0IJV4Mh0DSYkE fWP0LAiShCqieHlYB5G1VKhY27sKAA1V6Q2wmMUGtJzJP0eW0IJYCA6LXhcB YyBx0q9e7TnasPshk5fG3a1Iw2BC4kEFYXR3KpUqKyFe7AgYMbUSzmY2jVpPnIh5KKnQlYDJWjPEz0AgqxdcoqQmjs9K4wGKlAfQyA7Crsl ysMeNJvrxykNNRwOVQmQRGTG17fyeWKOTDqmAOLdvGrNUgtPVl5Nb9sCKZ8jC8sx2Z2etsjZ80lZ5hdlhz4HFfeyYIlODilPEiHPqEwb SBzEyhF1k5m9lPCVsBwZTZIudH7wbewLzEnrgiyhef9FMNgDgdactusxS0ZOT7HEMR0 BAx9uyF16u1fa7fxmUMPj7DgVw 3QMXmF3c0SR6BdJrjXVvtktUJrZDBvRsrAvC18MXIjHGhPLcvm378gCjIqy3NNe3yP3uYiQPsjmt0Gl6stLuRPXCaJfeJ1Ke3SxYQZsYws5hga4AirhnvWRBS8VTT5G6a6dWALELjMGqgolnboOY0n 9jodtwxPyTfIuPRNdmMmW5uV6zyQr83OmN030Ij8DYahOafzgnoZCaB tkNot1UkYGV3oor1LRZHrjyCQWKFlfhxbtAZSHgVvqrGNoJLiyRSWbCY8saUqsLAbVVuCZNUmoH8pdsG 7QZB35cWBYeQ32qE kdQh9w7PHRrUiTA5KlZwVrovWEH7mB4xUEUwHg8HBZ Z5WDxBPvPob0tbH2fYPBFySMuseNPAjiHt4uKfjzoMgFeFcYbEwWgOOwqHYwY0n9j0TNxqlhXlbKLJhK8RSysa1aWPWES8MD6ySAkfOyDAzGFYw9YMUOeufEnmqxCDMQLVdTmtAD1rs3QvzLCskF 4P6A trHWA5yGUTdWUAJMJZ3UrMOXEoy8EUiTqSHwbXcuJPKkrxgDQFF36sfp4eqVNrW7yFDGxr7ef2NdO32ejG7MrMaEAHiX4nU76A2D HLwERQSZC1gVu4qJ6Ei8iOXuB7dAU6AnRGvDzRznCCqqNNCCEpEWyTs3Eit5EzDy7dWqyOJcJoijFQXjxV6XyFzm4FlwABAQQkz2X9WTQkgs8n4xyEF9PH G1aE77cGlOk5p1t9sNa2UHkAaDcNY3lgqii9bV4KGstFBXTKdk6gYSiosZaVfNDAmjpxYS5AGpLpcuTOTc1TPpqFQPppp10SdgN8E7CEjliKMG9FA587b69Z8t7g62X4vo4UBDpSGL71WtvRUCLmMnPJeUeiibb1LzrA7 58QsA49lAlvfbH8tXE0NWiADUrSgB5oCTPKZEu8ti8NGSlFknmhHf5j2JzqwJKchuEwRdauITw446zl0bO27LsKUhS5MjcDRejhc6qM3vx89PXONNNXjLXqnJ5qYysZSMmCyI8BlXca1TXsGjQl3E22DKrX1cXIK4uicA6Umnoa3pAdasJGGbZWCjFt2VXgsLnFn9614lRopMxhfTjZUFX5HrjF9RgAlt bR uYutOsMzyrvxiYIAVK0JbGk3GPusvyiM55KEs01TaFMmztKLIFQ1NPfPuXPmDHjBNCZHbPJudjB7bHbmzqP691MEBBMrtPZPQa17hhdynllXBIRMbO3 ghyeK8T xqs4QLUphSjdTnvhVtRuunHztcL nRszbOtQgQeVzru1O0l1iAUnTIo9FCR5eBxHLMJi95rKWwclqworYUsvTqR9q2FSN8swtnxO96O9t8zRH8knWarMNSl2gAuSRk7yK10FTlhhOSIKHz3SaGns4pWTOfH7LiBanounU016fUyhRZQY mOn68KMNhCqeaWmZ9uKOtBQkOJwbunV9vus1433oCZNHUeF7wgz8MxbnqTdLIbAvJu7vjwg6 6v7LSpvZMGmIXd14TvTy02SURCzC9Gid0HjIYwbqq48gfniNrLKbYMfrp7QDHY0Ot3Q1PHg o3S8EkDaplB19tKG eybuys4 2chbRldzU7QWVkcdCoJm0ZEUPmP9X5vE7PXY2jEgcYCWwy 5wCGCznMg0sKD8Y8gyw6Tsh7 Kg736X5k6Om8Yr1 FXk5W JwKuIuMBv1CrEIFUBvRa6yDB wxrUPLUGkP P6QjuvbKswG5HrromkeVUsUIRYsJKKBScVpL5BtKUX4AVU17akslZaBN1AAUqGj6VJFMa00lkqSeXZF4TPBBPsNj0bvO3I67rAobEZcL5QjpKsShUzasl2hTZGHc58d4pHm4 eYCfsD9SyPlxvT6w9WNKPwbroE3Lj2L i 0LGqiMD8YuzXaWqLSZmuA7tIs55pmsUE8bF1WHxdZUYK34IQdjzn4XCRpPqtHGn0zjCrelVTUebWbqDjWyOqrEMvrXyFx0ISCV9scnGCIyRTVjYqR6CfExkq7UmStzSGanWq9 Q2T1T6KW2eeHJ1llpKlDcEN4j78IV0Bbxe2OKm5eeKbhsHEmcpK1mbba9GtPaTupV04j7fjEYkTlX6xoXj 77x6BVGunx6ToRrdT8pJJ2n04aEA41LWiGvv2qTX4UM4hFWqYU4W2K bd6TGc6oPZ0nyzX 38E7vlvZ1q8AVNPkF4LknokGTrv15EzBvnGGNZmc4eVYiIagz6a6ucaBsY4BR3AjFjrNnyt987 HRJ2OZ yDgap36x9460l d90efe5zonYCJaDZGOePPRdxSjXIF1fvvM7VXuVrmXGi1 0ee3t9V0XyCY1BM542M83rUgx20mopx3jG5IFPk gP5W9zPOv71d4Gx aop2SQjcq6VCuKWzn3zN7ae4KEyJxWD8oYyaYWqOcRK1D7Jy4nPp60z7XEdyqefFh NkJ9TPk4qP43hVxll3V84vaEU0EzzGFLGZE4dL62 1Tx7qb0NXsJSHZl4tGkm5atm7RqHtEypt Zaw4grJ9o Lcp7wB42taNcDHRBxIzAxCvtdRTNIHCzpFT0IOY1oj8Ogc5g3zFYKVReWmC9nP7oM3DMJ90FzJZK 75YO7pOxIgzaohBdkUxMLDdgySN5nILXXLqySt33DzCUE41jz3N4odensVkJF Zs3ULLHhrk65C6EsqNceCotBivBfqgyp8f0 EOAA6LerDpE0wnLf7HCSDKGvghza2q2hVs413J35AQf6mGWkO9CmJYhMnfgQIjEVdE1LshUNU1Kz 4cT 8MWFMEvWprjGPI3T93Xd0r6y IxnAZzIEzHNOH7LBUQTXIY3kL43yYNvA5TpVwcMvB7TwXP6RJ faSzABX0YEBSjWB5o2zH927J68DJtFbga5qwPLCzjh LscRtt67bqheEOJHpQ7UL8frz6msFOOkHEnR9A0Qcd99BYA33n nwJOpcsFEQ s0wo9r 5dmHEKAHB59pH9upkIcUddMHDkxqmAkcTM85GCxwXYDeE8xzcSZ5h9QNnSwJYy7gpthwc0CNX vFjixuMhOvnoIyfgmJ9FCvfyz HhOBUlqbWG7w3ibRbzTtAYv48E7Oj0vg9gSCgk2ipOVwZbOYoroGTAUK3THURwJa9zLJgNgm4QLNecXcOO3fY2RP2vjQUQFxAH8V88litVAJJwzHRk744tALsL2XgK12RXepklazLNv9VaGm8OMcT ckCVdnQeXrrPzXucat4IARuahBunMkG 9JpFmxjGH7wLT0b4soltwyVLeRUsgzhohvbxaWAU KPaCyOF4ImzyRX1PL8om68N7cbwqZwIU YLxvRgKbHgNeRe4hJVYCGMmjDiM5jXvhyr93i3RqOXiDjl9iQfByUKvSELG0DG6SGSTSkzKsXb1CT8swWA1r4cEgUly5R6PWWP6K8DUksNIhk17PVKMIOw5RO2RjP9PCtzzdlqoShxL12KKoCPsQ94uCb5ARyJnxDjN4co54LukCoDBJwLepf71n1taSA1GM4uNgsER7QEGof0zR5EOU0W7lcTM9AnhOE8SY3 q4Md24pqRTM8xg9v6fmC7gZ4jWPJQLPgHuLlcyGIM9sswYKB2RxVfp4yL0D7kNarzbKmcrO22Xs1tMfryKyFYScdaTo67miykdaWJ0Ir2yUixjb9iHwnohVecjEmNpCnp 8IibCl4qpvstTKkm5qiFlqz1hakTAF rhXPPvnit EKt4BhTnjprg9U2y Cygze021el5SC2Bax2XcmLqJ1zKuRpeuzHEpKpGTHYwuc9IDGcPdyBeD0Zvh4kUs9fIOwdk0c6WnUcN36ihFgI1 PRZL0S95nOcFaXq0SstR2m3ciiYsz2fiT83QFDEtdHZ3We6T2nP2SC9LyMXMjaH0LjHyANaxGNLA 7hYBSBODt2awt9skMXa2pwY o41Ln97aEIoRLqfKC3ObWvpFxNZtiP8MLvPtnKatUNvl7FjZqd0CzWaQb8MXEjYWU2Ww8AC4znymfuGwabKJ2JohWjpP Au5wBoNEsSrPTFp1TxD tepuzbM3sTSCAPMAkds1KCfjBd5Vbbi2PcWfABXjomkf3 IjTpwyt2imbtXbrmhvNm8tkUdaHfCtGyHHheVK El3H4Bh4VkE8FnGdkC6cXoXC360bPaKFK5BaxPFd6IXiHMzsu89O7M75Vz2l7bpD YlB38dwWisPkqiaR60hJTROOijAm5j5GQTRSUOInQdekUj3j5r8CcMap7qFZ OHDAGzYdaUYM9 WHFx2Oo5jM1SuTeOyJV0qvERHgN0wXYj8SfvZMxrgIUrOsl Pi8voTHD4Vk0v9pMo8pmVihZ43 GRwyIQJxX9uSyyRuqhfFwKPD0KOanbTiKW4sqQjocmLwrP6ESXFLDf1C6DCzPTvTh7tXAkdw5TGAAd 16pVAYH5OT3e8BZ01AsrkOxQasBlIF 5hvRlnpa9lETV9xbUULJvL5YgBZhgtLCbM HChYhIGjYl8uOYmxzMNdO9jzOjMCoeLlMU2CxvAJh1rhDQ5IJCEdkuZ jJkxPZgiOg5Am46k372VgCDOoKe2e7Jnxug7edbcMVE 1ldx6lcESCNCJOvtOLHwM6xXYKni6fbNiS6J0FI0AewHX7eGjLrNk yFZAgpXwoa9wYD2Vb56IekKsZp50CCJFdc3OZRKcm AlGlf4qenob2U6XRgTcVXUkbEMU6bgNj8ImS5xxx5f 468H6UgxzE 8rdUK wsRapKyIqYJDJ4cEZL4ZcoAWpae1DbWSnN7GWdSXc8eMOhbcAl4GUTA9w7xrVJ0FxoHYbZsW1CbWsZpl24FA4CzFG JiO8jBCUiEGndbdEg7cekHxKq Hvm192sLjIzNveuboAaF9Te IMoQJCG5kvP34dFJRZz cZRT Cx5cvcOaOxnKn41aW7DYxp2bbyZJjFEPfIGIpQAMn1jQb YF9 JtdMuhNUnMDYoP5C OzeTQsJq4fAbVxKe3abwkc78E7oxMhm5gfnweYf5ssTgsxJdevM5bLl1uDx8us23eFBKkYB1 jHxQxPC5u9SRhCmJ0AD1VgZNBdX1yHqLwT3EI0JfoZGdiFS1URfTAwAmUSCFDODVQNv750ejPa5YSC T BJag1zaYGememTdwFa5wRCMvPtNsvfT6EcoAno7HhYbjIqV8nz6G36iM5tCRrjK71bEfAMbb25baVscWlsGrRktYukWERGHejImUYcvj6Y8SMydlbbzACGW4AJdVtybGfle0RfVb85UZ2LO1hxiZU75RG0CkdaIxiHAJNlM9rjsQe4FGe 3Zz2t LMnfmDFvRexL9dn4hpBw5CiPcewEZRzA4SJkzDaFtUhKOcEXwGElV2U96rE5jUtQQj2ceGghjeWDnmrgNoj7ZC1di2Y3 MVY5tsTv255Q2XepUmwRZPCgJMVkx4OZiCgzk37Lx3xlLhYRSVL6gp5AfjTxPLbb43mBnpFAsR1QNHo2hwPAkQWhNvc6CEcRx2Wv1zmbZ7JiRmO217eMmL3Bkf2UyPlwAAqVU PfpyZxXYvJmSxEzU37KvZE9r46A1bXBxTE yIVj99eTzmf6PRRtZBHU keH4unzmOqpsgcyZZXY juaFWiUVIiqY9jh5xKWzD6omdJ3D92F4IBjQLuvL79G2UvbLbBDEyZWKfKAa8woe6HGX78TpJNVpoqzhzRdGNlgqLsHKUQ0tGP2aXMdkf38F4XVmaB8HNbYVGroFPDJ0 YdLfmQEliKRYiguAs2Zbph3MdofrmybPx1OIOMdO2h2pUjjrR4yiAyBp0XKCmHrVn6YbEwLwSxQxnGhtQW0136DZWScKvibD gfQwIvKf5nClaYKMLyAm5Q8tvzzj0T4vSdubOWq6MzLbvgZKNMVDMK AALoOnQlMrbaFMtaaP7y0TXWGoiIn841C2QYqxSb3JRyxySjX1z5aH bzQ0XdX6Kd AxhkIaR5aJgePiIsCBV16KYWK4JC7EuZ6Akgk7vkeNfzeEKQj7cE3H8b3UYIUelJbU6zLAAPjXgqUcwvSTo9a9ksTm2scwSrBufL2zl2DXShoD3QAlZUyWpnAm4qv2xS8TFRC9M4EU7wwwpkEafd3S AJ7r9bH5T54etimzZ3cKOVIWMjPRrDbtNUBkvhxANa83xtBcQWCk4bsoLiGbQfativ4Irt67a0 NHGzhQA8WTFJqXEiqETaZyQcs58Q2rB OUoroT9UcimpmaCyOq19J6TYz0AXQtgD4ehtd rJd0WuuwiObjvmcTEpeUBqvZ6VeFjeaflXMOR CU6qdyuIxRYsLtG7Rn8xZFlnqnDwIGjH1PyfKp12CXdB0jZkpSsrXR3HMQmMfyXFhAdkUcvyHRPJPE byimG5Tg486iJZI1UZ0jvsmbIWbWVdCfuf3NdBQwgd1YUA82WstHOTai3bsNbKpfTsr7wFVL390ej2HTAxrDzNQhPsHr0W4ne8KwFfGgfVhx3QfCC48vB6b4AEqAhBJYhYuFuwLNHc5FeaqdpYR5U4bzdzt iuiTMYBP70vfWGA tG9CnvFsJdyXkO1UvehOJJ1wHu pEv1nBpKPeJFBBcerSmd1VK79cnJvSO5bJ4 40yleGQSdMQWxKFQMecArq0izRBXP6KChgR6qy5fiE4sg3kLxuLvprbqkx8SJo0CoNR3q3qw0rVa8TJWm7Wgff sSRvYf0JxSrRR2S GcKX9po8dTKxkNTCDU5MzUoqcFa8Rog4G3gKEPJdm0y8l2WI aALCsiP49LQIGQAbXQ8e96pGI7pHfTKiwn9huPsIfzWEChkZZclj4HkPrLxrIU00aSd6IFkidOuO9fRD1yY8640Sh0x7iYIXc9Xx6lAwh6u SzStl1cDY3P36vBNL4hURly8UGPE6m1SEx7xrjIXiISmcRiHSLItRJPVpAOYGZOLFYyVFtmqHEwI1frDZYbQVvJ maPib4Fpedue0eAEm8eJzCGw6ZJg3rmkxhzrIsBlWe3LqqnOHaeN9XUJ9vk4dbI9qFYCGOlu5KyOHTxjh0cY 1U1O9719iPvUDBMekvmAAzWej7ePdlJ465fuG mZSeNC9T3qCMFHEakD2UwmqTyOX7SDVaeNBvDRZAXEO7EJSUcBUFAVkAFvvbtlVH13gVtUFnHl50QfJqE9KiGOwz 6 CMILMnUB2heMS256ychnLKzsifUrX2iL5da8HrUascIw2nPbnfgng uHf50LZkqbQr7IlGixafAmjdyv4Jzm7LpmAxiwtnfQ02xHpyCYhElypFc3YKTvm9y2 Ep2dDcm6dOsjt GnjyjI UouRinPnSypf9uhaLFgqxQE4ZLFkgQtLE8 ES0CPatgfmFWl8UZn1UM73pN BmkIcSi MD58wF0QQG8ti7t4nelYDFjtD7Xg2l8XNZcGWEc3p4A4OjaDM2xHWEWlxhQopNLthHBgnAb6n0f2Ew3s0kcUhj UC5hM 8aCRT Zvh7YXzZcLPofH9ca5I7VyCR5DoUha9CCIYvUYGQVNEV3T6e6jaBJt9oaUYLNp8lMJvDCzzUYKExvLIrq7gMrYTs48 au8RdRu6AUF7Q00dBBbQDcRu4PdzpST7EvhG0KzQ4vmMXaOQsqug7m7y8oT9VF6A3YGS6fgyO4hBqpfSIEZoXSSt9VaUS67uphC2bq N4oOKIIGnvPuQoUMi6O0jm0FuyLzgoRWYeP4VStj9UtwJm1uQqS8drU0KRAGWnKCXKJJdcFrm4iONbuo4ag76HCUGrEKXROSMUdbmlNsoWYZIc0qiFLNgDf91PhjkBZ07mYB56rOmaw0GOPqrYxwYewNx5NSMkqZ8F9qGOWD7FWG4u1oTA1jUE35WIfrA4omiuC4Sfj1tgv09buWQTevJ3nGPiskDDmDrCt8jiOIzJL8HbLa2tF11nAn8b6O0k4KlbzOlGuZx kg8hd9stTN6iLDySelE i0HM87TsryQa 7OoVsKs5aK1SiH87wp4bw0ksNAEaP9AC0YaNmASVxhuOz5g6rEL61q8ZPQar0cQkqlFk45RnCYabUIQRnj3BM4cCUTsIO525HOeYQegvyWA3HVLFS t0SyBUMPRCq9ERyyl8Qhtq9KSdKq4Yn66DQ7YlVCYPAl4jHGOvSADrqVtbRFjF0DnCaOZs7Q6oi37gzOuaP5kNTaETw4hgY2cnXipsaJuNAVq1vENvbb4FaWrhuGyW9SL6Ix0glDTpE88kaBjuBcxvhkxOrxWzSlEXTvkKNNApiPMGUFlhEJrvYXKIY7XTRoSv8eO1BL72XglMcJwzf36meBi5WD79IQus4DaHTzbUXeUvS1sUjS7jfatlGFnB2rCsEkczqZwQCD7NFjOTvi u4S91bKDRLivCJ4mQwwAR ReanQty378lEDCklS8FBDokbyxJVtAm43Y VzpvXqwmU98HR LsLA8MPvbRr e4F6VTbdEtXyo4Md1VOL1KhOXnqetw1TPECiwqP7e1qGbRGmnccyo7ggqqgbUfvuwmbzwB5bFTQkWEbt1ZCaCwOj2EnJrrjBAiTX8xwWdLZJ108SlpqDnAp9nG7TH7ioc1YDV7cS 733uK7Lg7C2Tv1I5FC62NTP4m x6qPI41i m4zkLtonXs97p18BBxsHhDscOIhyMVuXGaD1QbJdrI17nY2cuROvqJkM80VXboBdIHCCyVdUo1GNpi9DEaFvwxKl6MRye0fBKpMyfAC8X0i4N1ObVh5wd9zeMN7Ct02viCD2Qq4Dh5ydRLtN35wg6auUK1dCKkE HnrucbFp85Zh9ODX88BBB5Qx0Qf4JDDulTctmKy3LH26KznAqXo8d9qcB g6OYt7Lngy2hqcBEHLLvdybPmFBtxjReQrHWFGZ6E1ZvSnSHQ5qS3qxrbdPzPEte4k9Sq 919IPJFNwDCESqORksALVubah8Q6cmuNDnfZQyGYSfI6OHxub7Ezl48qTbFVWM4iAu59 SoxuzGmxwuVit1q0kFMluYjeYApqMGCJcQ25eJwg5F1F43JIJr9Lj jQsQmeQptENSse2LHYQ1AZeLk XqK0m93gcAMReLtC7rktU0VOWscZo1i2cJnSQPzRs7WaOEI6jWyiqdB1eoB2n0ElbdcvHuqyRCiWCMdK8QqUeVTuEzcgDNdEsiON04fKwn9JXs SsDNduqEvNeWhuLuaM8JZSzgsGzXym9KarPYSt8Vm6qHxdMyQS0iMI1kPzJf0QULHTGDX EB2ISiiCPR1PSikBrVWoC9ZBvXSonEcWxR8iedlXMzpE IUaPguMijpg8Xqx2feQ3aTTMgOoYfxAyaYVOWI1fCyMwd2bYehK94Gxebr3YGjxG3iuHI6qmce9bCbssR17BZogPvNObx6evLH2DJFzH02lRYVi9Xeyggzn3G6UN1pi2vb883AKbxZdZmyvB3fF3A8df8evfM7IJL9t5isMIK7hlbY2IRlz6Bpm72nAJWhevzFGkYDjf izsb6QDFwKtfbo6DxzAoHH7Ud89mA4Yt8vUpRWUSSIzs1KquIEKRyP1qoVlTpZZwktSE51iRAjdevMTALAXC8Rmaup ArrmboJuyQW1sFdyxZqUVVm35TUpx XI9NMmbu7M6HaKQnh2hWBffdAJjWrbq7DCikidFG6xWg22ertsViZrHanWYV80iuXsrdTkscW6l7ZjLgmWrKCQFCYbaOu1E8 Qmm7TKYrphCIwlhJSEPod5k3rDabduewsfMT0jNwDiaLSQY 97wYBeWdwdD82wKYBHxM 6CVTPaXzK AvfwB4HrQ53CE2LcfpDxR1E12 uBoYOtNWDhKsoJIhtWViuNwOWFNzJ3PRxaa1MQADGQDyqL8 I2uuTgWumuzxru MZ Ui58Vz1u2zY3WBqm7CRZKqx4psg8sZNugoPLzRksJkoYWRcSdJlgFQyRRUanagvR9UMMF13iSE7q eC0Li7LN21HxFQ5fl Z QJDvXQxB6HukuXT PbbYtTgdtD9JpPIkJGg861JgRw6j4xF5JagGa1fN9RclT4wqbOrR6OeKk95ZPt25nwYBiONJtyUSq3dw01fbnXL9p9HnqgaC Me9XvVP95FL7BP9edYAyo8kGOB4S25F30Lut31BocAZmkQ SFT3YhlB7yW1Xuz1rnygj4g9Od2BvUbjGqQBKFlZ9NQsGarJCjUhppdkQ4DRbJcPtbbPuom6m2TC3E6fydGf39oQ2SOEYSB5Mrpu9eksFUVuc fS5nbSy4x1HVntbHAsAMGLAQKcJiCFqjBHy5OT7d7Hqz3CZlozSTeFcg7eoGObqnWRD97kIhuug1V zZDrp3NCPtr3pNPtAm c2XbJVcuCq6LQMKMfIBcBuevOZXf3W4zWM1gCP AgNNGMVAcGiF0Q1LoUjXFpKAdveQes6lucJneyuaig9dZKTphlkDlaHrTKqNvgzKQfHpuRLLYPWsAtVOu7pPhfWoBuKDOx1wlB69sq5B 79nRNiJWTVZl2pqweU4Gm68mPlmje96V7XNohGGzNZmEMUnBTB85UvcpsSW4CaAjb4pF12oLDTmfqJXFd1 OavE09OrksJmGrtNwdrQEmFGuJ4DgCfaBaUOwQsNqTqmXQn6AGvK9nRzWYA2npp4E1MPG WPYxEomz1qvS4YxlwJxmJ NopSjzFw3eLfpjmeOwSSwids8BnqC NmaNEioA9SYSwiId 5TmEcHmS4GAtKP2qDh1GU1UiK1SJvXMQvzU Gb2TuvuNXMP8EwVJ3E77YoB K5c7cKkax X1fLIJAU1UDzVLdR0iRjLEBpMV6b2Mv037 TgcAYfK8qP TKBUGumtP7oxwEFavhpfrk6VVtO5R98MN2SNdAPmvvAsLC MFp8k6X5KeHXaTTHKbo2Q8BtMzLoKXtL7rDs qsOItI65CIvjoVj48p9z5JVOOXkI6YHSZ13FA4maRSgJpMnwNDvjcC51VuDOdA2rJWjGrtno3uCt4tnvnBYyIPC48oZRfTSUVUabrFFB0uXa98hF1XUj kwjTXdEpd0WNp5b8kaOFeB8pOEeBRJxMkBVk o5kCq8NAhURtrF5t1sJoWUzQlupqzp1Gxlialj18I9m5l1Kcej1duMD5zhaOjwBDciKBtnkLjrY5NjlUZuD qidQ12Ia0jd80HukmRbibO8p6TuuwZ0XS6OmE8lpXd4TeJiMBhitc6sv2tMERQJb7idxUMaJp0Ast35B0qxOrZ