From: Subject: Prac 3 - AVR Assembly Language Programming Date: Thu, 2 Aug 2007 11:31:26 +1000 MIME-Version: 1.0 Content-Type: multipart/related; type="text/html"; boundary="----=_NextPart_000_005F_01C7D4F8.A96E3B20" X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3138 This is a multi-part message in MIME format. ------=_NextPart_000_005F_01C7D4F8.A96E3B20 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.itee.uq.edu.au/~elec2002/pracs/prac_3/index.html Prac 3 - AVR Assembly Language Programming

ELEC2002 - Prac 3

AVR Assembly Language Programming

Updated - 24 August, 2006 Author: Len Payne, modified by Peter Sutton = and Peter Waldeck=20

Goal


See the following topics:=20

Back to = Lab=20 Experiment Index=20


Preparation

  1. Bit Reversal

    Write an assembly language program for the AVR8515 Project Board to =

    • Input 8 bits of data from the Port C pins.=20
    • Invert the data.=20
    • Output the result to Port B.

    The skeleton code for this program is provided in pra= c3-1.asm.=20 Replace the lines ";<-YOUR CODE=20 HERE->" with your code.=20

    The following IO registers will be used:=20

    DDRB=20 Port B Data Direction Register=20
    PORTB=20 Port B Data Register=20
    DDRC=20 Port C Data Direction Register=20
    PINC=20 Port C Input Pins Address

  2. Bit Recognition

    Write an assembly language program for the AVR8515 Project Board to =

    • Input 8 bits of data from the Port C pins.=20
    • Determine the position of the bit that is set to 1.=20
    • Output the result as a decimal number to Port B.

    Only a single bit should be set to 1. The decimal number output to = Port B=20 will be in the range of 0 to 7. For example, if bit 6 of the input = data is set=20 to 1, then $06 (00000110 in binary) is output to Port B. If more than = one bit=20 is set or no bits are set then output $FF (i.e. all ones) to Port B.=20

    The following flowchart illustrates an algorithm for solving this = problem.=20 This algorithm compares the value read in from port C with values = 0x80, 0x40,=20 0x20, 0x10, 0x08, 0x04, 0x02, 0x01 (i.e. all the 8-bit patterns with = only one=20 bit set). The bitpos counter counts down from 7 to 0 and will be the = number we=20 output if we find a pattern that matches. If no pattern matches when = we reach=20 the end then we output all ones to port B.

     

    The skeleton code for this program is provided in pra= c3-2.asm.=20 Replace the lines ";<-YOUR CODE=20 HERE->" with your code.=20

    The following IO registers will be used:=20

    DDRB=20 Port B Data Direction Register=20
    PORTB=20 Port B Data Register=20
    DDRC=20 Port C Data Direction Register=20
    PINC=20 Port C Input Pins Address

  3. Bit Recognition - only when flagged

    Write an assembly language program for the AVR8515 Project Board to = carry=20 out the following steps only when a pushbutton connected to the PORTD2 = (i.e.=20 bit 2 of port D) input is set to 0.=20

    • Input 8 bits of data from the Port C pins.=20
    • Determine the position of the bit that is set to 1.=20
    • Output the result as a decimal number to Port B.

    The skeleton code for this program is provided in pra= c3-3.asm.=20 Replace the lines ";<-YOUR CODE=20 HERE->" with your code. Much of this code will be the = same as=20 for part 2 above.

    The following IO registers will be needed:=20

    DDRB=20 Port B Data Direction Register=20
    PORTB=20 Port B Data Register=20
    DDRC=20 Port C Data Direction Register=20
    PINC=20 Port C Input Pins Address=20
    DDRD=20 Port D Data Direction Register
    PIND Port D Input Pins Address

Back=20 to Contents=20


Procedure

  1. Bit Reversal

    Assemble the program that you have written and and program it into = the=20 device on the AVR8515 Project Board.=20

    With your program in the device on the project board, carry out the = following steps:=20

    1. When using the Grey-Box power supply (47-311):=20
      1. Switch off the power supply to the project board and = logic=20 workstation.
    2. Connect wires from the eight PORT B pins on the project board to = the=20 LEDs on the logic workstation.=20

    3. Connect wires from the eight PORT C pins on the project board to = the=20 toggle switches on the logic workstation.=20

    4. Connect a wire from the GND pin on the project board to a GND = pin on the=20 logic workstation.=20

    5. When using the Grey-Box power supply (47-311):=20
      1. Switch on the power supply to the project board and logic = workstation.=20
    6. Press the red reset button on the project board.=20

    7. Set various values on the switches and check that the complement = of=20 these values is indeed shown on the LEDs.
       

  2. Bit Recognition

    Assemble the program that you have written and and program it into = the=20 device on the AVR8515 Project Board.=20

    Use the same wiring connections for this program as you did for the = Bit=20 Reversal program except use the 7-segment displays instead of the = LEDs for=20 PORT B. Carry out the following steps:=20

    • Set various values on the switches and check that the values = shown on=20 the 7-segment displays are correct.
       

  3. Bit Recognition - only when flagged

    Assemble the program that you have written and and program it into = the=20 device on the AVR8515 Project Board.=20

    Use the same wiring connections for this program as you did for the = "Bit=20 Recognition" program. Carry out the following steps:=20

    1. When using the Grey-Box power supply (47-311):=20
      1. Switch off the power supply to the project board and = logic=20 workstation.

    2. Connect a wire from the Port D2 pin on the project board to a = pushbutton=20 on the logic workstation.=20

    3. When using the Grey-Box power supply (47-311):=20
      1. Switch on the power supply to the project board and logic = workstation.=20
    4. Press the red reset button on the project board.=20

    5. Repeatedly, set a value on the switches, press and release the=20 pushbutton and check that the value shown on the LEDs is correct. = The value=20 on the LEDs should only change when the pushbutton value is 0 - = never when=20 the pushbutton value is 1.=20

Back=20 to Contents=20


Equipment

Back=20 to Contents=20


References

Back=20 to Contents=20


------=_NextPart_000_005F_01C7D4F8.A96E3B20 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.itee.uq.edu.au/~elec2002/pracs/prac_3/flowchart.gif R0lGODlhEgK3ArMAAAAAAE1NTWhoaHx8fIyMjJqamqenp7Kysr29vcfHx9DQ0NnZ2eHh4enp6fDw 8P///yH5BAAAAAAALAAAAAASArcCQAT+8MlJq7046827/2AojmRpnmiqrmzrvnAszy9A3yBg43zv /8CgcEi87FyMgG4JCDgkulG0Vqxar9isdpuL6Z6U6fQxdoiPZHRLzW273/C4fMOes+r2vH7P73v9 dHiAg4SFhoc4goiLjI2Oj0CKkJOUlZaXFpKYm5ydnnNjn6KjpJqkp4ymqKsuqkGhHbAcsigCAAVg DQMABlCuRpqwBgADKrSgrMk8vz9joWe+E2cLDw67O9APStQMTRLDvQ8JxBfDA9TVwwTRvtTWU+AP 3dg7uwnAGuYSu+HZ7GPxxJFLs4WZsoMiDCJc2EYhw4cYHGZooESAgQQNKhzg9Q0AAnb+mdA4KHCr Y7EH/HyFIwiMiY4CEetk07FyY7hhHx8Mg7nAH7yBKdMMeILAW8gJ+lByPIqP5b8jOoYq7YfGHwmJ ELNC0co1IdYSX7suDMvBAQICSgbk5IAgQEyXBRiMaLsBwbUB994uCWAgozSyEuiCRCE4B+ALhVcc Fstq8QejLpcMDqPoGT3KGAgAQFeBM+bOANaxtBx5MkirqGVCrar672fLg60aY0ybTu3ax5rd3l3B Me/fXYALH/6YuPHjyE/4Ts68OcTlzqMXlN5MMvXriKDz0Y5dA/fuhr7HEQ++d3mt5KfDIJmxQegK 15g8fR1ZdX2mDxQM/Ft6X3/YPaT+d94hAlZRYHkHDkggJQniZ5JXGShRgF8KKLHWZ0jtJ0eDCmbn CIcx5QPUUgBeICGFSsjlIFMAbiOPUTSA2OEiMlIx4x83DlfjbDna2CNxOyYX5I9ESlMkj0cm+YqS yjHpZIBPXhXllDIMCaR8VGapWHha6tblJFaiEOaRY37p4yBlZgDLOFSdxlpsO1SogwB+hXQfBkro kaaZd3AJSW7P8fnInlLEqMZGAqwIoWlAFBUOSQdsYAs6PSX6gKMSQFqloB/6WaVI6sznSzHvRJqG O9e4mWE445xUolMj7JSpRxJspIB+pj6gWV5FnSTrAyRd2AqnjRCaELEzGIuslIX+KDujs8uGAC1t 00aLm7VhYKvtVtwuW+22XEEVrXXgemtkl4BmUu6X4hKZbg3f6rkuM+1eFy+GWd3blUT1/vbun/qu MW8K/TL0L2WRiTbaaiq6Z6kEDShwQKpOjWFLGKLpUKfGrgmsAkklEQHdMam52TAAlgJIMgB+OSxq GidbakvLKEsgoQJCOFawJwff0HOxG+bxM7zIwLAzJ0PPsEudEGsYIppXqKFs0sbgUZ8OOGdB3tHK UK1cohdjaMZlTrm3Q9hLCg3KETM3/TBlNJ/U9gMuw7qyomkvc66/Aa/Rt7rlgsi1kIB4bcffgRYx +HmCI26C4wZrvTeVSUO+Lib+i6N7ubndIiu1De6dBOvm7k5OrOWki5L5lHemrnnnSLqOCurOrX6s 7KvQ3pzt0qJ5KIk2YPnSXmA4oATxHTEhrC+tdzyBTdEIfwvy1RyvgxPJL7F8B20WjjtYphPsOxMB xNVxUW6locstTDcA8oQUGKBEALle5VL5KrKEvi/rwz+B+y9hmvyaUD8pOE53zOFdcL5XCgYWCnbi KwEDDFAAe8DpZXejAJsw+Cb/uERVzPug3TrYmw6qzIRWQyF9+lNC+nxGTijbGNkW5kLnGcGBtyPD sFLRt2G4hGlaCxgCCQdBMeFwFENEjgKjlMQjAq2IfGqiE2kUPkFJcYoLgqL+ma6IxWZVMYpkuhy9 vpgjw83CjJEbGLN0SB00Ko6LTVJjHNnYrCMsbXQEcyOYGtQTAmjGM2d6RQovWDEVdiw38bGObLCg MzJuwnCwgB5BpAeyJoBBPy7phXywpA0mPCwqJbkeE1aCMBZOIE82fIwet3TDYsFxFjjqmkIig7/z QYZlu/DfrIjRkx3s71IwAiAvbfiqESzgLoCMhbOuuMpFrQhRgXxSMwk0zSE0KClBAVBAWmWzzbwo fS180FSAQapdmAqbwMMXvhwQqtiJsZo+e6UjPdfFM/rtIPLkWT17lM9O9DMZ8BTZP/eppIFmi6AI NVoMKIKyiwDRYgDIyzz+VJLKPiX0ou78hEExCp6BbpSj3/soSEeaUZKaNF8nTWm+RKhSzrWUECIt 40u9OFOLcsEZLDvkDEMRsYnNZAc3qwDayKCwCjjgALaYE2dg0VOK2QIMlBlG1loSGb/MrW5nkCFI hvoe9WkhpjcCqwPF2iHHJIGWUFVTCuuTP1XqxSVTLSVcKwqW1SjGIYmcExCfVtc51jSCd00rS4aq TrpO4Ko1GyFf6SoLzeTEKoQ9LAAEW0gJIDZlJMTQZS+gH9FNwIJl80lO6TaQMZiNUQv8qxFV2wey Kug7momrBayXWE4WdgrGIx8YQFnJOvzRAm0tbDdcRY9cdnMJD8vtEtb+IT0JKPd6u23CKO20g+da silpoC1VKok9xdoWsKx93A3scj0DpFWY55jAL8M5kfdpVb0w4mwB0pIXqs7JvDX8H8jSOwEGXMN/ vzSte4lZh/UKU5fsPWH/BKiESE1hvSUNb+8kLC8Ks8vCGK6EazNM0qt5+MMgDrGIR0ziEpv4xChO sYpXzOIWu/jFMCaXt5rH4d1sOA0xzrGOd8xjHdd4jaoT44/9+sgWmOFtD3jqBBagmSaspGTOfR9l Q8hSxh5hJC9JK5PLS4H1MbdBNy7SP8WDSQDI1oci/MkSNlJd2gIguNJiAzSr5xIVoRlLz22y3obs MTAJmc8KHZQVPGz+1dFidbR4RO1bmeCXrHYsqF4C9KaoGDhJ7xmmcrT0pbEVZk2n1lqd9rQHQg01 UVMLXKQ2tXdQrWrGpNoPr2414DDN0Vh31FNwkAU0mquZAbRvwM+ryPZwbEoTIfkNtu4O6qrlYRWd IX2gvN4ErNvdOwOggCNQstpkrSZcJzTZ2Fm2oRKm07/ErMsSoxhOJYsx/v3lvfbDUADmDU4JNFkH Citmn7k961IXBNyx5Ld5aIpRgLeR1QJPnLYM3uolSjPhCmf4v6sM8cbMk3KGrTgSL/4snUmcyJwu jhbbmKaAIi3TIqejEqUY6o8HTbwjf4gkIpnYwsY54z6AZ0+6m9v+ZOb8Bbvg7zGdtlgDFh273kNS y8UEqq6KtpzXbkc11G3XjrCqtJk1uc1HXaPvBJ1Su3iYEu7xjp2So1TdJDvVYwJ1Uz196lHXyYjC 4aJu1DtGPvKoyyPR4xSrfOF9d4YsiYCr50VUshL96WckiRNrQuvxR0AnKf8ilaBInqKovRpMGHnp jydb6z5jkEHBzHHccDGJe8+1yEovJGP1M/XIjhrrGbcc0B8O5YOefUHZq/HZ6d5JnwvAQ2FfU4cD n/dFYXPvMfd7JhEf0MYvqO2Xv53m24b6oe+w9VdduMgUYKm+vLtA4QL+wIh/CMPwN0ijf31Ys+GW IHwZrBhgiwD++NzDioJ/ZcttQ/o3IZkUhzfbNlLsx31II0Sw93x+FnMPZBhGBQ3DwBeugX/5dxm8 RgxMs2VOFkLENm1SZm4BUAwaoxkSCAxJIIJHsD4CgEnREIFUcQwHJkMNQIKkhGW3MGUE0Wu/FkAU cADCNoGKlILApj402H7rt33dJgJJRT6NZkg4dX7N9hTQRgx7kSH/cUvpY11vRkiMAiBaOEMLc37U Fl2foYVwJhRV6Fy0VW0u4Xb0MIVqqFtc2EoEiIQRgX3ZV4cMmEN4GHC1Zoel04e+t4cYJ4inUIBh ZIgNRIhMJGP89GexAIgI4grThxAKeFMNeIn2EyaV2Cm4N2H+f9d9G3EhnahorjQkY6dB8RVNPdBZ FrALWQMbF+hrBNaBF6CBJUhDbnAYiPhVasBQ/BIM3ld+l3J+IFAYiTEEQxcaPrd1d/AdVtIAS4hc dXJnypddo5KGcrdmz1YOd7JIBsKKmLMYugaH+8cOJCEACKAAp3WOVzOHtECB+LKKddU4xbZw7gJP pRg1+nIgm+VV7MBVogFpfPWPJXRuSWZotYVoK0Nu+3Y6cLSPkTYWfaOJ7jd+G/eJLeWIvJdGlaaI zKeRThR4PQaSBMVMFmmSDeFPKrktYpWSLRkJRqMGY2OLD4CLT/ZmIfhdrBSTYEQDE1RBhwcreQWG WgeTPrn+aS0wjdfThOljbalhjKuVlFs0iFTJKR+FlFeZN3u0laTDk2vDkV4pYVo5lrVjllRZlmhJ RGvZkmrZlsbxlnApHGA5l5ZIkniZl3q5l3zZlyIGcXIpZgkXmIHIb65nCg8GTu8CjiRgFmhBDBeS jDcXCHBxhgJIAZJ5ewJ3mH+hXdEThBJQZkvQPWqmPafkSZlhZnoRmpERDtaVMTsQEB3JEmMohdPF SbT1SVS4ebm3mbtYdaKybsCCMuvYjlbhf/ZHZWIZEeY4nOrIjuCoAz6IaLM5j2RzQvyRZiU3mL9Z i/qjf8PJS4r3DfNTP+jVjIFxDXwBVeu1X73UX//VhIb+x5s4RzdDCGUG5p71yZWyRpg/4p/4ZJeR 6JvP+IBX9oE2eVtCyIO+cIJgqWutUQGasjAnGGVZ1mVFaIsCxqBEuIHUpV8cWgGuCB+q6V2gqYO1 WJejxp0wEJSg9Y6JRmzXYz6EpG+TsUF4M57KGZ1Vh51W5p3VqYsclF9CCmT96QJM2QR+YYa+AIWK UJsj5KRsZV9MQIyhwKR0k5tNyg5QaqPSRmfUYwHSGBl0YoXS2Y1o+KXbeKZvCHOGuZmkR6ACaoDc 9h22gAsQExTeMUjxQ3T2hCfsE5oWgnQA1F33RDSTiag2Vac0cFRLKACcIZCZdzWFRjOYBW9BenS6 yDH+llUVoqFtGDIF/8ipiQZRlopdpHoGCOmji3qkMmAO6MBOXbVNWKepGXIS2ZRZFXAigrqFDlKo /Gd1EsBNctcLE7V/l6dY+JGsCYZCbZd2cAeGESZqAKo6Q1KtADWnRuiq2nqHctqt/QauXSOueIit 5Cpz50p95pqulsiu1eeS7roH6zqTKhqvX4Vq86p9uQOJgGmVCNd7YJWvyVKuQbYCd9RlfpqpXuBh 6Gl0MtmHG7UchVcrQ5mQiXedHcR4tFKP9YEOGpsTtnCxD1J2E0mwRVYlYPM506aj7RhZj6MGtpAr LusUNZmQNFMgAotSl5CzfmiI8sSzgeaWDPJGlTn+F1KZnlFRX9S1BDQao/ealKdnIO/XZnKIhr11 Ab9VAZYJobY5mtmjA8PWs0LriVK7p0R6DFnbGUjHIpmFnA37kFD7RPy4ATFoQxBmAQowX8SgtAoL ZTpRnomAlggEtDskuFn0r2tpOYQLt4bbfX75uJAbuYsLJIhrr+NRuZYbe/CauS+Hj5x7uZv7uZrr uaK7i5hbupITuqirHuNyj6urOC4pka+7ogR3UZObkbRWcOrqbQh1uwWbu7l2NbEoreNHPkUDsLzb EPXBm0/3BJY3d+62cylwZAOoceK2IVPLQXHTqadaAUURFkURtiu5fNc7KC7nuxqVvPuEvvpUu/T+ ygTfdz5H2wHIOL88sIwE8LYSsIz8tb/XkL8DS77qW6A9mE6URD2iSRMdiJuomY0wIUpeu7Q8iUrR QL1KoSJZ20fd5IzgVXHlu7CZYI7CiY7ECZ1ml53NBaRyxZPPAE7jULF205xkYL9uar0DfFfk07QP dksLRgHuucPpk59RQYxzaEzIZG++2g0KwwBNRgBtxb/6C3IsCrxB9Cy76769e8VUnMUCjMUnqcUh N7tPS7piLHuqW8bheMZovHqMyERrbMahaEVv3JtxzC71Osd5yL6giMc5I4kDkhuyi8e9qGzKoceb M8gJJB5yacjgk3I8GySB/CcimYR1HB2RzIf+YsHIRurI0nHJrRBrmtyAmahE47ivH+mmCWgf8EuM mXmM4NTKSskCJFFUSEyfD+sCCXAX4uu9NKwBrZxBsFxhU2lwB0NzbXLA0MWambTA5KKlDpxd0yXB y2mKI5Aidge7LpC2E6AfsIkZyHxdJhqPoUE9UfDNPLeGYGBtuxy0gPVqXlOOQ9ox6VicooXCoKnC 9jzNtuqAbPwC2ry/TmdIysqqvKejBB0KbvtzfbZhzURLOuxLPJxLTPPDEB3EwaSf8CgglSMj6UFe kGkBA+RgFc0/Eh0/DfadTqorofFeAYZLgQqiL02eBAQlefe7jPSSO8KR9+LJTpu6QZuV0tT+dcIz yUqXO0FiwZIFVTgZrDSLoGk8vsq7oTHdQigK07qkAw4qllzLeXnskT/AHqRFy0Upf2fguoZyvMgG nKUq0EWaQROAo0/d1eEiIGV2Zt8Ym0xwjVj6Ke+KvVmIzuSkjV3KGlIaGZap0DRdyejRaZDzSjzN n513HHrnIad8y2r52Icqt2ocadUaL5idh5tt2WFlJZ+N2KGdN7fbiTEVypj81JpMFqUttZI727Qd eJjYxvkYCHyc2Kyt27uN2qD2232M28dHGaPIwcKdQ71Np05xR7HNroj8iOoEjMndk8tNydUd2eOS 3Yh93UvL3YFL3M4H3trdqufq3d1duND+bVLRfVDuit68rd7b8TvHFts0V99DUknq94fiva3yWh/5 ZnYI+Y8E+bIOKaRY7Tbcq+CdVACyFW9Jp4eKvcl60nTdXEjPKne4uhR1R4/87Fzt9HZop+H+QXfe dM19FeFH2N/MvbMI6C/s7cfuvd76OuGi7AFndT9k2BRutlaRMbzU/Kc9/clCrrDYG389ueI23toc wFAWgRElJBUbIcJqvcIvEaxR4bxLEbIScKwj/LGYJxRE4eEKzA4bAXXF9QRTjlrJmuXAlD5gHhKV txRtnlPSi+B4veFUIRV3O3AS7hsG8QXh5KMjPJsGrZDEtbIn3KmL5aUdhFhGSbwLTlr+mPUZM1tC 22uzDI6Zhz7ph8bB8F3eSU5N4dHLfNfXSg7o9hrq4b3ke5yurC7X5k2usY53LJ6I5G3rrs46uS7r 9NTrAbzrbgzskybsD0fssVTrxo7sC6Tsyn7KsW7WZVXb1F7tMMbJrYvrp0vJoQ4L+mwv/Eq7y057 YfHcgkbU3J7b1aEj4Q6K2GruLREu7a7c1CR8Rr6wqMfQRFCUZVrkDsvP8O7nc0Q7URA6+1nIs1Mj s1zLwS5IT8Oqbp6rREoBXP4iGGu61k3q8HWNTGd6OKvIVTCiFPCiKShamW5ajFkGOurTGQ9QP3Pf l8l1B08DmDKc2KZWiiqOvnOIP63+UYBxNQFuMptON+lWz4wuDbApgzPf6OWe05z07OHKuDyDRlca 4maX4TqAKkZfrMNaq/gcAr8SLC87aILnCMEsA788jGI7icmSlQFPhzcw2J55XHNipmD7oWCazCHB XcUD2Fb7oL8zeR2cJG9/U4iTIAdND6aU0Pjh6Gcb6Ufn4Y1sRYV/1pQNBHXLhedp0jONGBcdonBT 0laNqX0uo03QtFMZOMtW+dPaGEI0koTC+mu/3QWn2q4F9QK/kbMk+9Y072QZPAyH+zPO7FIc3MR/ /Mj/uQGIvbyf/NV7+c5vehoW/Zl8ctSvcNZ//QFq09rP8zDgmGkRmaaOmeP/ad3+z/0rcKe5IPHO JPXnn/0tEFurmR+t6cB3PPnv377fj1TIRcQQU/QQAN4DoE0q8ebde+0TR7I0TzRVV7Z1XziWZ7q2 1/D+gGCqsAJAgFA0fpnNUZfTNZ1PaFQ6pVatNGbNABgsJo4twReqeB2DoxLZzF7db3hcPqfXd08E mmdwYBA8oIqutJy/niW7RMVFxkbHurbHp0jJSstLzExFSs0Yzk7QUNFR0pHP0pJT1FXWVlc51Vcf Wdpa21s23I5Y3V7fX1q1YGDiYmNcYVTeY+Zm58uKaOlp6mrra+xs6Wfubu/v5W/xcfLx8HL0dPXe 83X3d3jR9nj6evvE+Xv9fX7+qPx+gAEF4hhY0OBBGP8QLmR4T2FDiBHTPZRY0eIzihc1bkRGjeNH kNymhSRZslg0kylVIlvZUldGl+pgxoRGs+FMm5Jw5gTH86XPgzuBbhpaUGhRSEgFHlUK61EyEBqU QOVAaAaDANQC9FnTgmoSawxSnfpqiWlTOGc9kbFAYA+GH9u6LnD7dszdCQeyDtngIAiAAlx3MXEQ F+UEuhUCGNjQwO1iuCG2KBhceUKDvwUu4K3g2K7cB34rBI6MdQA+tK7UJmQ7oI8hzmwnCACQYAID q2s6P1gA6MEBAIwfbEHgocFeAwk2R8ZA2/YD3Bq2FOBtdcuBHTlEUx/OZQL+GuGEXD+A3RW4cOJj hKNOzWr1i6k5csfHoEdubgVZhSy3RoKBgQLQeE4N+w6DSprispMmgALEwiu2B3Vjy6Ou2GtPmadk Y07CDZUoTCoQO/hDA9pMqEAwCB/8cDYAULwrAQDEiGoE2jYzQoAUcyxxxkXeu1AKH73SMEXF8NqC wtyOjAa70PSLxsEOaJsmgM2K7I7C46TBcQ3ctrLsAwec5IGr3GI7JMxpHCwrrR8xbLOeIN/MRc54 4qTTBjvvJCVPPWXgs09Q/gTUhZ0cQICArAZIsAQEDhlsmgZZaFRBaQrwIqoFDViuQhgmjbBTR1dI QA9FUfDUhVO9GjQTnGj+I+2BBsAbKzsOtjhNBaqEAW7LqnLAbMwljlrzAzS6QKxYExUalgRBVyWo BrcoE0HMLUEDyzI0o/EyAzT+OpCJ83jcALdbxQNsAmoxyLYCMe7TYF1gMxBzvciOgHdbDty6dAMF YozQMEK83VYNgP9p1tkUCj1ASiH23dEHGXO1ZrMaLxNiDP4isUbGL6+VcLmHKZCRNhe7OqJiWC/O IGNxUb5R3F7/DXEMB1+usExVEa7kPd/643RDWjuUT+MsfIuZg94innkMJNug7+alfzZ5aA/07SBp mR8kOGqcWThYZxNtsPVSMPztTjgYyyV6BFu/Cy5rmMvm2OPLgnAU5y3+0PbubOjKPKLtB2SFWlzA Be+g2EsXQIPXrGw7w2/vHmey8dD0+PRZsB0RKg/F+GjsL2MnKO9oEX4FjGU/jAZrwUgxjUYAz4Xm wPTQb9NDM9F7DsF03OHmYHTeN/WAcy4WxcCArLA7orzOut0UeQCU12B0rzN/yvpGlr3ha+zv6H4T Prn/vqrxMSrfwvONET99tbDSquSOV6cGShS+ynKaWx+lRlqphQR6LRwwRXsJS19SJkEYD2WGTIch HdCCV5oAFMgDMJrbA/oVqv9NIAhMIoRpvqDAxjwmPAbaXWYy5hnI6A8DDxRXZ0TIHLcMAHV3sZaf CkgHtWQJdsrhQLj+upMgifUlCNwp3NsysJ4g1s9pM6vAenyYnu5QpzdL+9veBCeI16gOaEWkF9Cw SB7djeeKVOsffG44hyD9J0C1YdpI+qeV1g1OjvFj1hJzlIGmtZBre9Qj3ei2NbgBsoyEOqNTDuii k60NZlGygMWqRcYOUBBpDFrkA9wCxKiFbAMk+1IibaQyQZLOZSojnSB3kzK1rbBrNiwkm6DAMG1t Bl4AUJMWL9cXMQ1saBhcISybSKlp7Atns6xZuuSFl3st0I+ROVMu4fe02NjHUUqKHiF4mZBWujKb BzTgNq2wPrAN0B/evAI4yekEc44vnefcHjupsE53YiGeQJrnMOr+OYl7vgKe2NNGP/35T4AGVKAD JWhBDXpQhCZUoQzMJ5322VCI2uGhEaVoHCZaUYx+M6MbdcZFOfrROYFUpOwYaUlZYlKUysKjKWUV oFbK0pr06aUw3ZlLaQqQmbqjGjfVR051WkOe1kmm4gyqOHz6jqMWVaJGXVVSB+XUkMpUqWHrBlTX YVWbiqSpUz0BVmfgVXSAVaod3SpXu0pWGRSGV5tspCnytLF9ffVPYs3qMWYCIyZhADjPcWs5CbOF tQKwnGYloF1v4JblGCF//ZrGCH1nTP25cZllY5yWMMBYaQhnXXUZLGHrZ9gl8IqTjVHAASzHoQ2F zGxCokYcVTv+twaU9rSjtBNdy0oMpvQLO8Dh3wOCMIQizIeMPuvVThsIuDbK5bdEMAIf3+lZXJ0E CkHoF3ciY4bTHoFyj5OOEdMGHyZEx0F5m8B3M4DdIwBHjEQ1I3QL+4v36McDoJvig6AnvRXSlzUe oA2TaBdX+irBM+3ykW0RZmBm3da9n/UFgr3hYGdBeBcKXjCDT1rXCr/XFl+7Bv26Son7SSN/xZ3f LRkh4Qhf2KJFK+FoMmYaoD5Akvyy5c+Ei0J66UUIxntuhjFnTzRqZ4gT4KJ6MnjkvqpryBIaD/Ma 2Ztr4tPHP9anRKcUR1NCsoFjYR2UcHaE/FRAAMKLAop1BmH+cJZllI9cJgZmjIEFUJKOHgtl6oJk 5jMDGRKcSKbMotwAXxpxzrLbEDWjNwU857nKFJ5ydFWT4kYTshWJZgalwzlpSEda0m56qqaxyWkM e7p6pbC0+kT96VGUWrqnbq+eVM1q77ka1uYb66wrHWpb4xbXuYbvrnlN0lr/GhivBrawh+1rY28Y 2cnWs0OZ3etgP/sWxP6JtKsta2ur2NnZnvayuQ3qbX+72T8yrrgxfSfJmts9Q6V2rtvdbXUvWhkL pXe97X1vfNM70mJ991X3vW529tsl/HanwFtC8ID/exUGD6vCwZ0hSAlzelF+A3Fr2miEmwVcpERy HfrF14v+TznjO9u4Y90lMK70+UrR4HFyY3w8APQ25D4euU6qwTHI1Uxla0YXYGQOg71qguEqqXmG dnEIyNFZywygTQDiWi8KdYBcnRh6SoquOe2EIUeCqNyhu3MrwWXFC12KgVs8bBaHkxoTcPTy9HQX q9N9zsUbgF4A8greQKV9Tx3pqd5TzXeH+F0eBRd8KKpujsLn3R/WkNYqcTWkOHxIGmfnAGajIS3J P0nKIgc4N49WsLvEcFOJ+QxKQCMawAimAh50oV0iC1Sz38Zfse9bKjdEe9xUEE+Jp3qZq2FdyK1X OM6RPRVD8EQAYBKJXMgixZPlMd7CiF7UXH6ba3D4klz+HU9MkP7WIVmgpLv8y1qGerp9ByM2wjxB f3Bsx7/Ke6H73jKQ+6TtQxP+B2jyf3VeAW0clHsMCAABEIBQEST/kz3duz74a6nFq4ZaGgOk4wJt gbmmicBmShPfGaQSiA5p6AO1YhGu4EDN65tpgB95wrjO6xHs6yzOWzisI4kVDAntK6QYBIkZPKMa /IgbvKEc5IgdLKAe3IgfZJ8FXDvCQ8GFyzclXEImbMJ607QgNLx4kzd0m8JHizYr3DsszMLB20Iu VDxs+0ItDEMx7EI8ckI0TEM19KcyHMMoNMI2NMM3jKk4BMM5RLs6tMM2sbg81Am4eJOo68OQu0Ob Yy/+QdQmQrS5Q4RDCpAThlrE65mFC0mGRAwqMkgNVTBESBwnSRwKQ9TETWynTswJUCQfIVxDVExF VSy3BBvFgUOnSsyZTjsrV7S6d4pFC/M2U2xEq2sWXDSFTKNFXpTBNFuKYBTGX/QERew7RqOqYayI UnSDaDS1ZnTGZEwYrHrDa/RDWdzGVlSNGvRGzWk1cdyyYDi8cjwxVEvHaZRCWptFcgwIhmtHd4TH eOwpSriGxosar4G8ijsKynGzGquCowC//Xg+vKukOxrDdbSHYaHEEHEXS+KC0auLFNqG0wMhmomg lXkh1zG/JLiBIJARt7CuitOBfhkxt9nHa5FI0dv+PwmIsR94SRoioYmUIbmLO73ai5brMVZ6Rn9T otYiNG7pA8EhPhLUmuMzIij6pTFosoH0nxlIGquxKDZQpCyLDOELJKLZStQqysBhSisyot2AMmlU wFokh3YQhu77ylAySKUsP5uEyY98OYXsRzSCxaDJSq5UuqAhEsgbvwkIs4NkwfdLy6oyGBbzvvpT EfzTvwykRxFQloM5i5Q8nPQTMPqzGPtrLhM7JZvZTFRikU8KLDCqLVEESpGgiA4zk6ecQCIzLiux EmKKzAKTypOEAkCjhjGjwAoADhCJQGnyzWoKzqioi3ixpte0kiZZEK4wtLsrM0RATGoMMrt6qZz+ kkzcxMPU7Dft9BPvFB+NobrKxE50+kP1SceokkbQUE+iOE/qnDb3XM9vYkUvPEHVHDZz+kBGIjNz NDzuYaCJSpUqIFC5BIynWypOzM/qnAO86qH0SzJ52KeL+k4l+su84Lhu2jx0pAPEUqXFoob2CyXI WjFuhLh3caaoQLkvUFFuAQyZLLn3lM74bAYLTRjRapHZkS3h8pjX0qYTXcb8ayub6RWd2xKeW5mO 25gZpVEGfTA+0a3fiLkNWK7gYqLhsk/5Y0SSo8uOEcw5MseoNEwnnUM7oa5zAQv0mpntOi3ykrG9 2VIGhAbJGMsuesquY5IiC1M/kpsNpacaVUv+H5GvDgiwpbmvrvgvJ+29TAAeE8oOuOudupm7CKEe uWQQyjtLjQrUsMrBGyVIdiC28EFPfqi6T93Ul3i1uSJVnGo3uppPBdXUJ92HU1VBKrxPQJ1VnKqF WrXKavRJWP1PMBy3KjQkXTWIXoVPeLNHRPRBj0rWWNVFRGNVHzyxUgtWHIpVbMXGvFw1ZjXWbQ2g +ry1X83NY7XBxUOrb+3Wc4XBmZjHY+ymcMWCfIDWUPzGeU3NWbnXbOVUm8gVfp3RfE3Xdg1YVB3Y RTVYC0HYBVXYhQ23MQA5E3PY7oRYPFJJe3XYS3TEmEEZDaTYwyxYn2CC5Um+iQVZ/GTYzXv+kJfJ WIXdWEDcMvtA2QVVWWW9HPSjWQ61WJ01V5ulz55lwZ+dzqBtVnLT0qItU0AEyaRV2qV12abtxKHd nqmdJ5il11XMWq3dWq5dxXq62pCtw6qlw50YWyH8Wmr9SbFFW3/VsDg020HU17dlW5EVxrW12rRV xj1hvIWEBb79yjk4ErXD27bNRQCdv5i0SZqcVJ3MC54EJqCCyJq0isWFlUfdyR1rgQBwOqgl2iOs W2ec0KH0Pq/c07IcUy6DFKL8IsEx3SdD3Toa3HgCW7U93A1oS/wDXDDTj96sy0fkFNw1Pr/cEMLs XRL7hM6V23OiXb1NtcV0SyLdmyTdgBH+ScjhjY/GHNLSFJFSTN7dI1zQTQVSCwvXfFHmVDnoBC8H LF9BgM3m1JbnnIbofDzZ/dyyvU7bpVW6vd/0zF9mnN28RbW7BeDCtdu5BV/+VQFDQZTisb41gLsd i7LfkzjRcT4TOBUD9TwJ/R0L1rgKdr9Ns1/lLQFX4Qq4az8JTSK90tCPjd2T/UcMHd+GTbgCDt0T iJbJjJHMmtxAzCAfAr0MYFELEtEzLOKeex2tPBfF2OHB6JY1mCUQQc63iTGVW+JoWI8SBQshRt9p wCQjthcXtWKnjDUR/l4FXpjXkTjUyV35kQacM74jJS3Tekz5UJoTQrJTWgPawhii5ID+JM3jREqC BFw9RyLNQn6ArCgAmQu/P26rQYLbE03ghIjA6/XHI9OduNwQK/XMqTlQ57olvrwjx5OjLOvhvvwf puOBSwm/UH7k/R1hEhibL9A6UhbeuKHl4MvTMVjTTOYbOLU/PoWbInIuqnBdj3lT8+qV05Cc2AQ7 IxK7vqHkTv46t0FhV0ZgWGYUPVgM1cvSB7FUl8PUDXGySN0UQ82dQ3BUQaBgL20gAVucnJUjcGZc SQ0lRY2Kcs5JSR2OrLC7ccZkep6haybg8P1GcJzQS5mOFxxWGi5oYFQpqEIAKdlnW2Xo5Q3gVhvg MkbLPITkSHToyRREjx7HGhbfPhz+6ezB6BA+YIIu2659aZiOaZk2qFfm2KgVWp69aaeNWZ0G1ZKm CZTeJubFxJ72aZA+uKIG1pxOaqINallk6p21aaiOap6eamV16lGz6pDCairTao7makfz6oo9WqYV 600D6w/7XZNA65V+6KMmOu8NSmklVbY2YFtcV7eu69iN63LQ66426bfWwbLga63Ca3xFik8kbG/F 1bzmie9U7Gtj7MY+OHuF7Fst1m7sRb+9Rr8O68wW7IWmh85226xGWLUW0okoVwt71QgFYSDhN8vu ETkYFUHoyQ/I4BTA7SSL7ZD+SdaO0xcOllRNhJHsgJKcYStAnGMB7hzeL/ptYV/+9e1JkwCPhdbT DtU5gLKUg+aVvYKqpDGlaUkSEmJAijHLc8pR/tOGdA+38+KrNIe4zgoGIDvkHlceCWVCThk26+MO iK05xlKSTtnpViUc0U7e9mAryIyEdYPvhjOzwW9v5u9AAC5OTm9jFXD25oCZVd9WRbTVEB/l5o3F CUA24i6lXGY0mJwSzy6i4WXAjVYMT8JISuy03p++fW7ohoLMy2+3EiC1MCfiKZVaSZ41IGfnoTsi L9koO+cX79exTky8/LzEpVyK3ADSu0jTYyDUe5UMYL22cL3jhT1aQkAcl6vuznB1ffLrpMzRhV6v RMro6GXkUz6tbD7rzfG79Kv+ouFV7+TQmXbC6+M+srTlB4HLaT5DiWznNo5c8iOUmA5soGbC1TRz KVfK7PUQOsZQ/lOBA+ybBCzzfzQQ1UYIUGxNCRFO9zU05Tym9x3BOitFETyRfizGkORzGPbdCvi5 2j1FnhG4A+/tKWChjgTzLUcRHeMLFQpoWqlcYV+9CIrRQcvotfbx/o0/KnBdqDyEOedjs/ySPVVm oxRLZx6h6sN1kwzbmPj1tVN3uyZYUQYRCile/zx0qWllMI2ftkR3x2Z3fPCqPGlkHz2F6v2S6QWL 7AX4JX3eXUfsebQtPqliMqrNlfvNqLhA+I2K4WxR5/QzXB/zhW8Pfr9KB+tkwZA3aFcreUfXNkGt xzOzKpTnaMluqmd9+WzeQxrkbZq/WTLMpuTN+QVfam861esGrbkW6mn0eTLF7IwaIKQH0p0HKWEY esQzbJGKxdE2XLOWdqXPeq0Heq7Hxj8Pe7Ev6zqIAAA7 ------=_NextPart_000_005F_01C7D4F8.A96E3B20--