<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2015 The Android Open Source Project

     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
-->
<resources>

    <string name="app_name">Memegen</string>
    <string name="hello_world">Hello world!</string>
    <string name="action_settings">Settings</string>
    <string name="welcome">Hello there!</string>
    <string name="text_too_large_to_fit">❤ ☀ ☆ ☂ ☻ ♞ ☯ ☭ ☢ € →Hello هتاف للترحيب שלום
        përshëndetje Добры дзень 您好 হ্যালো здравей მიესალმები Χαίρετε હેલો नमस्ते Nnọọ こんにちは ಹಲೋ
        Сәлеметсіз бе ជំរាបសួរ 안녕하세요 ສະບາຍດີ ഹലോ हॅलो Сайн байна уу नमस्ते سلامהעלא ہیلو
        မင်္ဂလာပါ ਸਤ ਸ੍ਰੀ ਅਕਾਲ Здравствуйте здраво ආයුබෝවන් ஹலோ హలో สวัสดี Pẹlẹ o
        Lorem ipsum dolor sit amet, consectetur adipiscing elit.
        convallis nunc et vestibulum. Sed et consequat quam, blandit varius tortor. Curabitur
        accumsan nulla lectus, placerat condimentum odio elementum vel. Nulla erat ex, accumsan ut
        enim sagittis, scelerisque efficitur ante. Nullam quis orci nec magna maximus malesuada ac
        id sem. Nam sagittis erat risus, a accumsan neque congue sit amet. Nullam risus velit,
        faucibus eget scelerisque et, maximus eget arcu. Sed porta sed libero ac imperdiet.

        Nulla sem lectus, ullamcorper id dui vel, rutrum interdum augue. Proin aliquam nisi vitae
        hendrerit tempor. Mauris porttitor velit et egestas feugiat. Vivamus eu dapibus libero,
        quis fringilla urna. Suspendisse non turpis dui. Vivamus facilisis diam vitae est auctor
        luctus. Etiam quis lectus viverra, interdum turpis eu, aliquam sem. Nulla vulputate lacinia
        nisi a dictum. Cras faucibus vitae tortor at ullamcorper. Quisque sit amet sapien maximus,
        ornare nisi non, imperdiet magna. Vestibulum tempor metus ac mi ultrices dapibus.

        Suspendisse potenti. Mauris pellentesque lacinia tristique. Pellentesque vel dui quis sem
        lacinia imperdiet feugiat vitae sem. Proin a arcu magna. Sed quis augue eu mi accumsan
        pellentesque pretium in leo. Duis euismod purus mauris, ac tempor erat auctor non. Quisque
        bibendum est pulvinar ex dapibus, ac tincidunt nibh tempus. Mauris sodales sem id purus
        commodo iaculis. Pellentesque a quam dapibus, vehicula lectus at, tincidunt arcu. In
        placerat porttitor urna quis consequat. Nullam feugiat nisl sed urna hendrerit, sed
        elementum massa iaculis. Fusce sit amet turpis hendrerit, varius lorem sed, luctus mi.
        Phasellus sit amet ex orci. Duis scelerisque nisl quis efficitur maximus. Curabitur vitae
        accumsan nunc, eget varius nisi.

        Fusce efficitur malesuada luctus. Aliquam dapibus tortor sit amet purus semper, sit amet
        pretium lorem feugiat. Maecenas gravida sed arcu et placerat. Nulla facilisi. Cras placerat
        rutrum mi, in rutrum mauris maximus at. Mauris eu suscipit ante. Nullam pharetra egestas
        diam a viverra. Donec sem turpis, tempor malesuada est vel, blandit accumsan magna. In
        iaculis velit in efficitur hendrerit. Nulla facilisi. Curabitur eget ligula lorem. Sed sit
        amet dolor ut ligula malesuada condimentum. Phasellus molestie augue eget libero commodo,
        vel blandit ex blandit.

        Morbi cursus tortor ante, et tempus nisi tempus et. Suspendisse quis gravida diam. Aliquam
        efficitur dolor sit amet sollicitudin varius. Etiam libero purus, ornare nec nulla vel,
        ullamcorper blandit nisl. Sed vel consequat diam, id placerat sem. Donec quis elementum
        urna. In posuere bibendum nunc, in condimentum justo blandit ac. Quisque enim lorem,
        gravida at purus at, sollicitudin imperdiet erat. Ut consectetur rutrum ante, et pretium
        odio iaculis a. Nullam a nibh vulputate, volutpat lectus eu, pellentesque felis. Nam
        vehicula suscipit diam nec convallis. Quisque congue maximus sem, sit amet hendrerit leo
        tempor et.

        Nam eu consequat dui. Sed semper dignissim mattis. Integer tortor eros, tempor in lectus a,
        lobortis aliquam dolor. Phasellus at sagittis magna. Nulla eleifend orci ac urna auctor,
        sit amet luctus urna vulputate. Nulla venenatis venenatis erat ac finibus. Etiam
        ullamcorper elementum suscipit. Morbi nec velit non mauris porta finibus. Nullam in
        sagittis odio. Praesent eget nisl ut mauris vestibulum feugiat. Sed vulputate at elit et
        cursus. Praesent viverra erat blandit nunc egestas, vel feugiat ex condimentum. Class
        aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.

        Nulla fermentum mattis urna, non gravida eros vestibulum et. Fusce porttitor augue turpis,
        sit amet aliquam augue sodales non. Nunc neque odio, sagittis sed gravida euismod, commodo
        at libero. Donec porttitor pulvinar neque vitae lobortis. Aliquam accumsan velit nec sapien
        placerat egestas. Aliquam at tincidunt massa, et dignissim justo. Donec sapien ante, rutrum
        et tristique a, commodo a massa.

        Nunc placerat lobortis magna, et molestie lacus semper porta. Lorem ipsum dolor sit amet,
        consectetur adipiscing elit. Phasellus ac ligula dui. Duis ultrices viverra eros fermentum
        finibus. Integer ultrices, felis in accumsan volutpat, mi ligula hendrerit nunc, nec
        accumsan mauris tellus sit amet metus. Ut pharetra enim et sapien sollicitudin, nec
        ultricies urna pharetra. Morbi non tortor nec dui feugiat rutrum. Aliquam malesuada sodales
        risus, sed congue nunc accumsan vitae. Etiam nunc magna, tempus non suscipit eu, feugiat ut
        nibh. Maecenas et libero ut nisl pellentesque tempor nec vel quam. Etiam sem ligula,
        ullamcorper non dolor a, viverra placerat nulla. Nullam dictum commodo dui, sed ultrices
        enim sagittis eget. Morbi non consectetur lectus. In gravida, augue vitae pulvinar
        molestie, ligula orci vulputate ex, at bibendum urna felis nec nibh. Sed nisl nunc, iaculis
        at augue venenatis, fringilla accumsan velit. Curabitur nec augue porttitor, rutrum nisi
        vitae, elementum orci.

        Vestibulum eu tortor iaculis, dignissim velit quis, rhoncus dolor. Donec et tincidunt
        nulla. Duis faucibus auctor erat ac ultricies. In a fermentum mi. Fusce vitae mi id sem
        interdum tincidunt. Nulla hendrerit orci turpis, in maximus elit mollis eget. Aliquam erat
        volutpat. Phasellus mattis est nibh, ut scelerisque ligula egestas eu. Ut molestie orci a
        malesuada tempor. Sed tempus arcu id orci gravida faucibus. Vivamus ac lacinia neque, at
        vehicula magna.

        Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae;
        Nullam aliquam, justo scelerisque egestas sodales, purus odio posuere arcu, ac ultrices
        nunc felis non massa. Aliquam vulputate ipsum sed aliquet auctor. In pulvinar, eros sit
        amet ultricies tristique, lacus ipsum scelerisque eros, nec vestibulum est lectus quis
        lorem. Pellentesque ac augue ut eros mattis viverra vitae ut lacus. Phasellus imperdiet
        efficitur elit eget tincidunt. Donec sodales metus at dolor pulvinar, at gravida nibh
        facilisis. Sed nec tellus luctus, cursus lacus sed, euismod orci. Maecenas sit amet leo
        orci. Nulla non leo non mi eleifend consequat sit amet vitae dui. Sed gravida gravida
        justo, tincidunt ultrices justo semper vitae. Fusce at nisi nisl. Morbi molestie quis justo
        a convallis. Curabitur massa lacus, feugiat quis mauris ac, malesuada viverra est.

        Phasellus bibendum faucibus velit, ac scelerisque velit tincidunt eu. Curabitur quis
        suscipit erat, ac feugiat odio. Nullam et sapien et nibh maximus posuere. Vivamus faucibus
        justo eget dictum sollicitudin. Etiam at leo eget elit facilisis lobortis. Maecenas
        bibendum tortor non erat pretium dignissim. Fusce id imperdiet augue. Suspendisse dignissim
        magna vel odio viverra varius. Maecenas suscipit ante et lorem sodales vehicula. Quisque
        vel magna id sem suscipit iaculis. Etiam in elementum risus.

        Suspendisse odio nisi, pharetra et purus sit amet, placerat lobortis diam. Phasellus enim
        nunc, posuere sed porta in, ornare eu ipsum. Phasellus imperdiet porta neque, vitae dapibus
        tellus feugiat eget. Nulla sodales leo ac efficitur luctus. Vivamus eget ipsum quis ante
        pulvinar blandit. Vestibulum a justo convallis justo elementum viverra ut sit amet nisl.
        Suspendisse eget augue fermentum, sagittis risus a, rhoncus elit. Vestibulum in maximus
        tortor, non vestibulum libero. Nunc accumsan neque a nisl dapibus, id laoreet neque congue.
        Pellentesque sapien odio, fringilla non nulla nec, varius placerat diam. Aliquam
        consectetur neque eu ipsum posuere, nec dignissim sem faucibus. Donec sit amet tempor
        sapien. Nam at libero vel lorem dapibus ultrices a vel augue. Nunc facilisis justo ante,
        mollis tristique velit aliquet quis. Mauris consectetur odio at urna bibendum aliquam.

           Nullam lectus orci, hendrerit ut ultrices in, dapibus pellentesque nibh. Aliquam arcu
        metus, lobortis vel dignissim id, tempus ut ante. Integer vitae ante augue. In hac habitasse
        platea dictumst. Vestibulum in tellus ante. Cras nisi tellus, congue ac velit quis, rhoncus
        ornare ligula. Sed facilisis gravida pellentesque. Praesent id ultrices orci, ac ultricies
        arcu. Donec at ante quis augue faucibus congue. Donec mattis quam dui, ut vestibulum orci
        tempor mattis. Phasellus in quam id tortor varius ullamcorper ac ac ante. Proin cursus
        accumsan sem, vel finibus lectus eleifend ut. Donec efficitur feugiat diam id ultricies. In
        quis euismod nisi. Vestibulum eget viverra sapien. Donec scelerisque nec elit vel viverra.

           Sed mi urna, rutrum quis augue vel, aliquet placerat diam. Proin faucibus in odio et
        consequat. Proin ut ex in mauris eleifend efficitur. Praesent ullamcorper sollicitudin urna,
        sed mollis elit hendrerit non. Duis leo lorem, efficitur eu auctor sit amet, scelerisque
        scelerisque magna. Mauris eget massa auctor, viverra arcu a, elementum nibh. Sed
        pellentesque, nulla sed condimentum posuere, tortor metus congue sem, nec placerat neque
        magna vitae purus.

           Etiam at risus vitae sapien aliquam condimentum. Vestibulum id libero placerat purus
        vehicula consectetur. Pellentesque sapien sapien, posuere at pulvinar at, ultrices sed est.
        Maecenas nec condimentum ante. Aenean volutpat, ex condimentum hendrerit hendrerit, quam
        nisl  pharetra nibh, vitae bibendum nisl odio vel lacus. Morbi mi tellus, bibendum id mauris
        eu,  facilisis volutpat turpis. Maecenas rutrum convallis felis. Quisque eget feugiat felis.
        Duis pellentesque iaculis massa ut facilisis. Donec nec commodo magna. Integer aliquet orci
        a odio eleifend elementum. Quisque molestie, urna ut molestie eleifend, odio neque maximus
        enim, eget viverra metus lectus eget quam. Fusce nec urna ac neque bibendum aliquam vel quis
        dui. Fusce ac quam consequat, feugiat leo vitae, auctor felis.

           Sed ac metus mauris. Sed sed velit ut tortor aliquam vestibulum at eu arcu. Etiam eu
        posuere lacus. Maecenas id lacus quis sem mollis sodales. Quisque justo sapien, vulputate ac
        mi ut, congue vestibulum orci. Donec euismod erat rutrum, laoreet urna sed, accumsan purus.
        Donec eu quam a sapien condimentum accumsan. Sed at tellus lorem. Curabitur bibendum, arcu
        sit amet finibus sodales, mi sem finibus sem, eget scelerisque tellus neque vel urna.
        Suspendisse eu augue nec erat suscipit luctus sed non metus.

           Suspendisse porttitor ex ipsum. Pellentesque tristique eros sed pharetra porttitor.
        Quisque ut elit vehicula, aliquet est nec, faucibus tellus. Donec ex augue, congue eu
        dignissim  maximus, vestibulum at purus. Nulla quam enim, laoreet sit amet molestie vel,
        dapibus nec tortor. Sed interdum massa ac orci gravida, vel viverra lacus lacinia. Donec
        nisl lacus, fermentum at faucibus ac, consequat ut nibh. Praesent laoreet est augue, vitae
        maximus dui efficitur sit amet. Cras ipsum tellus, tincidunt at volutpat non, tincidunt ut
        elit. Morbi commodo sagittis gravida. Pellentesque sed ante massa. Phasellus a turpis non
        turpis cursus consequat sed nec tortor. Proin et augue elit.

           Duis finibus sem commodo rutrum pulvinar. In sollicitudin ante magna, vel facilisis
        tellus fringilla vel. Nam purus ex, tincidunt eget varius at, euismod nec elit. Curabitur
        consequat nulla vel nisi iaculis, ut mattis odio congue. Nulla et mollis tortor, a maximus
        justo. Donec semper eros sed nunc rhoncus condimentum. Donec nibh purus, interdum non lectus
        id, porta convallis eros.

           Sed hendrerit, dui non sagittis sollicitudin, enim ex imperdiet sapien, et maximus lorem
        dolor a enim. Nulla risus nisl, vestibulum at ornare posuere, congue in felis. Duis sagittis
        id diam a varius. Donec viverra eu orci sodales commodo. Cras metus tortor, sodales vitae
        auctor non, scelerisque a ante. Quisque sodales nisi libero, ut lobortis enim suscipit ut.
        Cras mi ipsum, maximus non bibendum sit amet, pharetra quis ipsum. Vestibulum venenatis, odi
        at hendrerit pretium, tellus diam auctor justo, non posuere quam mauris id nisl. Nam dolor
        nibh, molestie et lectus et, scelerisque porta elit. Vestibulum viverra condimentum auctor.
        In eros tortor, convallis sed quam eu, ultrices malesuada purus. Integer lorem quam,
        ultricies at est consectetur, sagittis porttitor eros. Proin non risus vitae lacus
        consectetur malesuada non pulvinar justo. Aliquam mollis nisi nunc, sit amet vulputate metus
        sollicitudin vel.

           Quisque auctor varius fermentum. Praesent mollis justo sit amet est consectetur, in
        volutpat tellus mollis. Aenean at bibendum eros, at finibus nibh. Phasellus nec mi sem.
        Mauris pellentesque dui sit amet lobortis aliquam. Ut nec massa at urna aliquam gravida vel
        in magna. Donec consectetur sapien magna, a auctor sapien placerat eu.

           Pellentesque aliquet ante sed lacus gravida rutrum. Maecenas euismod varius felis, nec
        tempus metus tempus et. Nam convallis augue a massa scelerisque, vel pharetra dolor
        scelerisque. Fusce porttitor mi a magna rutrum condimentum. Aliquam fermentum at turpis at
        auctor. Nulla ut suscipit dui. Donec rutrum viverra aliquam. Donec elementum nisl sapien, ac
        blandit risus porta facilisis. Proin tellus dolor, ornare vel magna sit amet, maximus
        volutpat felis. Aenean euismod aliquet purus, at finibus nunc elementum eu. Ut faucibus
        ullamcorper consectetur. Aenean egestas arcu id mauris elementum, at sollicitudin est
        congue. Sed a odio mattis, sollicitudin erat ut, tristique dolor. Aliquam luctus risus quis
        tellus semper, a vestibulum nulla viverra.

           Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos
        himenaeos. Vestibulum sit amet nisi felis. Praesent condimentum consequat lacus pulvinar
        imperdiet. Praesent vel condimentum quam. Maecenas eu aliquet odio. Vestibulum sed nulla
        mattis lacus porta bibendum a ac eros. Nunc porttitor sagittis laoreet. Duis porta eros at
        congue tristique. Pellentesque quis fringilla neque, a hendrerit tellus. Pellentesque ac
        nibh ac tellus pulvinar porttitor et in est. Integer blandit lorem libero, eu pulvinar
        tellus posuere eget. Vivamus pretium nulla ligula, ut dapibus massa fringilla in.
        Suspendisse consectetur sem non elit porta, id pellentesque erat dapibus. Quisque ex mi,
        tempus et hendrerit nec, gravida quis odio. Ut at mi in leo scelerisque venenatis.

           Ut sed tellus in risus tincidunt tempor ut at arcu. Maecenas ut convallis justo. In
        rutrum urna eu massa rhoncus, eget condimentum augue vehicula. Nullam eget placerat erat.
        Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.
        Aenean at volutpat orci, a lobortis dolor. Sed consequat facilisis interdum. Fusce libero
        neque, fringilla in congue a, vehicula rutrum ipsum. Nam ornare placerat vestibulum. Proin
        nec orci velit. Pellentesque scelerisque gravida diam, ut tristique libero tempus eu. Nam
        semper lacus nec nulla volutpat imperdiet non eget tortor. Sed et pellentesque ligula.

           Aenean a dolor dolor. Curabitur ut placerat lacus, sit amet aliquet orci. Aliquam erat
        volutpat. Cras mollis sit amet lectus ornare pretium. Vestibulum fringilla orci vel est
        iaculis, at mattis quam condimentum. Vivamus semper elit consectetur lectus gravida, in
        sollicitudin mi fringilla. Donec eget lorem in orci blandit aliquam. Pellentesque libero
        tellus, dignissim id augue et, vulputate viverra nisl. Cum sociis natoque penatibus et
        magnis dis parturient montes, nascetur ridiculus mus. Donec ac vulputate metus, eu suscipit
        sem. Donec placerat, nulla at sodales hendrerit, orci tortor vestibulum purus, non pharetra
        nulla purus posuere arcu.

           Quisque feugiat elit sem, ac interdum diam pharetra nec. Curabitur sem libero, vulputate
        eu libero vitae, volutpat facilisis ligula. Aenean maximus erat laoreet, interdum ante in,
        ultrices nisi. Nullam nec efficitur sapien. Integer feugiat et tortor ac bibendum. Donec a
        scelerisque tortor. Cras quis viverra diam, vitae viverra ipsum. Aliquam ultrices neque sem,
        congue sodales elit tempus sit amet. Pellentesque habitant morbi tristique senectus et netus
        et malesuada fames ac turpis egestas. Sed dignissim ipsum eget diam rhoncus, ut finibus
        nulla pretium. Morbi suscipit nibh vel nisl posuere molestie. Maecenas posuere turpis et
        rutrum consectetur. Morbi venenatis arcu non gravida vulputate. Vivamus auctor tellus
        ullamcorper ligula vestibulum cursus. Nunc gravida sit amet nisl quis facilisis.

           Praesent ut justo vestibulum, accumsan mi et, feugiat purus. Nullam pulvinar iaculis
        pharetra. Aliquam pulvinar risus sit amet elit suscipit tincidunt. In hac habitasse platea
        dictumst. Etiam eget velit ac magna lacinia efficitur. Vestibulum ante ipsum primis in
        faucibus orci luctus et ultrices posuere cubilia Curae; Cras volutpat tempus sollicitudin.
        Ut et ante elit.

           Sed ac tortor justo. Fusce sed metus libero. Duis sagittis tortor ac ante sollicitudin,
        nec efficitur nibh euismod. Donec porttitor cursus quam, in aliquam lorem feugiat ut.
        Aliquam tempor lacus eu feugiat feugiat. Nunc pulvinar, libero at auctor commodo, metus diam
        commodo lorem, in feugiat elit ex non ligula. Quisque at vestibulum sapien, nec facilisis
        neque. Aenean luctus, arcu ut rhoncus luctus, est massa rhoncus mauris, nec luctus urna sem
        quis massa. Nam elit felis, congue et ligula eget, ultricies tincidunt erat. Vivamus
        eleifend no dui ac dictum. In nulla justo, pulvinar ut tristique sed, congue et orci.

           Quisque imperdiet mi lectus, ac scelerisque augue posuere ut. Duis non pulvinar ipsum,
        finibus risus. Donec ullamcorper nisl at sodales lobortis. Mauris neque leo, vestibulum sit
        amet placerat vel, aliquet vel sapien. Morbi massa tellus, scelerisque quis nisl in, feugiat
        posuere augue. Aenean congue sem ut ipsum vulputate rhoncus vitae at eros. Maecenas in velit
        orci pellentesque lobortis ac at felis. Vestibulum odio quam, lacinia dapibus ornare eu,
        vulputate a eros. Curabitur eleifend ornare tellus, non sollicitudin justo viverra in. Sed
        sodales neque et lacus semper, in pharetra est consequat. Nunc vehicula volutpat lectus, sit
        amet scelerisque nisi. Aenean sollicitudin, sem at ultricies efficitur, eros metus
        nisl, et fringilla felis lacus non orci. Praesent eros libero, finibus in purus id,
        tempor ipsum. Donec suscipit libero velit. Aliquam quis diam pharetra, cursus ipsum in,
        gravida metus. Maecenas ultrices ligula a ullamcorper scelerisque.

           Donec tincidunt felis turpis, id venenatis neque convallis in. Proin euismod ligula nec
        urna vulputate, sed elementum mauris ultrices. Ut efficitur sem vel mi vestibulum placerat.
        Sed fermentum lacus nec metus dictum, a commodo quam fermentum. Sed vel vulputate magna.
        Integer convallis nisi sit amet mi lobortis pellentesque. In egestas porttitor elit eu
        scelerisque. Suspendisse eleifend vel enim quis tincidunt. Sed placerat risus et pretium
        porttitor. Nam justo mi, cursus eu pellentesque vel, bibendum ut nisl. Nulla condimentum
        lorem, non sagittis lorem volutpat vitae. Mauris nec libero lorem. Vestibulum lacus ex,
        vulputate non massa vitae, pellentesque vestibulum dolor.

           Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae;
        Suspendisse vitae erat nisl. Vestibulum elit ante, semper et semper sit amet, fringilla
        sapien. Morbi ac nisi sit amet turpis tincidunt mattis ac eget nisl. Nunc a venenatis quam,
        facilisis maximus odio. Aliquam erat volutpat. Maecenas leo enim, ornare a magna quis,
        venenatis ornare nulla. Aliquam venenatis nibh et elit tincidunt, ut egestas lorem finibus.
        Integer iaculis dolor sed enim blandit vestibulum. Nullam vel libero ultricies, sagittis
        tortor non, molestie eros.</string>
</resources>
