Found 171 repositories(showing 30)
FonaTech
Clouds Coder is a local-first coding agent platform centered on separating the CLI execution plane from the Web user plane, with Web UI, Skills Studio, resilient streaming, and long-task recovery controls.
sathish316
Pied Piper is a team of AI SubAgents that can autonomously/semi-autonomously work on long-running or complex coding tasks with full End-to-end tracking and human-in-the-loop approvals. Subagents can run on Claude Code, Coding CLIs that support SubAgents, Docker, Cloud Desktop etc.
MagaluCloud
MGC CLI (Command Line Interface) is a tool that allows users to interact with Magalu Cloud (MGC) services through the command line. It's available for macOS, Linux, and Windows on AMD64 and ARM architectures.
javonn13
This course will teach you AWS basics right through to advanced cloud computing concepts. Ideal for beginners - absolutely no cloud computing experience is required! There are lots of hands-on exercises using an AWS free tier account to give you practical experience with Amazon Web Services. Visual slides and animations will help you gain a deep understanding of Cloud Computing. This is the perfect course for Beginners to the Cloud who want to learn the fundamentals of AWS - putting you in the perfect position to launch your AWS Certification journey and career in cloud computing. 👍 Download the course code and files here: https://digitalcloud.training/aws-bas... 👍 Access your free Guide to AWS Certifications (ebook) here: https://digitalcloud.training/aws-fre... 🎥 Course developed by Neal Davis - Founder of Digital Cloud Training 🔗 Check out the Digital Cloud Training YouTube channel: https://www.youtube.com/c/digitalclou... ⭐️ Course Contents ⭐️ (00:00:00) Course Introduction Section 1 - AWS Basics (00:00:53) Introduction (00:01:19) Amazon Web Services Overview (00:04:26) AWS Global Infrastructure (00:07:35) AWS Pricing (00:15:37) Setup your AWS Free Tier Account (00:21:19) Create a Billing Alarm (00:27:34) IAM Overview (00:32:47) Create IAM User and Group (00:37:38) Amazon Virtual Private Cloud (VPC) (00:48:36) Security Groups and Network ACLs (00:58:40) AWS Public and Private Services (01:00:51) Install the AWS Command Line Interface Section 2 - Amazon Elastic Compute Cloud (EC2) (01:02:08) Introduction (01:02:36) Amazon EC2 Overview (01:08:00) Launching an Amazon EC2 Instance (01:16:42) Connecting to Amazon EC2 Instances (01:27:48) Create a Website Using User Data (01:33:52) Using Access Keys with EC2 (01:34:50) Using IAM Roles with EC2 (01:39:05) Scale Elastically with Amazon EC2 Auto Scaling (01:47:47) Create a Target Tracking Scaling Policy (01:55:43) Add Load Balancing with Amazon ELB Section 3 - AWS Storage Services (02:09:52) Introduction (02:10:28) AWS Storage Services Overview (02:12:40) Create an Attach EBS Volume (02:20:47) Instance Store Volumes (02:23:34) EBS Snapshots and AMIs (02:31:38) Create Amazon EFS File System (02:40:26) Amazon S3 Create Bucket and Make Public (02:47:32) Working with S3 Objects from the AWS CLI Section 4 - AWS Databases (02:52:49) Introduction (02:53:28) Amazon RDS Overview (02:59:52) Create Amazon RDS Multi-AZ (03:10:35) Add an Amazon RDS Read Replica (03:16:18) Install WordPress on EC2 with RDS Database (03:23:56) Amazon DynamoDB Section 5 - Automation on AWS (03:34:34) Introduction (03:35:34) How to Deploy Infrastructure Using AWS CloudFormation (03:37:36) Create Simple Stacks with AWS CloudFormation (03:47:52) Create Complex Stack with AWS CloudFormation (03:56:45) Deploy an Application Using AWS Elastic Beanstalk Section 6 - DevOps on AWS (04:02:00) Introduction (04:02:43) Continuous Integration and Continuous Delivery (CI/CD) (04:05:55) AWS CodePipeline with AWS Elastic Beanstalk (04:15:26) Create AWS CodeStar Project Section 7 - DNS Services and Content Delivery (04:25:47) Introduction (04:26:23) Amazon Route 53 Overview and Routing Policies (04:30:22) Register Domain Using Route 53 (04:35:44) Create Amazon CloudFront Distribution with S3 Static Website (04:44:30) Add an SSL/TLS Certificate and Route 53 Alias Record Section 8 - Docker Containers and Serverless Computing (04:53:35) Introduction (04:54:34) Docker Containers on Amazon ECS (05:06:06) Serverless with AWS Lambda Section 9 - Application Integration and Loose Coupling (05:13:12) Introduction (05:14:01) Amazon SNS and Amazon SQS (05:16:32) AWS Lambda to Amazon SQS Event Source Mapping (05:22:49) Serverless Application - Amazon SQS, SNS, and Lambda 🔗 Digital Cloud Training: https://digitalcloud.training/ 🔗 LinkedIn: https://www.linkedin.com/in/nealkdavis/ 🔗 Twitter: https://twitter.com/nealkdavis 🔗 Instagram: https://www.instagram.com/digitalclou... 👍 AWS Cloud Practitioner - https://digitalcloud.training/amazon-... 👍 AWS Solutions Architect Associate - https://digitalcloud.training/amazon-...
Tinkprocodes
This repo is a fork from main repo and will usually have new features bundled faster than main repo (and maybe bundle some bugs, too). # Unofficial Facebook Chat API <img alt="version" src="https://img.shields.io/github/package-json/v/ProCoderMew/fca-unofficial?label=github&style=flat-square"> Facebook now has an official API for chat bots [here](https://developers.facebook.com/docs/messenger-platform). This API is the only way to automate chat functionalities on a user account. We do this by emulating the browser. This means doing the exact same GET/POST requests and tricking Facebook into thinking we're accessing the website normally. Because we're doing it this way, this API won't work with an auth token but requires the credentials of a Facebook account. _Disclaimer_: We are not responsible if your account gets banned for spammy activities such as sending lots of messages to people you don't know, sending messages very quickly, sending spammy looking URLs, logging in and out very quickly... Be responsible Facebook citizens. See [below](#projects-using-this-api) for projects using this API. ## Install If you just want to use fca-unofficial, you should use this command: ```bash npm install procodermew/fca-unofficial ``` It will download `fca-unofficial` from NPM repositories ## Testing your bots If you want to test your bots without creating another account on Facebook, you can use [Facebook Whitehat Accounts](https://www.facebook.com/whitehat/accounts/). ## Example Usage ```javascript const login = require("fca-unofficial"); // Create simple echo bot login({email: "FB_EMAIL", password: "FB_PASSWORD"}, (err, api) => { if(err) return console.error(err); api.listen((err, message) => { api.sendMessage(message.body, message.threadID); }); }); ``` Result: <img width="517" alt="screen shot 2016-11-04 at 14 36 00" src="https://cloud.githubusercontent.com/assets/4534692/20023545/f8c24130-a29d-11e6-9ef7-47568bdbc1f2.png"> ## Documentation You can see it [here](DOCS.md). ## Main Functionality ### Sending a message #### api.sendMessage(message, threadID[, callback][, messageID]) Various types of message can be sent: * *Regular:* set field `body` to the desired message as a string. * *Sticker:* set a field `sticker` to the desired sticker ID. * *File or image:* Set field `attachment` to a readable stream or an array of readable streams. * *URL:* set a field `url` to the desired URL. * *Emoji:* set field `emoji` to the desired emoji as a string and set field `emojiSize` with size of the emoji (`small`, `medium`, `large`) Note that a message can only be a regular message (which can be empty) and optionally one of the following: a sticker, an attachment or a url. __Tip__: to find your own ID, you can look inside the cookies. The `userID` is under the name `c_user`. __Example (Basic Message)__ ```js const login = require("fca-unofficial"); login({email: "FB_EMAIL", password: "FB_PASSWORD"}, (err, api) => { if(err) return console.error(err); var yourID = "000000000000000"; var msg = "Hey!"; api.sendMessage(msg, yourID); }); ``` __Example (File upload)__ ```js const login = require("fca-unofficial"); login({email: "FB_EMAIL", password: "FB_PASSWORD"}, (err, api) => { if(err) return console.error(err); // Note this example uploads an image called image.jpg var yourID = "000000000000000"; var msg = { body: "Hey!", attachment: fs.createReadStream(__dirname + '/image.jpg') } api.sendMessage(msg, yourID); }); ``` ------------------------------------ ### Saving session. To avoid logging in every time you should save AppState (cookies etc.) to a file, then you can use it without having password in your scripts. __Example__ ```js const fs = require("fs"); const login = require("fca-unofficial"); var credentials = {email: "FB_EMAIL", password: "FB_PASSWORD"}; login(credentials, (err, api) => { if(err) return console.error(err); fs.writeFileSync('appstate.json', JSON.stringify(api.getAppState())); }); ``` Alternative: Use [c3c-fbstate](https://github.com/c3cbot/c3c-fbstate) to get fbstate.json (appstate.json) ------------------------------------ ### Listening to a chat #### api.listen(callback) Listen watches for messages sent in a chat. By default this won't receive events (joining/leaving a chat, title change etc…) but it can be activated with `api.setOptions({listenEvents: true})`. This will by default ignore messages sent by the current account, you can enable listening to your own messages with `api.setOptions({selfListen: true})`. __Example__ ```js const fs = require("fs"); const login = require("fca-unofficial"); // Simple echo bot. It will repeat everything that you say. // Will stop when you say '/stop' login({appState: JSON.parse(fs.readFileSync('appstate.json', 'utf8'))}, (err, api) => { if(err) return console.error(err); api.setOptions({listenEvents: true}); var stopListening = api.listenMqtt((err, event) => { if(err) return console.error(err); api.markAsRead(event.threadID, (err) => { if(err) console.error(err); }); switch(event.type) { case "message": if(event.body === '/stop') { api.sendMessage("Goodbye…", event.threadID); return stopListening(); } api.sendMessage("TEST BOT: " + event.body, event.threadID); break; case "event": console.log(event); break; } }); }); ``` ## FAQS 1. How do I run tests? > For tests, create a `test-config.json` file that resembles `example-config.json` and put it in the `test` directory. From the root >directory, run `npm test`. 2. Why doesn't `sendMessage` always work when I'm logged in as a page? > Pages can't start conversations with users directly; this is to prevent pages from spamming users. 3. What do I do when `login` doesn't work? > First check that you can login to Facebook using the website. If login approvals are enabled, you might be logging in incorrectly. For how to handle login approvals, read our docs on [`login`](DOCS.md#login). 4. How can I avoid logging in every time? Can I log into a previous session? > We support caching everything relevant for you to bypass login. `api.getAppState()` returns an object that you can save and pass into login as `{appState: mySavedAppState}` instead of the credentials object. If this fails, your session has expired. 5. Do you support sending messages as a page? > Yes, set the pageID option on login (this doesn't work if you set it using api.setOptions, it affects the login process). > ```js > login(credentials, {pageID: "000000000000000"}, (err, api) => { … } > ``` 6. I'm getting some crazy weird syntax error like `SyntaxError: Unexpected token [`!!! > Please try to update your version of node.js before submitting an issue of this nature. We like to use new language features. 7. I don't want all of these logging messages! > You can use `api.setOptions` to silence the logging. You get the `api` object from `login` (see example above). Do > ```js > api.setOptions({ > logLevel: "silent" > }); > ``` <a name="projects-using-this-api"></a> ## Projects using this API: - [c3c](https://github.com/lequanglam/c3c) - A bot that can be customizable using plugins. Support Facebook & Discord. - [Miraiv2](https://github.com/miraiPr0ject/miraiv2) - A simple Facebook Messenger Bot made by CatalizCS and SpermLord. ## Projects using this API (original repository, facebook-chat-api): - [Messer](https://github.com/mjkaufer/Messer) - Command-line messaging for Facebook Messenger - [messen](https://github.com/tomquirk/messen) - Rapidly build Facebook Messenger apps in Node.js - [Concierge](https://github.com/concierge/Concierge) - Concierge is a highly modular, easily extensible general purpose chat bot with a built in package manager - [Marc Zuckerbot](https://github.com/bsansouci/marc-zuckerbot) - Facebook chat bot - [Marc Thuckerbot](https://github.com/bsansouci/lisp-bot) - Programmable lisp bot - [MarkovsInequality](https://github.com/logicx24/MarkovsInequality) - Extensible chat bot adding useful functions to Facebook Messenger - [AllanBot](https://github.com/AllanWang/AllanBot-Public) - Extensive module that combines the facebook api with firebase to create numerous functions; no coding experience is required to implement this. - [Larry Pudding Dog Bot](https://github.com/Larry850806/facebook-chat-bot) - A facebook bot you can easily customize the response - [fbash](https://github.com/avikj/fbash) - Run commands on your computer's terminal over Facebook Messenger - [Klink](https://github.com/KeNt178/klink) - This Chrome extension will 1-click share the link of your active tab over Facebook Messenger - [Botyo](https://github.com/ivkos/botyo) - Modular bot designed for group chat rooms on Facebook - [matrix-puppet-facebook](https://github.com/matrix-hacks/matrix-puppet-facebook) - A facebook bridge for [matrix](https://matrix.org) - [facebot](https://github.com/Weetbix/facebot) - A facebook bridge for Slack. - [Botium](https://github.com/codeforequity-at/botium-core) - The Selenium for Chatbots - [Messenger-CLI](https://github.com/AstroCB/Messenger-CLI) - A command-line interface for sending and receiving messages through Facebook Messenger. - [AssumeZero-Bot](https://github.com/AstroCB/AssumeZero-Bot) – A highly customizable Facebook Messenger bot for group chats. - [Miscord](https://github.com/Bjornskjald/miscord) - An easy-to-use Facebook bridge for Discord. - [chat-bridge](https://github.com/rexx0520/chat-bridge) - A Messenger, Telegram and IRC chat bridge. - [messenger-auto-reply](https://gitlab.com/theSander/messenger-auto-reply) - An auto-reply service for Messenger. - [BotCore](https://github.com/AstroCB/BotCore) – A collection of tools for writing and managing Facebook Messenger bots. - [mnotify](https://github.com/AstroCB/mnotify) – A command-line utility for sending alerts and notifications through Facebook Messenger.
ruvnet
Agentic DevOps is a powerful, interactive Command-Line Interface (CLI) designed to streamline and automate the development, deployment, and management of applications on various Cloud Providers.
BabyJ723
# Awesome Keycloak [](https://github.com/sindresorhus/awesome) # [<img src="https://www.keycloak.org/resources/images/keycloak_logo_480x108.png">](https://github.com/thomasdarimont/awesome-keycloak) > Carefully curated list of awesome Keycloak resources. A curated list of resources for learning about the Open Source Identity and Access Management solution Keycloak. Contains books, websites, blog posts, links to github Repositories. # Contributing Contributions welcome. Add links through pull requests or create an issue to start a discussion. [Please refer to the contributing guide for details](CONTRIBUTING.md). # Contents * [General](#general) * [Documentation](#docs) * [Keycloak Website](http://www.keycloak.org) * [Current Documentation](http://www.keycloak.org/documentation.html) * [Archived Documentation](http://www.keycloak.org/documentation-archive.html) * [Mailing Lists](#mailing-lists) * [User Mailing List](#user-mailing-list) * [Developer Mailing List](#dev-mailing-list) * [Mailing List Search](#mailing-list-search) * [Books](#books) * [Articles](#articles) * [Talks](#talks) * [Presentations](#presentations) * [Video Playlists](#video-playlists) * [Community Extensions](#community-extensions) * [Integrations](#integrations) * [Themes](#themes) * [Docker](#docker) * [Deployment Examples](#deployment-examples) * [Example Projects](#example-projects) * [Benchmarks](#benchmarks) * [Help](#help) * [Commercial Offerings](#commercial-offerings) * [Miscellaneous](#miscellaneous) # General ## Documentation * [Keycloak Website](http://www.keycloak.org/) * [Current Documentation](http://www.keycloak.org/documentation.html) * [Archived Documentation](http://www.keycloak.org/documentation-archive.html) * [Product Documentation for Red Hat Single Sign-On](https://access.redhat.com/documentation/en/red-hat-single-sign-on/) ## Discussion Groups and Mailing Lists * [Keycloak Users Google Group](https://groups.google.com/forum/#!forum/keycloak-user) * [Keycloak Developers Google Group](https://groups.google.com/forum/#!forum/keycloak-dev) * [Keycloak Discourse Group](https://keycloak.discourse.group/) * [Keycloak Developer Chat](https://keycloak.zulipchat.com) * [Inactive - User Mailing List](https://lists.jboss.org/mailman/listinfo/keycloak-user) * [Inactive - Developer Mailing List](https://lists.jboss.org/mailman/listinfo/keycloak-dev) * [Mailing List Search](http://www.keycloak.org/search) * [Keycloak Subreddit](https://www.reddit.com/r/keycloak) ## Books * [Keycloak - Identity and Access Management for Modern Applications](https://www.packtpub.com/product/keycloak-identity-and-access-management-for-modern-applications/9781800562493) ## Articles * [How to get Keycloak working with Docker](https://www.ivonet.nl/2015/05/23/Keycloak-Docker/) * [Single-Sign-On for Microservices and/or Java EE applications with Keycloak SSO](http://www.n-k.de/2016/06/keycloak-sso-for-microservices.html) * [Keycloak Admin Client(s) - multiple ways to manage your SSO system](http://www.n-k.de/2016/08/keycloak-admin-client.html) * [How to get the AccessToken of Keycloak in Spring Boot and/or Java EE](http://www.n-k.de/2016/05/how-to-get-accesstoken-from-keycloak-springboot-javaee.html) * [JWT authentication with Vert.x, Keycloak and Angular 2](http://paulbakker.io/java/jwt-keycloak-angular2/) * [Authenticating via Kerberos with Keycloak and Windows 2008 Active Directory](http://matthewcasperson.blogspot.de/2015/07/authenticating-via-kerberos-with.html) * [Deploying Keycloak with Ansible](https://adam.younglogic.com/2016/01/deploying-keycloak-via-ansible/) * [Easily secure your Spring Boot applications with Keycloak](https://developers.redhat.com/blog/2017/05/25/easily-secure-your-spring-boot-applications-with-keycloak/) * [How Red Hat re-designed its Single Sign On (SSO) architecture, and why](https://developers.redhat.com/blog/2016/10/04/how-red-hat-re-designed-its-single-sign-on-sso-architecture-and-why/) * [OAuth2, JWT, Open-ID Connect and other confusing things](http://giallone.blogspot.de/2017/06/oath2.html) * [X509 Authentication with Keycloak and JBoss Fuse](https://sjhiggs.github.io/fuse/sso/x509/smartcard/2017/03/29/fuse-hawtio-keycloak.html) * [Running Keycloak on OpenShift 3](https://medium.com/@sbose78/running-keycloak-on-openshift-3-8d195c0daaf6) * [Introducing Keycloak for Identity and Access Management](https://www.thomasvitale.com/introducing-keycloak-identity-access-management/) * [Keycloak Basic Configuration for Authentication and Authorisation](https://www.thomasvitale.com/keycloak-configuration-authentication-authorisation/) * [Keycloak on OpenShift Origin](https://medium.com/@james_devcomb/keycloak-on-openshift-origin-ee81d01dac97) * [Identity Management, One-Time-Passwords and Two-Factor-Auth with Spring Boot and Keycloak](http://www.hascode.com/2017/11/identity-management-one-time-passwords-and-two-factor-auth-with-spring-boot-and-keycloak/) * [Keycloak Identity Brokering with Openshift](https://developers.redhat.com/blog/2017/12/06/keycloak-identity-brokering-openshift/) * [OpenID Connect Identity Brokering with Red Hat Single Sign-On](https://developers.redhat.com/blog/2017/10/18/openid-connect-identity-brokering-red-hat-single-sign/) * [Authentication & user management is hard](https://eclipsesource.com/blogs/2018/01/11/authenticating-reverse-proxy-with-keycloak/) * [Securing Nginx with Keycloak](https://edhull.co.uk/blog/2018-06-06/keycloak-nginx) * [Secure kibana dashboards using keycloak](https://aboullaite.me/secure-kibana-keycloak/) * [Configuring NGINX for OAuth/OpenID Connect SSO with Keycloak/Red Hat SSO](https://developers.redhat.com/blog/2018/10/08/configuring-nginx-keycloak-oauth-oidc/) * [Keycloak Clustering Setup and Configuration Examples](https://github.com/fit2anything/keycloak-cluster-setup-and-configuration) * [MicroProfile JWT with Keycloak](https://kodnito.com/posts/microprofile-jwt-with-keycloak/) * [Keycloak Essentials](https://medium.com/keycloak/keycloak-essentials-86254b2f1872) * [SSO-session failover with Keycloak and AWS S3](https://medium.com/@georgijsr/sso-session-failover-with-keycloak-and-aws-s3-e0b1db985e12) * [KTOR and Keycloak: authentication with OpenId](https://medium.com/slickteam/ktor-and-keycloak-authentication-with-openid-ecd415d7a62e) * [Keycloak: Core concepts of open source identity and access management](https://developers.redhat.com/blog/2019/12/11/keycloak-core-concepts-of-open-source-identity-and-access-management) * [Who am I? Keycloak Impersonation API](https://blog.softwaremill.com/who-am-i-keycloak-impersonation-api-bfe7acaf051a) * [Setup Keycloak Server on Ubuntu 18.04](https://medium.com/@hasnat.saeed/setup-keycloak-server-on-ubuntu-18-04-ed8c7c79a2d9) * [Getting started with Keycloak](https://robferguson.org/blog/2019/12/24/getting-started-with-keycloak/) * [Angular, OpenID Connect and Keycloak](https://robferguson.org/blog/2019/12/29/angular-openid-connect-keycloak/) * [Angular, OAuth 2.0 Scopes and Keycloak](https://robferguson.org/blog/2019/12/31/angular-oauth2-keycloak/) * [Keycloak, Flowable and OpenLDAP](https://robferguson.org/blog/2020/01/03/keycloak-flowable-and-openldap/) * [How to exchange token from an external provider to a keycloak token](https://www.mathieupassenaud.fr/token-exchange-keycloak/) * [Building an Event Listener SPI (Plugin) for Keycloak](https://dev.to/adwaitthattey/building-an-event-listener-spi-plugin-for-keycloak-2044) * [Keycloak user migration – connect your legacy authentication system to Keycloak](https://codesoapbox.dev/keycloak-user-migration/) * [Keycloak Authentication and Authorization in GraphQL](https://medium.com/@darahayes/keycloak-authentication-and-authorization-in-graphql-ad0a1685f7da) * [Kong / Konga / Keycloak: securing API through OIDC](https://github.com/d4rkstar/kong-konga-keycloak) * [KeyCloak: Custom Login theme](https://codehumsafar.wordpress.com/2018/09/11/keycloak-custom-login-theme/) * [Keycloak: Use background color instead of background image in Custom Login theme](https://codehumsafar.wordpress.com/2018/09/21/keycloak-use-background-color-instead-of-background-image-in-custom-login-theme/) * [How to turn off the Keycloak theme cache](https://keycloakthemes.com/blog/how-to-turn-off-the-keycloak-theme-cache) * [How to add a custom field to the Keycloak registration page](https://keycloakthemes.com/blog/how-to-add-custom-field-keycloak-registration-page) * [How to setup Sign in with Google using Keycloak](https://keycloakthemes.com/blog/how-to-setup-sign-in-with-google-using-keycloak) * [How to sign in users on Keycloak using Github](https://keycloakthemes.com/blog/how-to-sign-in-users-on-keycloak-using-github) * [Extending Keycloak SSO Capabilities with IBM Security Verify](https://community.ibm.com/community/user/security/blogs/jason-choi1/2020/06/10/extending-keycloak-sso-capabilities-with-ibm-secur) * [AWS SAML based User Federation using Keycloak](https://medium.com/@karanbir.tech/aws-connect-saml-based-identity-provider-using-keycloak-9b3e6d0111e6) * [AWS user account OpenID federation using Keycloak](https://medium.com/@karanbir.tech/aws-account-openid-federation-using-keycloak-40d22b952a43) * [How to Run Keycloak in HA on Kubernetes](https://blog.sighup.io/keycloak-ha-on-kubernetes/) * [How to create a Keycloak authenticator as a microservice?](https://medium.com/application-security/how-to-create-a-keycloak-authenticator-as-a-microservice-ad332e287b58) * [keycloak.ch | Installing & Running Keycloak](https://keycloak.ch/keycloak-tutorials/tutorial-1-installing-and-running-keycloak/) * [keycloak.ch | Configuring Token Exchange using the CLI](https://keycloak.ch/keycloak-tutorials/tutorial-token-exchange/) * [keycloak.ch | Configuring WebAuthn](https://keycloak.ch/keycloak-tutorials/tutorial-webauthn/) * [keycloak.ch | Configuring a SwissID integration](https://keycloak.ch/keycloak-tutorials/tutorial-swissid/) * [Getting Started with Service Accounts in Keycloak](https://medium.com/@mihirrajdixit/getting-started-with-service-accounts-in-keycloak-c8f6798a0675) * [Building cloud native apps: Identity and Access Management](https://dev.to/lukaszbudnik/building-cloud-native-apps-identity-and-access-management-1e5m) * [X.509 user certificate authentication with Red Hat’s single sign-on technology](https://developers.redhat.com/blog/2021/02/19/x-509-user-certificate-authentication-with-red-hats-single-sign-on-technology) * [Grafana OAuth with Keycloak and how to validate a JWT token](https://janikvonrotz.ch/2020/08/27/grafana-oauth-with-keycloak-and-how-to-validate-a-jwt-token/) * [How to setup a Keycloak server with external MySQL database on AWS ECS Fargate in clustered mode](https://jbjerksetmyr.medium.com/how-to-setup-a-keycloak-server-with-external-mysql-database-on-aws-ecs-fargate-in-clustered-mode-9775d01cd317) * [Extending Keycloak: adding API key authentication](http://www.zakariaamine.com/2019-06-14/extending-keycloak) * [Extending Keycloak: using a custom email sender](http://www.zakariaamine.com/2019-07-14/extending-keycloak2) * [Integrating Keycloak and OPA with Confluent](https://goraft.tech/2021/03/17/integrating-keycloak-and-opa-with-confluent.html) * [UMA 2.0 : User Managed Access - how to use it with bash](https://blog.please-open.it/uma/) ## Talks * [JDD2015 - Keycloak Open Source Identity and Access Management Solution](https://www.youtube.com/watch?v=TuEkj25lbd0) * [2015 Using Tomcat and Keycloak in an iFrame](https://www.youtube.com/watch?v=nF_lw7uIxao) * [2016 You've Got Microservices Now Secure Them](https://www.youtube.com/watch?v=SfVhqf-rMQY) * [2016 Keycloak: Open Source Single Sign On - Sebastian Rose - AOE conf (german)](https://www.youtube.com/watch?v=wbKw0Bwyne4) * [2016 Sécuriser ses applications back et front facilement avec Keycloak (french)](https://www.youtube.com/watch?v=bVidgluUcg0) * [2016 Keycloak and Red Hat Mobile Application Platform](https://www.youtube.com/watch?v=4NBgiHM5aOA) * [2016 Easily secure your Front and back applications with KeyCloak](https://www.youtube.com/watch?v=RGp4HUKikts) * [2017 Easily secure your Spring Boot applications with Keycloak - Part 1](https://developers.redhat.com/video/youtube/vpgRTPFDHAw/) * [2017 Easily secure your Spring Boot applications with Keycloak - Part 2](https://developers.redhat.com/video/youtube/O5ePCWON08Y/) * [2018 How to secure your Spring Apps with Keycloak by Thomas Darimont @ Spring I/O 2018](https://www.youtube.com/watch?v=haHFoeWUj0w) * [2018 DevNation Live | A Deep Dive into Keycloak](https://www.youtube.com/watch?v=ZxpY_zZ52kU) * [2018 IDM Europe: WSO2 Identity Server vs. Keycloak (Dmitry Kann)](https://www.youtube.com/watch?v=hnjBiGsEDoU) * [2018 JPrime|Building an effective identity and access management architecture with Keycloak (Sebastien Blanc)](https://www.youtube.com/watch?v=bMqcGkCvUVQ) * [2018 WJAX| Sichere Spring-Anwendungen mit Keycloak](https://www.youtube.com/watch?v=6Z490EMcafs) * [2019 Spring I/O | Secure your Spring Apps with Keycloak](https://www.youtube.com/watch?v=KrOd5wIkqls) * [2019 DevoxxFR | Maitriser sa gestion de l'identité avec Keycloak (L. Benoit, T. Recloux, S. Blanc)](https://www.youtube.com/watch?v=0cziL__0-K8) * [2019 DevConf | Fine - Grained Authorization with Keycloak SSO (Marek Posolda)](https://www.youtube.com/watch?v=yosg4St0iUw) * [2019 VoxxedDays Minsk | Bilding an effective identity and access management architecture with Keycloak (Sebastien Blanc)](https://www.youtube.com/watch?v=RupQWmYhrLA) * [2019 Single-Sign-On Authentifizierung mit dem Keycloak Identity Provider | jambit CoffeeTalk](https://www.youtube.com/watch?v=dnY6ORaFNY8) * [2020 Keycloak Team | Keycloak Pitch](https://www.youtube.com/watch?v=GZTN_VXjoQw) * [2020 Keycloak Team | Keycloak Overview](https://www.youtube.com/watch?v=duawSV69LDI) * [2020 Please-open.it : oauth2 dans le monde des ops (french)](https://www.youtube.com/watch?v=S-9X50QajmY) ## Presentations * [Keycloak 101](https://stevenolen.github.io/kc101-talk/#1) ## Video Playlists * [Keycloak Identity and Access Management by Łukasz Budnik](https://www.youtube.com/playlist?list=PLPZal7ksxNs0mgScrJxrggEayV-TPZ9sA) * [Keycloak by Niko Köbler](https://www.youtube.com/playlist?list=PLNn3plN7ZiaowUvKzKiJjYfWpp86u98iY) * [Keycloak Playlist by hexaDefence](https://youtu.be/35bflT_zxXA) * [Keycloak Tutorial Series by CodeLens](https://www.youtube.com/watch?v=Lr9WeIMtFow&list=PLeGNmkzI56BTjRxNGxUhh4k30FD_gy0pC) ## Clients * [Official Keycloak Node.js Admin Client](https://github.com/keycloak/keycloak-admin-client/) ("Extremely Experimental") * [Keycloak Node.js TypeScript Admin Client by Canner](https://github.com/Canner/keycloak-admin/) * [Keycloak Go Client by Cloudtrust](https://github.com/cloudtrust/keycloak-client) * [Keycloak Nest.js Admin Client by Relevant Fruit](https://github.com/relevantfruit/nestjs-keycloak-admin) ## Community Extensions * [Keycloak Extensions List](https://www.keycloak.org/extensions.html) * [Keycloak Benchmark Project](https://github.com/keycloak/keycloak-benchmark) * [Keycloak: Link IdP Login with User Provider](https://github.com/ohioit/keycloak-link-idp-with-user) * [Client Owner Manager: Control who can edit a client](https://github.com/cyclone-project/cyclone-client-registration) * [Keyloak Proxy written in Go](https://github.com/gambol99/keycloak-proxy) * [Script based ProtocolMapper extension for SAML](https://github.com/cloudtrust/keycloak-client-mappers) * [Realm export REST resource by Cloudtrust](https://github.com/cloudtrust/keycloak-export) * [Keycloak JDBC Ping Setup by moremagic](https://github.com/moremagic/keycloak-jdbc-ping) * [SMS 2 Factor Authentication for Keycloak via AWS SNS](https://github.com/nickpack/keycloak-sms-authenticator-sns) * [SMS 2 Factor Authentiation for Keycloak via SMS by Alliander](https://github.com/Alliander/keycloak-sms-authenticator) * [Identity Provider for vk.com](https://github.com/mrk08/keycloak-vk) * [CAS Protocol Support](https://github.com/Doccrazy/keycloak-protocol-cas) * [WS-FED Support](https://github.com/cloudtrust/keycloak-wsfed) * [Keycloak Discord Support](https://github.com/wadahiro/keycloak-discord) * [Keycloak Login with User Attribute](https://github.com/cnieg/keycloak-login-attribute) * [zonaut/keycloak-extensions](https://github.com/zonaut/keycloak-extensions) * [leroyguillaume/keycloak-bcrypt](https://github.com/leroyguillaume/keycloak-bcrypt) * [SPI Authenticator in Nodejs](https://www.npmjs.com/package/keycloak-rest-authenticator) * [Have I Been Pwned? Keycloak Password Policy](https://github.com/alexashley/keycloak-password-policy-have-i-been-pwned) * [Keycloak Eventlistener for Google Cloud Pub Sub](https://github.com/acesso-io/keycloak-event-listener-gcpubsub) * [Enforcing Password policy based on attributes of User Groups](https://github.com/sayedcsekuet/keycloak-user-group-based-password-policy) * [Verify Email with Link or Code by hokumski](https://github.com/hokumski/keycloak-verifyemailwithcode) * [Role-based Docker registry authentication](https://github.com/lifs-tools/keycloak-docker-role-mapper) * [SCIM for keycloak](https://github.com/Captain-P-Goldfish/scim-for-keycloak) * [Keycloak Kafka Module](https://github.com/SnuK87/keycloak-kafka) ## Integrations * [Official Keycloak Node.js Connect Adapter](https://github.com/keycloak/keycloak-nodejs-connect) * [Keycloak support for Aurelia](https://github.com/waynepennington/aurelia-keycloak) * [Keycloak OAuth2 Auth for PHP](https://github.com/stevenmaguire/oauth2-keycloak) * [Jenkins Keycloak Authentication Plugin](https://github.com/jenkinsci/keycloak-plugin) * [Meteor Keycloak Accounts](https://github.com/mxab/meteor-keycloak) * [HapiJS Keycloak Auth](https://github.com/felixheck/hapi-auth-keycloak) * [zmartzone mod_auth_openidc for Apache 2.x](https://github.com/zmartzone/mod_auth_openidc) * [Duo Security MFA Authentication for Keycloak](https://github.com/mulesoft-labs/keycloak-duo-spi) * [Extension Keycloak facilitant l'utilisation de FranceConnect](https://github.com/InseeFr/Keycloak-FranceConnect) * [Ambassador Keycloak Support](https://www.getambassador.io/reference/idp-support/keycloak/) * [Keycloak Python Client](https://github.com/akhilputhiry/keycloak-client) * [Keycloak Terraform Provider](https://github.com/mrparkers/terraform-provider-keycloak) * [Keycloak ADFS OpenID Connect](https://www.michaelboeynaems.com/keycloak-ADFS-OIDC.html) * [React/NextJS Keycloak Bindings](https://github.com/panz3r/react-keycloak) * [Keycloak Open-Shift integration](https://github.com/keycloak/openshift-integration) * [Keycloak, Kong and Konga setup scripts (local development)](https://github.com/JaouherK/Kong-konga-Keycloak) * [SSO for Keycloak and Nextcloud with SAML](https://stackoverflow.com/questions/48400812/sso-with-saml-keycloak-and-nextcloud) * [Keycloak Connect GraphQL Adapter for Node.js](https://github.com/aerogear/keycloak-connect-graphql) * [python-keycloak](https://github.com/marcospereirampj/python-keycloak) * [Keycloak and PrivacyId3a docker-compose (local development)](https://github.com/JaouherK/keycloak-privacyIdea) * [Nerzal/gocloak Golang Keycloak API Package](https://github.com/Nerzal/gocloak) * [Apple Social Identity Provider for Keycloak](https://github.com/BenjaminFavre/keycloak-apple-social-identity-provider) ## Quick demo Videos * [Keycloak with istio envoy jwt-auth proxy](https://www.youtube.com/watch?v=wscX7JMfuBI) ## Themes * [Community Keycloak Ionic Theme](https://github.com/lfryc/keycloak-ionic-theme) * [A Keycloak theme based on the AdminLTE UI library](https://github.com/MAXIMUS-DeltaWare/adminlte-keycloak-theme) * [GOV.UK Theme](https://github.com/UKHomeOffice/keycloak-theme-govuk) * [Carbon Design](https://github.com/httpsOmkar/carbon-keycloak-theme) * [Modern](https://keycloakthemes.com/themes/modern) * [Adminlte](https://git.uptic.nl/uptic-public-projects/uptic-keyclock-theme-adminlte) * [keycloakify: Create Keycloak themes using React](https://github.com/InseeFrLab/keycloakify) ## Docker * [Official Keycloak Docker Images](https://github.com/jboss-dockerfiles/keycloak) * [Keycloak Examples as Docker Image](https://hub.docker.com/r/jboss/keycloak-examples) * [Keycloak Maven SDK for managing the entire lifecycle of your extensions with Docker](https://github.com/OpenPj/keycloak-docker-quickstart) ## Kubernetes * [Deprecated Keycloak Helm Chart](https://github.com/codecentric/helm-charts/tree/master/charts/keycloak) * [codecentric Keycloak Helm Chart](https://github.com/codecentric/helm-charts/tree/master/charts/keycloak) * [Import / Export Keycloak Config](https://gist.github.com/unguiculus/19618ef57b1863145262191944565c9d) * [keycloak-operator](https://github.com/keycloak/keycloak-operator) ## Tools * [keycloakmigration: Manage your Keycloak configuration with code](https://github.com/klg71/keycloakmigration) * [tool to autogenerate an OpenAPI Specification for Keycloak's Admin API](https://github.com/ccouzens/keycloak-openapi) * [oidc-bash-client](https://github.com/please-openit/oidc-bash-client) * [louketo-proxy (FKA Gatekeeper)](https://github.com/louketo/louketo-proxy) * [keycloak-config-cli: Configuration as Code for Keycloak](https://github.com/adorsys/keycloak-config-cli) * [Keycloak Pulumi](https://github.com/pulumi/pulumi-keycloak) * [Keycloak on AWS](https://github.com/aws-samples/keycloak-on-aws) * [aws-cdk construct library that allows you to create KeyCloak on AWS in TypeScript or Python](https://github.com/aws-samples/cdk-keycloak) * [keycloak-scanner Python CLI](https://github.com/NeuronAddict/keycloak-scanner) ## Deployment Examples * [Keycloak deployment with CDK on AWS with Fargate](https://github.com/aws-samples/cdk-keycloak) ## Example Projects * [Examples from Keycloak Book: Keycloak - Identity and Access Management for Modern Applications](https://github.com/PacktPublishing/Keycloak-Identity-and-Access-Management-for-Modern-Applications) * [Official Examples](https://github.com/keycloak/keycloak/tree/master/examples) * [Keycloak Quickstarts](https://github.com/keycloak/keycloak-quickstarts) * [Drupal 7.0 with Keycloak](https://gist.github.com/thomasdarimont/17fa146c4fb5440d7fc2ee6322ec392d) * [Securing Realm Resources With Custom Roles](https://github.com/dteleguin/custom-admin-roles) * [BeerCloak: a comprehensive KeyCloak extension example](https://github.com/dteleguin/beercloak) * [KeyCloak Extensions: Securing Realm Resources With Custom Roles](https://github.com/dteleguin/custom-admin-roles) * [Red Hat Single Sign-On Labs](https://github.com/RedHatWorkshops/red-hat-sso) * [Spring Boot Keycloak Tutorial](https://github.com/sebastienblanc/spring-boot-keycloak-tutorial) * [Custom Keycloak Docker Image of Computer Science House of RIT](https://github.com/ComputerScienceHouse/keycloak-docker) * [Example of custom password hash SPI for Keycloak](https://github.com/pavelbogomolenko/keycloak-custom-password-hash) * [Example for a custom http-client-provider with Proxy support](https://github.com/xiaoyvr/custom-http-client-provider) * [Monitor your keycloak with prometheus](https://github.com/larscheid-schmitzhermes/keycloak-monitoring-prometheus) * [Custom User Storage Provider .ear with jboss-cli setup](https://github.com/thomasdarimont/keycloak-user-storage-provider-demo) * [Keycloak - Experimental extensions by Stian Thorgersen/Keycloak](https://github.com/stianst/keycloak-experimental) * [Securing Spring Boot Admin & Actuator Endpoints with Keycloak](https://github.com/thomasdarimont/spring-boot-admin-keycloak-example) * [A Keycloak Mobile Implementation using Angular v4 and Ionic v3](https://github.com/tomjackman/keyonic-v2) * [Example for Securing Apps with Keycloak on Kubernetes](https://github.com/stianst/demo-kubernetes) * [Example for Securing AspDotNet Core Apps with Keycloak](https://github.com/thomasdarimont/kc-dnc-demo) * [Example for passing custom URL parameters to a Keycloak theme for dynamic branding](https://github.com/dteleguin/keycloak-dynamic-branding) * [Angular Webapp secured with Keycloak](https://github.com/CodepediaOrg/bookmarks.dev) * [Keycloak Theme Development Kit](https://github.com/anthonny/kit-keycloak-theme) * [Keycloak Clustering examples](https://github.com/ivangfr/keycloak-clustered) * [Keycloak Last Login Date Event Listener](https://github.com/ThoreKr/keycloak-last-login-event-listener) * [Keycloak Project Example (Customizations, Extensions, Configuration)](https://github.com/thomasdarimont/keycloak-project-example) * [Example of adding API Key authentication to Keycloak](https://github.com/zak905/keycloak-api-key-demo) ## Benchmarks * [Gatling based Benchmark by @rvansa](https://github.com/rvansa/keycloak-benchmark) ## Help * [Keycloak on Stackoverflow](https://stackoverflow.com/questions/tagged/keycloak) ## Commercial Offerings * [Red Hat Single Sign-On](https://access.redhat.com/products/red-hat-single-sign-on) * [INTEGSOFT UNIFIED USER CREDENTIALS WITH KEYCLOAK SSO](https://www.integsoft.cz/en/sso.html#what-is-sso) * [JIRA SSO Plugin by codecentric](https://marketplace.atlassian.com/plugins/de.codecentric.atlassian.oidc.jira-oidc-plugin/server/overview) * [Keycloak Competence Center by Inventage AG](https://keycloak.ch/) * [Keycloak as a Service](https://www.cloud-iam.com) ## Miscellaneous * [Find sites using Keycloak with google](https://www.google.de/search?q=inurl%3Aauth+inurl%3Arealms+inurl%3Aprotocol&oq=inurl%3A&client=ubuntu&sourceid=chrome&ie=UTF-8) * [Keycloak Dev Bookmarks](http://bookmarks.dev/search?q=keycloak) - Use the tag [keycloak](https://www.bookmarks.dev/tagged/keycloak) * [Use fail2ban to block brute-force attacks to keycloak server](https://gist.github.com/drmalex07/3eba8b98d0ac4a1e821e8e721b3e1816) * [Pentest-Report Keycloak 8.0 Audit & Pentest 11.2019 by Cure53](https://cure53.de/pentest-report_keycloak.pdf) * [Keycloak - CNCF Security SIG - Self Assesment](https://docs.google.com/document/d/14IIGliP3BWjdS-0wfOk3l_1AU8kyoSiLUzpPImsz4R0/edit#) # License [](https://creativecommons.org/publicdomain/zero/1.0/) To the extent possible under law, [Thomas Darimont](https://github.com/thomasdarimont) has waived all copyright and related or neighboring rights to this work.
arashstar1
Code Issues 0 Pull requests 0 Pulse MaTaDoR/ 3233fdf V 5.7 MaTaDoR @MaTaDoRTeaMMaTaDoRTeaM committed on GitHub about 1 month ago 2 changed files 2,704 additions and 0 deletions cli/tg/tdcli.lua @@ -0,0 +1,2704 @@ +--[[ + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + MA 02110-1301, USA. + +]]-- + +-- Vector example form is like this: {[0] = v} or {v1, v2, v3, [0] = v} +-- If false or true crashed your telegram-cli, try to change true to 1 and false to 0 + +-- Main Bot Framework +local M = {} + +-- @chat_id = user, group, channel, and broadcast +-- @group_id = normal group +-- @channel_id = channel and broadcast +local function getChatId(chat_id) + local chat = {} + local chat_id = tostring(chat_id) + + if chat_id:match('^-100') then + local channel_id = chat_id:gsub('-100', '') + chat = {ID = channel_id, type = 'channel'} + else + local group_id = chat_id:gsub('-', '') + chat = {ID = group_id, type = 'group'} + end + + return chat +end + +local function getInputFile(file) + if file:match('/') then + infile = {ID = "InputFileLocal", path_ = file} + elseif file:match('^%d+$') then + infile = {ID = "InputFileId", id_ = file} + else + infile = {ID = "InputFilePersistentId", persistent_id_ = file} + end + + return infile +end + +-- User can send bold, italic, and monospace text uses HTML or Markdown format. +local function getParseMode(parse_mode) + if parse_mode then + local mode = parse_mode:lower() + + if mode == 'markdown' or mode == 'md' then + P = {ID = "TextParseModeMarkdown"} + elseif mode == 'html' then + P = {ID = "TextParseModeHTML"} + end + end + + return P +end + +-- Returns current authorization state, offline request +local function getAuthState(dl_cb, cmd) + tdcli_function ({ + ID = "GetAuthState", + }, dl_cb, cmd) +end + +M.getAuthState = getAuthState + +-- Sets user's phone number and sends authentication code to the user. +-- Works only when authGetState returns authStateWaitPhoneNumber. +-- If phone number is not recognized or another error has happened, returns an error. Otherwise returns authStateWaitCode +-- @phone_number User's phone number in any reasonable format +-- @allow_flash_call Pass True, if code can be sent via flash call to the specified phone number +-- @is_current_phone_number Pass true, if the phone number is used on the current device. Ignored if allow_flash_call is False +local function setAuthPhoneNumber(phone_number, allow_flash_call, is_current_phone_number, dl_cb, cmd) + tdcli_function ({ + ID = "SetAuthPhoneNumber", + phone_number_ = phone_number, + allow_flash_call_ = allow_flash_call, + is_current_phone_number_ = is_current_phone_number + }, dl_cb, cmd) +end + +M.setAuthPhoneNumber = setAuthPhoneNumber + +-- Resends authentication code to the user. +-- Works only when authGetState returns authStateWaitCode and next_code_type of result is not null. +-- Returns authStateWaitCode on success +local function resendAuthCode(dl_cb, cmd) + tdcli_function ({ + ID = "ResendAuthCode", + }, dl_cb, cmd) +end + +M.resendAuthCode = resendAuthCode + +-- Checks authentication code. +-- Works only when authGetState returns authStateWaitCode. +-- Returns authStateWaitPassword or authStateOk on success +-- @code Verification code from SMS, Telegram message, voice call or flash call +-- @first_name User first name, if user is yet not registered, 1-255 characters +-- @last_name Optional user last name, if user is yet not registered, 0-255 characters +local function checkAuthCode(code, first_name, last_name, dl_cb, cmd) + tdcli_function ({ + ID = "CheckAuthCode", + code_ = code, + first_name_ = first_name, + last_name_ = last_name + }, dl_cb, cmd) +end + +M.checkAuthCode = checkAuthCode + +-- Checks password for correctness. +-- Works only when authGetState returns authStateWaitPassword. +-- Returns authStateOk on success +-- @password Password to check +local function checkAuthPassword(password, dl_cb, cmd) + tdcli_function ({ + ID = "CheckAuthPassword", + password_ = password + }, dl_cb, cmd) +end + +M.checkAuthPassword = checkAuthPassword + +-- Requests to send password recovery code to email. +-- Works only when authGetState returns authStateWaitPassword. +-- Returns authStateWaitPassword on success +local function requestAuthPasswordRecovery(dl_cb, cmd) + tdcli_function ({ + ID = "RequestAuthPasswordRecovery", + }, dl_cb, cmd) +end + +M.requestAuthPasswordRecovery = requestAuthPasswordRecovery + +-- Recovers password with recovery code sent to email. +-- Works only when authGetState returns authStateWaitPassword. +-- Returns authStateOk on success +-- @recovery_code Recovery code to check +local function recoverAuthPassword(recovery_code, dl_cb, cmd) + tdcli_function ({ + ID = "RecoverAuthPassword", + recovery_code_ = recovery_code + }, dl_cb, cmd) +end + +M.recoverAuthPassword = recoverAuthPassword + +-- Logs out user. +-- If force == false, begins to perform soft log out, returns authStateLoggingOut after completion. +-- If force == true then succeeds almost immediately without cleaning anything at the server, but returns error with code 401 and description "Unauthorized" +-- @force If true, just delete all local data. Session will remain in list of active sessions +local function resetAuth(force, dl_cb, cmd) + tdcli_function ({ + ID = "ResetAuth", + force_ = force or nil + }, dl_cb, cmd) +end + +M.resetAuth = resetAuth + +-- Check bot's authentication token to log in as a bot. +-- Works only when authGetState returns authStateWaitPhoneNumber. +-- Can be used instead of setAuthPhoneNumber and checkAuthCode to log in. +-- Returns authStateOk on success +-- @token Bot token +local function checkAuthBotToken(token, dl_cb, cmd) + tdcli_function ({ + ID = "CheckAuthBotToken", + token_ = token + }, dl_cb, cmd) +end + +M.checkAuthBotToken = checkAuthBotToken + +-- Returns current state of two-step verification +local function getPasswordState(dl_cb, cmd) + tdcli_function ({ + ID = "GetPasswordState", + }, dl_cb, cmd) +end + +M.getPasswordState = getPasswordState + +-- Changes user password. +-- If new recovery email is specified, then error EMAIL_UNCONFIRMED is returned and password change will not be applied until email confirmation. +-- Application should call getPasswordState from time to time to check if email is already confirmed +-- @old_password Old user password +-- @new_password New user password, may be empty to remove the password +-- @new_hint New password hint, can be empty +-- @set_recovery_email Pass True, if recovery email should be changed +-- @new_recovery_email New recovery email, may be empty +local function setPassword(old_password, new_password, new_hint, set_recovery_email, new_recovery_email, dl_cb, cmd) + tdcli_function ({ + ID = "SetPassword", + old_password_ = old_password, + new_password_ = new_password, + new_hint_ = new_hint, + set_recovery_email_ = set_recovery_email, + new_recovery_email_ = new_recovery_email + }, dl_cb, cmd) +end + +M.setPassword = setPassword + +-- Returns set up recovery email. +-- This method can be used to verify a password provided by the user +-- @password Current user password +local function getRecoveryEmail(password, dl_cb, cmd) + tdcli_function ({ + ID = "GetRecoveryEmail", + password_ = password + }, dl_cb, cmd) +end + +M.getRecoveryEmail = getRecoveryEmail + +-- Changes user recovery email. +-- If new recovery email is specified, then error EMAIL_UNCONFIRMED is returned and email will not be changed until email confirmation. +-- Application should call getPasswordState from time to time to check if email is already confirmed. +-- If new_recovery_email coincides with the current set up email succeeds immediately and aborts all other requests waiting for email confirmation +-- @password Current user password +-- @new_recovery_email New recovery email +local function setRecoveryEmail(password, new_recovery_email, dl_cb, cmd) + tdcli_function ({ + ID = "SetRecoveryEmail", + password_ = password, + new_recovery_email_ = new_recovery_email + }, dl_cb, cmd) +end + +M.setRecoveryEmail = setRecoveryEmail + +-- Requests to send password recovery code to email +local function requestPasswordRecovery(dl_cb, cmd) + tdcli_function ({ + ID = "RequestPasswordRecovery", + }, dl_cb, cmd) +end + +M.requestPasswordRecovery = requestPasswordRecovery + +-- Recovers password with recovery code sent to email +-- @recovery_code Recovery code to check +local function recoverPassword(recovery_code, dl_cb, cmd) + tdcli_function ({ + ID = "RecoverPassword", + recovery_code_ = tostring(recovery_code) + }, dl_cb, cmd) +end + +M.recoverPassword = recoverPassword + +-- Returns current logged in user +local function getMe(dl_cb, cmd) + tdcli_function ({ + ID = "GetMe", + }, dl_cb, cmd) +end + +M.getMe = getMe + +-- Returns information about a user by its identifier, offline request if current user is not a bot +-- @user_id User identifier +local function getUser(user_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetUser", + user_id_ = user_id + }, dl_cb, cmd) +end + +M.getUser = getUser + +-- Returns full information about a user by its identifier +-- @user_id User identifier +local function getUserFull(user_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetUserFull", + user_id_ = user_id + }, dl_cb, cmd) +end + +M.getUserFull = getUserFull + +-- Returns information about a group by its identifier, offline request if current user is not a bot +-- @group_id Group identifier +local function getGroup(group_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetGroup", + group_id_ = getChatId(group_id).ID + }, dl_cb, cmd) +end + +M.getGroup = getGroup + +-- Returns full information about a group by its identifier +-- @group_id Group identifier +local function getGroupFull(group_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetGroupFull", + group_id_ = getChatId(group_id).ID + }, dl_cb, cmd) +end + +M.getGroupFull = getGroupFull + +-- Returns information about a channel by its identifier, offline request if current user is not a bot +-- @channel_id Channel identifier +local function getChannel(channel_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetChannel", + channel_id_ = getChatId(channel_id).ID + }, dl_cb, cmd) +end + +M.getChannel = getChannel + +-- Returns full information about a channel by its identifier, cached for at most 1 minute +-- @channel_id Channel identifier +local function getChannelFull(channel_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetChannelFull", + channel_id_ = getChatId(channel_id).ID + }, dl_cb, cmd) +end + +M.getChannelFull = getChannelFull + +-- Returns information about a secret chat by its identifier, offline request +-- @secret_chat_id Secret chat identifier +local function getSecretChat(secret_chat_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetSecretChat", + secret_chat_id_ = secret_chat_id + }, dl_cb, cmd) +end + +M.getSecretChat = getSecretChat + +-- Returns information about a chat by its identifier, offline request if current user is not a bot +-- @chat_id Chat identifier +local function getChat(chat_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetChat", + chat_id_ = chat_id + }, dl_cb, cmd) +end + +M.getChat = getChat + +-- Returns information about a message +-- @chat_id Identifier of the chat, message belongs to +-- @message_id Identifier of the message to get +local function getMessage(chat_id, message_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetMessage", + chat_id_ = chat_id, + message_id_ = message_id + }, dl_cb, cmd) +end + +M.getMessage = getMessage + +-- Returns information about messages. +-- If message is not found, returns null on the corresponding position of the result +-- @chat_id Identifier of the chat, messages belongs to +-- @message_ids Identifiers of the messages to get +local function getMessages(chat_id, message_ids, dl_cb, cmd) + tdcli_function ({ + ID = "GetMessages", + chat_id_ = chat_id, + message_ids_ = message_ids -- vector + }, dl_cb, cmd) +end + +M.getMessages = getMessages + +-- Returns information about a file, offline request +-- @file_id Identifier of the file to get +local function getFile(file_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetFile", + file_id_ = file_id + }, dl_cb, cmd) +end + +M.getFile = getFile + +-- Returns information about a file by its persistent id, offline request +-- @persistent_file_id Persistent identifier of the file to get +local function getFilePersistent(persistent_file_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetFilePersistent", + persistent_file_id_ = persistent_file_id + }, dl_cb, cmd) +end + +M.getFilePersistent = getFilePersistent + +-- Returns list of chats in the right order, chats are sorted by (order, chat_id) in decreasing order. +-- For example, to get list of chats from the beginning, the offset_order should be equal 2^63 - 1 +-- @offset_order Chat order to return chats from +-- @offset_chat_id Chat identifier to return chats from +-- @limit Maximum number of chats to be returned +local function getChats(offset_order, offset_chat_id, limit, dl_cb, cmd) + if not limit or limit > 20 then + limit = 20 + end + + tdcli_function ({ + ID = "GetChats", + offset_order_ = offset_order or 9223372036854775807, + offset_chat_id_ = offset_chat_id or 0, + limit_ = limit + }, dl_cb, cmd) +end + +M.getChats = getChats + +-- Searches public chat by its username. +-- Currently only private and channel chats can be public. +-- Returns chat if found, otherwise some error is returned +-- @username Username to be resolved +local function searchPublicChat(username, dl_cb, cmd) + tdcli_function ({ + ID = "SearchPublicChat", + username_ = username + }, dl_cb, cmd) +end + +M.searchPublicChat = searchPublicChat + +-- Searches public chats by prefix of their username. +-- Currently only private and channel (including supergroup) chats can be public. +-- Returns meaningful number of results. +-- Returns nothing if length of the searched username prefix is less than 5. +-- Excludes private chats with contacts from the results +-- @username_prefix Prefix of the username to search +local function searchPublicChats(username_prefix, dl_cb, cmd) + tdcli_function ({ + ID = "SearchPublicChats", + username_prefix_ = username_prefix + }, dl_cb, cmd) +end + +M.searchPublicChats = searchPublicChats + +-- Searches for specified query in the title and username of known chats, offline request. +-- Returns chats in the order of them in the chat list +-- @query Query to search for, if query is empty, returns up to 20 recently found chats +-- @limit Maximum number of chats to be returned +local function searchChats(query, limit, dl_cb, cmd) + if not limit or limit > 20 then + limit = 20 + end + + tdcli_function ({ + ID = "SearchChats", + query_ = query, + limit_ = limit + }, dl_cb, cmd) +end + +M.searchChats = searchChats + +-- Adds chat to the list of recently found chats. +-- The chat is added to the beginning of the list. +-- If the chat is already in the list, at first it is removed from the list +-- @chat_id Identifier of the chat to add +local function addRecentlyFoundChat(chat_id, dl_cb, cmd) + tdcli_function ({ + ID = "AddRecentlyFoundChat", + chat_id_ = chat_id + }, dl_cb, cmd) +end + +M.addRecentlyFoundChat = addRecentlyFoundChat + +-- Deletes chat from the list of recently found chats +-- @chat_id Identifier of the chat to delete +local function deleteRecentlyFoundChat(chat_id, dl_cb, cmd) + tdcli_function ({ + ID = "DeleteRecentlyFoundChat", + chat_id_ = chat_id + }, dl_cb, cmd) +end + +M.deleteRecentlyFoundChat = deleteRecentlyFoundChat + +-- Clears list of recently found chats +local function deleteRecentlyFoundChats(dl_cb, cmd) + tdcli_function ({ + ID = "DeleteRecentlyFoundChats", + }, dl_cb, cmd) +end + +M.deleteRecentlyFoundChats = deleteRecentlyFoundChats + +-- Returns list of common chats with an other given user. +-- Chats are sorted by their type and creation date +-- @user_id User identifier +-- @offset_chat_id Chat identifier to return chats from, use 0 for the first request +-- @limit Maximum number of chats to be returned, up to 100 +local function getCommonChats(user_id, offset_chat_id, limit, dl_cb, cmd) + if not limit or limit > 100 then + limit = 100 + end + + tdcli_function ({ + ID = "GetCommonChats", + user_id_ = user_id, + offset_chat_id_ = offset_chat_id, + limit_ = limit + }, dl_cb, cmd) +end + +M.getCommonChats = getCommonChats + +-- Returns messages in a chat. +-- Automatically calls openChat. +-- Returns result in reverse chronological order, i.e. in order of decreasing message.message_id +-- @chat_id Chat identifier +-- @from_message_id Identifier of the message near which we need a history, you can use 0 to get results from the beginning, i.e. from oldest to newest +-- @offset Specify 0 to get results exactly from from_message_id or negative offset to get specified message and some newer messages +-- @limit Maximum number of messages to be returned, should be positive and can't be greater than 100. +-- If offset is negative, limit must be greater than -offset. +-- There may be less than limit messages returned even the end of the history is not reached +local function getChatHistory(chat_id, from_message_id, offset, limit, dl_cb, cmd) + if not limit or limit > 100 then + limit = 100 + end + + tdcli_function ({ + ID = "GetChatHistory", + chat_id_ = chat_id, + from_message_id_ = from_message_id, + offset_ = offset or 0, + limit_ = limit + }, dl_cb, cmd) +end + +M.getChatHistory = getChatHistory + +-- Deletes all messages in the chat. +-- Can't be used for channel chats +-- @chat_id Chat identifier +-- @remove_from_chat_list Pass true, if chat should be removed from the chat list +local function deleteChatHistory(chat_id, remove_from_chat_list, dl_cb, cmd) + tdcli_function ({ + ID = "DeleteChatHistory", + chat_id_ = chat_id, + remove_from_chat_list_ = remove_from_chat_list + }, dl_cb, cmd) +end + +M.deleteChatHistory = deleteChatHistory + +-- Searches for messages with given words in the chat. +-- Returns result in reverse chronological order, i. e. in order of decreasimg message_id. +-- Doesn't work in secret chats +-- @chat_id Chat identifier to search in +-- @query Query to search for +-- @from_message_id Identifier of the message from which we need a history, you can use 0 to get results from beginning +-- @limit Maximum number of messages to be returned, can't be greater than 100 +-- @filter Filter for content of searched messages +-- filter = Empty|Animation|Audio|Document|Photo|Video|Voice|PhotoAndVideo|Url|ChatPhoto +local function searchChatMessages(chat_id, query, from_message_id, limit, filter, dl_cb, cmd) + if not limit or limit > 100 then + limit = 100 + end + + tdcli_function ({ + ID = "SearchChatMessages", + chat_id_ = chat_id, + query_ = query, + from_message_id_ = from_message_id, + limit_ = limit, + filter_ = { + ID = 'SearchMessagesFilter' .. filter + }, + }, dl_cb, cmd) +end + +M.searchChatMessages = searchChatMessages + +-- Searches for messages in all chats except secret chats. Returns result in reverse chronological order, i. e. in order of decreasing (date, chat_id, message_id) +-- @query Query to search for +-- @offset_date Date of the message to search from, you can use 0 or any date in the future to get results from the beginning +-- @offset_chat_id Chat identifier of the last found message or 0 for the first request +-- @offset_message_id Message identifier of the last found message or 0 for the first request +-- @limit Maximum number of messages to be returned, can't be greater than 100 +local function searchMessages(query, offset_date, offset_chat_id, offset_message_id, limit, dl_cb, cmd) + if not limit or limit > 100 then + limit = 100 + end + + tdcli_function ({ + ID = "SearchMessages", + query_ = query, + offset_date_ = offset_date, + offset_chat_id_ = offset_chat_id, + offset_message_id_ = offset_message_id, + limit_ = limit + }, dl_cb, cmd) +end + +M.searchMessages = searchMessages + +-- Invites bot to a chat (if it is not in the chat) and send /start to it. +-- Bot can't be invited to a private chat other than chat with the bot. +-- Bots can't be invited to broadcast channel chats and secret chats. +-- Returns sent message. +-- UpdateChatTopMessage will not be sent, so returned message should be used to update chat top message +-- @bot_user_id Identifier of the bot +-- @chat_id Identifier of the chat +-- @parameter Hidden parameter sent to bot for deep linking (https://api.telegram.org/bots#deep-linking) +-- parameter=start|startgroup or custom as defined by bot creator +local function sendBotStartMessage(bot_user_id, chat_id, parameter, dl_cb, cmd) + tdcli_function ({ + ID = "SendBotStartMessage", + bot_user_id_ = bot_user_id, + chat_id_ = chat_id, + parameter_ = parameter + }, dl_cb, cmd) +end + +M.sendBotStartMessage = sendBotStartMessage + +-- Sends result of the inline query as a message. +-- Returns sent message. +-- UpdateChatTopMessage will not be sent, so returned message should be used to update chat top message. +-- Always clears chat draft message +-- @chat_id Chat to send message +-- @reply_to_message_id Identifier of a message to reply to or 0 +-- @disable_notification Pass true, to disable notification about the message, doesn't works in secret chats +-- @from_background Pass true, if the message is sent from background +-- @query_id Identifier of the inline query +-- @result_id Identifier of the inline result +local function sendInlineQueryResultMessage(chat_id, reply_to_message_id, disable_notification, from_background, query_id, result_id, dl_cb, cmd) + tdcli_function ({ + ID = "SendInlineQueryResultMessage", + chat_id_ = chat_id, + reply_to_message_id_ = reply_to_message_id, + disable_notification_ = disable_notification, + from_background_ = from_background, + query_id_ = query_id, + result_id_ = result_id + }, dl_cb, cmd) +end + +M.sendInlineQueryResultMessage = sendInlineQueryResultMessage + +-- Forwards previously sent messages. +-- Returns forwarded messages in the same order as message identifiers passed in message_ids. +-- If message can't be forwarded, null will be returned instead of the message. +-- UpdateChatTopMessage will not be sent, so returned messages should be used to update chat top message +-- @chat_id Identifier of a chat to forward messages +-- @from_chat_id Identifier of a chat to forward from +-- @message_ids Identifiers of messages to forward +-- @disable_notification Pass true, to disable notification about the message, doesn't works if messages are forwarded to secret chat +-- @from_background Pass true, if the message is sent from background +local function forwardMessages(chat_id, from_chat_id, message_ids, disable_notification, dl_cb, cmd) + tdcli_function ({ + ID = "ForwardMessages", + chat_id_ = chat_id, + from_chat_id_ = from_chat_id, + message_ids_ = message_ids, -- vector + disable_notification_ = disable_notification, + from_background_ = 1 + }, dl_cb, cmd) +end + +M.forwardMessages = forwardMessages + +-- Changes current ttl setting in a secret chat and sends corresponding message +-- @chat_id Chat identifier +-- @ttl New value of ttl in seconds +local function sendChatSetTtlMessage(chat_id, ttl, dl_cb, cmd) + tdcli_function ({ + ID = "SendChatSetTtlMessage", + chat_id_ = chat_id, + ttl_ = ttl + }, dl_cb, cmd) +end + +M.sendChatSetTtlMessage = sendChatSetTtlMessage + +-- Deletes messages. +-- UpdateDeleteMessages will not be sent for messages deleted through that function +-- @chat_id Chat identifier +-- @message_ids Identifiers of messages to delete +local function deleteMessages(chat_id, message_ids, dl_cb, cmd) + tdcli_function ({ + ID = "DeleteMessages", + chat_id_ = chat_id, + message_ids_ = message_ids -- vector + }, dl_cb, cmd) +end + +M.deleteMessages = deleteMessages + +-- Deletes all messages in the chat sent by the specified user. +-- Works only in supergroup channel chats, needs appropriate privileges +-- @chat_id Chat identifier +-- @user_id User identifier +local function deleteMessagesFromUser(chat_id, user_id, dl_cb, cmd) + tdcli_function ({ + ID = "DeleteMessagesFromUser", + chat_id_ = chat_id, + user_id_ = user_id + }, dl_cb, cmd) +end + +M.deleteMessagesFromUser = deleteMessagesFromUser + +-- Edits text of text or game message. +-- Non-bots can edit message in a limited period of time. +-- Returns edited message after edit is complete server side +-- @chat_id Chat the message belongs to +-- @message_id Identifier of the message +-- @reply_markup Bots only. New message reply markup +-- @input_message_content New text content of the message. Should be of type InputMessageText +local function editMessageText(chat_id, message_id, reply_markup, text, disable_web_page_preview, parse_mode, dl_cb, cmd) + local TextParseMode = getParseMode(parse_mode) + + tdcli_function ({ + ID = "EditMessageText", + chat_id_ = chat_id, + message_id_ = message_id, + reply_markup_ = reply_markup, -- reply_markup:ReplyMarkup + input_message_content_ = { + ID = "InputMessageText", + text_ = text, + disable_web_page_preview_ = disable_web_page_preview, + clear_draft_ = 0, + entities_ = {}, + parse_mode_ = TextParseMode, + }, + }, dl_cb, cmd) +end + +M.editMessageText = editMessageText + +-- Edits message content caption. +-- Non-bots can edit message in a limited period of time. +-- Returns edited message after edit is complete server side +-- @chat_id Chat the message belongs to +-- @message_id Identifier of the message +-- @reply_markup Bots only. New message reply markup +-- @caption New message content caption, 0-200 characters +local function editMessageCaption(chat_id, message_id, reply_markup, caption, dl_cb, cmd) + tdcli_function ({ + ID = "EditMessageCaption", + chat_id_ = chat_id, + message_id_ = message_id, + reply_markup_ = reply_markup, -- reply_markup:ReplyMarkup + caption_ = caption + }, dl_cb, cmd) +end + +M.editMessageCaption = editMessageCaption + +-- Bots only. +-- Edits message reply markup. +-- Returns edited message after edit is complete server side +-- @chat_id Chat the message belongs to +-- @message_id Identifier of the message +-- @reply_markup New message reply markup +local function editMessageReplyMarkup(inline_message_id, reply_markup, caption, dl_cb, cmd) + tdcli_function ({ + ID = "EditInlineMessageCaption", + inline_message_id_ = inline_message_id, + reply_markup_ = reply_markup, -- reply_markup:ReplyMarkup + caption_ = caption + }, dl_cb, cmd) +end + +M.editMessageReplyMarkup = editMessageReplyMarkup + +-- Bots only. +-- Edits text of an inline text or game message sent via bot +-- @inline_message_id Inline message identifier +-- @reply_markup New message reply markup +-- @input_message_content New text content of the message. Should be of type InputMessageText +local function editInlineMessageText(inline_message_id, reply_markup, text, disable_web_page_preview, dl_cb, cmd) + tdcli_function ({ + ID = "EditInlineMessageText", + inline_message_id_ = inline_message_id, + reply_markup_ = reply_markup, -- reply_markup:ReplyMarkup + input_message_content_ = { + ID = "InputMessageText", + text_ = text, + disable_web_page_preview_ = disable_web_page_preview, + clear_draft_ = 0, + entities_ = {} + }, + }, dl_cb, cmd) +end + +M.editInlineMessageText = editInlineMessageText + +-- Bots only. +-- Edits caption of an inline message content sent via bot +-- @inline_message_id Inline message identifier +-- @reply_markup New message reply markup +-- @caption New message content caption, 0-200 characters +local function editInlineMessageCaption(inline_message_id, reply_markup, caption, dl_cb, cmd) + tdcli_function ({ + ID = "EditInlineMessageCaption", + inline_message_id_ = inline_message_id, + reply_markup_ = reply_markup, -- reply_markup:ReplyMarkup + caption_ = caption + }, dl_cb, cmd) +end + +M.editInlineMessageCaption = editInlineMessageCaption + +-- Bots only. +-- Edits reply markup of an inline message sent via bot +-- @inline_message_id Inline message identifier +-- @reply_markup New message reply markup +local function editInlineMessageReplyMarkup(inline_message_id, reply_markup, dl_cb, cmd) + tdcli_function ({ + ID = "EditInlineMessageReplyMarkup", + inline_message_id_ = inline_message_id, + reply_markup_ = reply_markup -- reply_markup:ReplyMarkup + }, dl_cb, cmd) +end + +M.editInlineMessageReplyMarkup = editInlineMessageReplyMarkup + + +-- Sends inline query to a bot and returns its results. +-- Unavailable for bots +-- @bot_user_id Identifier of the bot send query to +-- @chat_id Identifier of the chat, where the query is sent +-- @user_location User location, only if needed +-- @query Text of the query +-- @offset Offset of the first entry to return +local function getInlineQueryResults(bot_user_id, chat_id, latitude, longitude, query, offset, dl_cb, cmd) + tdcli_function ({ + ID = "GetInlineQueryResults", + bot_user_id_ = bot_user_id, + chat_id_ = chat_id, + user_location_ = { + ID = "Location", + latitude_ = latitude, + longitude_ = longitude + }, + query_ = query, + offset_ = offset + }, dl_cb, cmd) +end + +M.getInlineQueryResults = getInlineQueryResults + +-- Bots only. +-- Sets result of the inline query +-- @inline_query_id Identifier of the inline query +-- @is_personal Does result of the query can be cached only for specified user +-- @results Results of the query +-- @cache_time Allowed time to cache results of the query in seconds +-- @next_offset Offset for the next inline query, pass empty string if there is no more results +-- @switch_pm_text If non-empty, this text should be shown on the button, which opens private chat with the bot and sends bot start message with parameter switch_pm_parameter +-- @switch_pm_parameter Parameter for the bot start message +local function answerInlineQuery(inline_query_id, is_personal, cache_time, next_offset, switch_pm_text, switch_pm_parameter, dl_cb, cmd) + tdcli_function ({ + ID = "AnswerInlineQuery", + inline_query_id_ = inline_query_id, + is_personal_ = is_personal, + results_ = results, --vector<InputInlineQueryResult>, + cache_time_ = cache_time, + next_offset_ = next_offset, + switch_pm_text_ = switch_pm_text, + switch_pm_parameter_ = switch_pm_parameter + }, dl_cb, cmd) +end + +M.answerInlineQuery = answerInlineQuery + +-- Sends callback query to a bot and returns answer to it. +-- Unavailable for bots +-- @chat_id Identifier of the chat with a message +-- @message_id Identifier of the message, from which the query is originated +-- @payload Query payload +-- @text Text of the answer +-- @show_alert If true, an alert should be shown to the user instead of a toast +-- @url URL to be open +local function getCallbackQueryAnswer(chat_id, message_id, text, show_alert, url, dl_cb, cmd) + tdcli_function ({ + ID = "GetCallbackQueryAnswer", + chat_id_ = chat_id, + message_id_ = message_id, + payload_ = { + ID = "CallbackQueryAnswer", + text_ = text, + show_alert_ = show_alert, + url_ = url + }, + }, dl_cb, cmd) +end + +M.getCallbackQueryAnswer = getCallbackQueryAnswer + +-- Bots only. +-- Sets result of the callback query +-- @callback_query_id Identifier of the callback query +-- @text Text of the answer +-- @show_alert If true, an alert should be shown to the user instead of a toast +-- @url Url to be opened +-- @cache_time Allowed time to cache result of the query in seconds +local function answerCallbackQuery(callback_query_id, text, show_alert, url, cache_time, dl_cb, cmd) + tdcli_function ({ + ID = "AnswerCallbackQuery", + callback_query_id_ = callback_query_id, + text_ = text, + show_alert_ = show_alert, + url_ = url, + cache_time_ = cache_time + }, dl_cb, cmd) +end + +M.answerCallbackQuery = answerCallbackQuery + +-- Bots only. +-- Updates game score of the specified user in the game +-- @chat_id Chat a message with the game belongs to +-- @message_id Identifier of the message +-- @edit_message True, if message should be edited +-- @user_id User identifier +-- @score New score +-- @force Pass True to update the score even if it decreases. If score is 0, user will be deleted from the high scores table +local function setGameScore(chat_id, message_id, edit_message, user_id, score, force, dl_cb, cmd) + tdcli_function ({ + ID = "SetGameScore", + chat_id_ = chat_id, + message_id_ = message_id, + edit_message_ = edit_message, + user_id_ = user_id, + score_ = score, + force_ = force + }, dl_cb, cmd) +end + +M.setGameScore = setGameScore + +-- Bots only. +-- Updates game score of the specified user in the game +-- @inline_message_id Inline message identifier +-- @edit_message True, if message should be edited +-- @user_id User identifier +-- @score New score +-- @force Pass True to update the score even if it decreases. If score is 0, user will be deleted from the high scores table +local function setInlineGameScore(inline_message_id, edit_message, user_id, score, force, dl_cb, cmd) + tdcli_function ({ + ID = "SetInlineGameScore", + inline_message_id_ = inline_message_id, + edit_message_ = edit_message, + user_id_ = user_id, + score_ = score, + force_ = force + }, dl_cb, cmd) +end + +M.setInlineGameScore = setInlineGameScore + +-- Bots only. +-- Returns game high scores and some part of the score table around of the specified user in the game +-- @chat_id Chat a message with the game belongs to +-- @message_id Identifier of the message +-- @user_id User identifie +local function getGameHighScores(chat_id, message_id, user_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetGameHighScores", + chat_id_ = chat_id, + message_id_ = message_id, + user_id_ = user_id + }, dl_cb, cmd) +end + +M.getGameHighScores = getGameHighScores + +-- Bots only. +-- Returns game high scores and some part of the score table around of the specified user in the game +-- @inline_message_id Inline message identifier +-- @user_id User identifier +local function getInlineGameHighScores(inline_message_id, user_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetInlineGameHighScores", + inline_message_id_ = inline_message_id, + user_id_ = user_id + }, dl_cb, cmd) +end + +M.getInlineGameHighScores = getInlineGameHighScores + +-- Deletes default reply markup from chat. +-- This method needs to be called after one-time keyboard or ForceReply reply markup has been used. +-- UpdateChatReplyMarkup will be send if reply markup will be changed +-- @chat_id Chat identifier +-- @message_id Message identifier of used keyboard +local function deleteChatReplyMarkup(chat_id, message_id, dl_cb, cmd) + tdcli_function ({ + ID = "DeleteChatReplyMarkup", + chat_id_ = chat_id, + message_id_ = message_id + }, dl_cb, cmd) +end + +M.deleteChatReplyMarkup = deleteChatReplyMarkup + +-- Sends notification about user activity in a chat +-- @chat_id Chat identifier +-- @action Action description +-- action = Typing|Cancel|RecordVideo|UploadVideo|RecordVoice|UploadVoice|UploadPhoto|UploadDocument|GeoLocation|ChooseContact|StartPlayGame +local function sendChatAction(chat_id, action, progress, dl_cb, cmd) + tdcli_function ({ + ID = "SendChatAction", + chat_id_ = chat_id, + action_ = { + ID = "SendMessage" .. action .. "Action", + progress_ = progress or 100 + } + }, dl_cb, cmd) +end + +M.sendChatAction = sendChatAction + +-- Sends notification about screenshot taken in a chat. +-- Works only in secret chats +-- @chat_id Chat identifier +local function sendChatScreenshotTakenNotification(chat_id, dl_cb, cmd) + tdcli_function ({ + ID = "SendChatScreenshotTakenNotification", + chat_id_ = chat_id + }, dl_cb, cmd) +end + +M.sendChatScreenshotTakenNotification = sendChatScreenshotTakenNotification + +-- Chat is opened by the user. +-- Many useful activities depends on chat being opened or closed. For example, in channels all updates are received only for opened chats +-- @chat_id Chat identifier +local function openChat(chat_id, dl_cb, cmd) + tdcli_function ({ + ID = "OpenChat", + chat_id_ = chat_id + }, dl_cb, cmd) +end + +M.openChat = openChat + +-- Chat is closed by the user. +-- Many useful activities depends on chat being opened or closed. +-- @chat_id Chat identifier +local function closeChat(chat_id, dl_cb, cmd) + tdcli_function ({ + ID = "CloseChat", + chat_id_ = chat_id + }, dl_cb, cmd) +end + +M.closeChat = closeChat + +-- Messages are viewed by the user. +-- Many useful activities depends on message being viewed. For example, marking messages as read, incrementing of view counter, updating of view counter, removing of deleted messages in channels +-- @chat_id Chat identifier +-- @message_ids Identifiers of viewed messages +local function viewMessages(chat_id, message_ids, dl_cb, cmd) + tdcli_function ({ + ID = "ViewMessages", + chat_id_ = chat_id, + message_ids_ = message_ids -- vector + }, dl_cb, cmd) +end + +M.viewMessages = viewMessages + +-- Message content is opened, for example the user has opened a photo, a video, a document, a location or a venue or have listened to an audio or a voice message +-- @chat_id Chat identifier of the message +-- @message_id Identifier of the message with opened content +local function openMessageContent(chat_id, message_id, dl_cb, cmd) + tdcli_function ({ + ID = "OpenMessageContent", + chat_id_ = chat_id, + message_id_ = message_id + }, dl_cb, cmd) +end + +M.openMessageContent = openMessageContent + +-- Returns existing chat corresponding to the given user +-- @user_id User identifier +local function createPrivateChat(user_id, dl_cb, cmd) + tdcli_function ({ + ID = "CreatePrivateChat", + user_id_ = user_id + }, dl_cb, cmd) +end + +M.createPrivateChat = createPrivateChat + +-- Returns existing chat corresponding to the known group +-- @group_id Group identifier +local function createGroupChat(group_id, dl_cb, cmd) + tdcli_function ({ + ID = "CreateGroupChat", + group_id_ = getChatId(group_id).ID + }, dl_cb, cmd) +end + +M.createGroupChat = createGroupChat + +-- Returns existing chat corresponding to the known channel +-- @channel_id Channel identifier +local function createChannelChat(channel_id, dl_cb, cmd) + tdcli_function ({ + ID = "CreateChannelChat", + channel_id_ = getChatId(channel_id).ID + }, dl_cb, cmd) +end + +M.createChannelChat = createChannelChat + +-- Returns existing chat corresponding to the known secret chat +-- @secret_chat_id SecretChat identifier +local function createSecretChat(secret_chat_id, dl_cb, cmd) + tdcli_function ({ + ID = "CreateSecretChat", + secret_chat_id_ = secret_chat_id + }, dl_cb, cmd) +end + +M.createSecretChat = createSecretChat + +-- Creates new group chat and send corresponding messageGroupChatCreate, returns created chat +-- @user_ids Identifiers of users to add to the group +-- @title Title of new group chat, 0-255 characters +local function createNewGroupChat(user_ids, title, dl_cb, cmd) + tdcli_function ({ + ID = "CreateNewGroupChat", + user_ids_ = user_ids, -- vector + title_ = title + }, dl_cb, cmd) +end + +M.createNewGroupChat = createNewGroupChat + +-- Creates new channel chat and send corresponding messageChannelChatCreate, returns created chat +-- @title Title of new channel chat, 0-255 characters +-- @is_supergroup True, if supergroup chat should be created +-- @about Information about the channel, 0-255 characters +local function createNewChannelChat(title, is_supergroup, about, dl_cb, cmd) + tdcli_function ({ + ID = "CreateNewChannelChat", + title_ = title, + is_supergroup_ = is_supergroup, + about_ = about + }, dl_cb, cmd) +end + +M.createNewChannelChat = createNewChannelChat + +-- Creates new secret chat, returns created chat +-- @user_id Identifier of a user to create secret chat with +local function createNewSecretChat(user_id, dl_cb, cmd) + tdcli_function ({ + ID = "CreateNewSecretChat", + user_id_ = user_id + }, dl_cb, cmd) +end + +M.createNewSecretChat = createNewSecretChat + +-- Creates new channel supergroup chat from existing group chat and send corresponding messageChatMigrateTo and messageChatMigrateFrom. Deactivates group +-- @chat_id Group chat identifier +local function migrateGroupChatToChannelChat(chat_id, dl_cb, cmd) + tdcli_function ({ + ID = "MigrateGroupChatToChannelChat", + chat_id_ = chat_id + }, dl_cb, cmd) +end + +M.migrateGroupChatToChannelChat = migrateGroupChatToChannelChat + +-- Changes chat title. +-- Title can't be changed for private chats. +-- Title will not change until change will be synchronized with the server. +-- Title will not be changed if application is killed before it can send request to the server. +-- There will be update about change of the title on success. Otherwise error will be returned +-- @chat_id Chat identifier +-- @title New title of a chat, 0-255 characters +local function changeChatTitle(chat_id, title, dl_cb, cmd) + tdcli_function ({ + ID = "ChangeChatTitle", + chat_id_ = chat_id, + title_ = title + }, dl_cb, cmd) +end + +M.changeChatTitle = changeChatTitle + +-- Changes chat photo. +-- Photo can't be changed for private chats. +-- Photo will not change until change will be synchronized with the server. +-- Photo will not be changed if application is killed before it can send request to the server. +-- There will be update about change of the photo on success. Otherwise error will be returned +-- @chat_id Chat identifier +-- @photo New chat photo. You can use zero InputFileId to delete photo. Files accessible only by HTTP URL are not acceptable +local function changeChatPhoto(chat_id, photo, dl_cb, cmd) + tdcli_function ({ + ID = "ChangeChatPhoto", + chat_id_ = chat_id, + photo_ = getInputFile(photo) + }, dl_cb, cmd) +end + +M.changeChatPhoto = changeChatPhoto + +-- Changes chat draft message +-- @chat_id Chat identifier +-- @draft_message New draft message, nullable +local function changeChatDraftMessage(chat_id, reply_to_message_id, text, disable_web_page_preview, clear_draft, parse_mode, dl_cb, cmd) + local TextParseMode = getParseMode(parse_mode) + + tdcli_function ({ + ID = "ChangeChatDraftMessage", + chat_id_ = chat_id, + draft_message_ = { + ID = "DraftMessage", + reply_to_message_id_ = reply_to_message_id, + input_message_text_ = { + ID = "InputMessageText", + text_ = text, + disable_web_page_preview_ = disable_web_page_preview, + clear_draft_ = clear_draft, + entities_ = {}, + parse_mode_ = TextParseMode, + }, + }, + }, dl_cb, cmd) +end + +M.changeChatDraftMessage = changeChatDraftMessage + +-- Adds new member to chat. +-- Members can't be added to private or secret chats. +-- Member will not be added until chat state will be synchronized with the server. +-- Member will not be added if application is killed before it can send request to the server +-- @chat_id Chat identifier +-- @user_id Identifier of the user to add +-- @forward_limit Number of previous messages from chat to forward to new member, ignored for channel chats +local function addChatMember(chat_id, user_id, forward_limit, dl_cb, cmd) + tdcli_function ({ + ID = "AddChatMember", + chat_id_ = chat_id, + user_id_ = user_id, + forward_limit_ = forward_limit or 50 + }, dl_cb, cmd) +end + +M.addChatMember = addChatMember + +-- Adds many new members to the chat. +-- Currently, available only for channels. +-- Can't be used to join the channel. +-- Member will not be added until chat state will be synchronized with the server. +-- Member will not be added if application is killed before it can send request to the server +-- @chat_id Chat identifier +-- @user_ids Identifiers of the users to add +local function addChatMembers(chat_id, user_ids, dl_cb, cmd) + tdcli_function ({ + ID = "AddChatMembers", + chat_id_ = chat_id, + user_ids_ = user_ids -- vector + }, dl_cb, cmd) +end + +M.addChatMembers = addChatMembers + +-- Changes status of the chat member, need appropriate privileges. +-- In channel chats, user will be added to chat members if he is yet not a member and there is less than 200 members in the channel. +-- Status will not be changed until chat state will be synchronized with the server. +-- Status will not be changed if application is killed before it can send request to the server +-- @chat_id Chat identifier +-- @user_id Identifier of the user to edit status, bots can be editors in the channel chats +-- @status New status of the member in the chat +-- status = Creator|Editor|Moderator|Member|Left|Kicked +local function changeChatMemberStatus(chat_id, user_id, status, dl_cb, cmd) + tdcli_function ({ + ID = "ChangeChatMemberStatus", + chat_id_ = chat_id, + user_id_ = user_id, + status_ = { + ID = "ChatMemberStatus" .. status + }, + }, dl_cb, cmd) +end + +M.changeChatMemberStatus = changeChatMemberStatus + +-- Returns information about one participant of the chat +-- @chat_id Chat identifier +-- @user_id User identifier +local function getChatMember(chat_id, user_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetChatMember", + chat_id_ = chat_id, + user_id_ = user_id + }, dl_cb, cmd) +end + +M.getChatMember = getChatMember + +-- Asynchronously downloads file from cloud. +-- Updates updateFileProgress will notify about download progress. +-- Update updateFile will notify about successful download +-- @file_id Identifier of file to download +local function downloadFile(file_id, dl_cb, cmd) + tdcli_function ({ + ID = "DownloadFile", + file_id_ = file_id + }, dl_cb, cmd) +end + +M.downloadFile = downloadFile + +-- Stops file downloading. +-- If file already downloaded do nothing. +-- @file_id Identifier of file to cancel download +local function cancelDownloadFile(file_id, dl_cb, cmd) + tdcli_function ({ + ID = "CancelDownloadFile", + file_id_ = file_id + }, dl_cb, cmd) +end + +M.cancelDownloadFile = cancelDownloadFile + +-- Next part of a file was generated +-- @generation_id Identifier of the generation process +-- @ready Number of bytes already generated. Negative number means that generation has failed and should be terminated +local function setFileGenerationProgress(generation_id, ready, dl_cb, cmd) + tdcli_function ({ + ID = "SetFileGenerationProgress", + generation_id_ = generation_id, + ready_ = ready + }, dl_cb, cmd) +end + +M.setFileGenerationProgress = setFileGenerationProgress + +-- Finishes file generation +-- @generation_id Identifier of the generation process +local function finishFileGeneration(generation_id, dl_cb, cmd) + tdcli_function ({ + ID = "FinishFileGeneration", + generation_id_ = generation_id + }, dl_cb, cmd) +end + +M.finishFileGeneration = finishFileGeneration + +-- Generates new chat invite link, previously generated link is revoked. +-- Available for group and channel chats. +-- Only creator of the chat can export chat invite link +-- @chat_id Chat identifier +local function exportChatInviteLink(chat_id, dl_cb, cmd) + tdcli_function ({ + ID = "ExportChatInviteLink", + chat_id_ = chat_id + }, dl_cb, cmd) +end + +M.exportChatInviteLink = exportChatInviteLink + +-- Checks chat invite link for validness and returns information about the corresponding chat +-- @invite_link Invite link to check. Should begin with "https://telegram.me/joinchat/" +local function checkChatInviteLink(link, dl_cb, cmd) + tdcli_function ({ + ID = "CheckChatInviteLink", + invite_link_ = link + }, dl_cb, cmd) +end + +M.checkChatInviteLink = checkChatInviteLink + +-- Imports chat invite link, adds current user to a chat if possible. +-- Member will not be added until chat state will be synchronized with the server. +-- Member will not be added if application is killed before it can send request to the server +-- @invite_link Invite link to import. Should begin with "https://telegram.me/joinchat/" +local function importChatInviteLink(invite_link, dl_cb, cmd) + tdcli_function ({ + ID = "ImportChatInviteLink", + invite_link_ = invite_link + }, dl_cb, cmd) +end + +M.importChatInviteLink = importChatInviteLink + +-- Adds user to black list +-- @user_id User identifier +local function blockUser(user_id, dl_cb, cmd) + tdcli_function ({ + ID = "BlockUser", + user_id_ = user_id + }, dl_cb, cmd) +end + +M.blockUser = blockUser + +-- Removes user from black list +-- @user_id User identifier +local function unblockUser(user_id, dl_cb, cmd) + tdcli_function ({ + ID = "UnblockUser", + user_id_ = user_id + }, dl_cb, cmd) +end + +M.unblockUser = unblockUser + +-- Returns users blocked by the current user +-- @offset Number of users to skip in result, must be non-negative +-- @limit Maximum number of users to return, can't be greater than 100 +local function getBlockedUsers(offset, limit, dl_cb, cmd) + tdcli_function ({ + ID = "GetBlockedUsers", + offset_ = offset, + limit_ = limit + }, dl_cb, cmd) +end + +M.getBlockedUsers = getBlockedUsers + +-- Adds new contacts/edits existing contacts, contacts user identifiers are ignored. +-- Returns list of corresponding users in the same order as input contacts. +-- If contact doesn't registered in Telegram, user with id == 0 will be returned +-- @contacts List of contacts to import/edit +local function importContacts(phone_number, first_name, last_name, user_id, dl_cb, cmd) + tdcli_function ({ + ID = "ImportContacts", + contacts_ = {[0] = { + phone_number_ = tostring(phone_number), + first_name_ = tostring(first_name), + last_name_ = tostring(last_name), + user_id_ = user_id + }, + }, + }, dl_cb, cmd) +end + +M.importContacts = importContacts + +-- Searches for specified query in the first name, last name and username of the known user contacts +-- @query Query to search for, can be empty to return all contacts +-- @limit Maximum number of users to be returned +local function searchContacts(query, limit, dl_cb, cmd) + tdcli_function ({ + ID = "SearchContacts", + query_ = query, + limit_ = limit + }, dl_cb, cmd) +end + +M.searchContacts = searchContacts + +-- Deletes users from contacts list +-- @user_ids Identifiers of users to be deleted +local function deleteContacts(user_ids, dl_cb, cmd) + tdcli_function ({ + ID = "DeleteContacts", + user_ids_ = user_ids -- vector + }, dl_cb, cmd) +end + +M.deleteContacts = deleteContacts + +-- Returns profile photos of the user. +-- Result of this query can't be invalidated, so it must be used with care +-- @user_id User identifier +-- @offset Photos to skip, must be non-negative +-- @limit Maximum number of photos to be returned, can't be greater than 100 +local function getUserProfilePhotos(user_id, offset, limit, dl_cb, cmd) + tdcli_function ({ + ID = "GetUserProfilePhotos", + user_id_ = user_id, + offset_ = offset, + limit_ = limit + }, dl_cb, cmd) +end + +M.getUserProfilePhotos = getUserProfilePhotos + +-- Returns stickers corresponding to given emoji +-- @emoji String representation of emoji. If empty, returns all known stickers +local function getStickers(emoji, dl_cb, cmd) + tdcli_function ({ + ID = "GetStickers", + emoji_ = emoji + }, dl_cb, cmd) +end + +M.getStickers = getStickers + +-- Returns list of installed sticker sets without archived sticker sets +-- @is_masks Pass true to return masks, pass false to return stickers +local function getStickerSets(is_masks, dl_cb, cmd) + tdcli_function ({ + ID = "GetStickerSets", + is_masks_ = is_masks + }, dl_cb, cmd) +end + +M.getStickerSets = getStickerSets + +-- Returns list of archived sticker sets +-- @is_masks Pass true to return masks, pass false to return stickers +-- @offset_sticker_set_id Identifier of the sticker set from which return the result +-- @limit Maximum number of sticker sets to return +local function getArchivedStickerSets(is_masks, offset_sticker_set_id, limit, dl_cb, cmd) + tdcli_function ({ + ID = "GetArchivedStickerSets", + is_masks_ = is_masks, + offset_sticker_set_id_ = offset_sticker_set_id, + limit_ = limit + }, dl_cb, cmd) +end + +M.getArchivedStickerSets = getArchivedStickerSets + +-- Returns list of trending sticker sets +local function getTrendingStickerSets(dl_cb, cmd) + tdcli_function ({ + ID = "GetTrendingStickerSets" + }, dl_cb, cmd) +end + +M.getTrendingStickerSets = getTrendingStickerSets + +-- Returns list of sticker sets attached to a file, currently only photos and videos can have attached sticker sets +-- @file_id File identifier +local function getAttachedStickerSets(file_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetAttachedStickerSets", + file_id_ = file_id + }, dl_cb, cmd) +end + +M.getAttachedStickerSets = getAttachedStickerSets + +-- Returns information about sticker set by its identifier +-- @set_id Identifier of the sticker set +local function getStickerSet(set_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetStickerSet", + set_id_ = set_id + }, dl_cb, cmd) +end + +M.getStickerSet = getStickerSet + +-- Searches sticker set by its short name +-- @name Name of the sticker set +local function searchStickerSet(name, dl_cb, cmd) + tdcli_function ({ + ID = "SearchStickerSet", + name_ = name + }, dl_cb, cmd) +end + +M.searchStickerSet = searchStickerSet + +-- Installs/uninstalls or enables/archives sticker set. +-- Official sticker set can't be uninstalled, but it can be archived +-- @set_id Identifier of the sticker set +-- @is_installed New value of is_installed +-- @is_archived New value of is_archived +local function updateStickerSet(set_id, is_installed, is_archived, dl_cb, cmd) + tdcli_function ({ + ID = "UpdateStickerSet", + set_id_ = set_id, + is_installed_ = is_installed, + is_archived_ = is_archived + }, dl_cb, cmd) +end + +M.updateStickerSet = updateStickerSet + +-- Trending sticker sets are viewed by the user +-- @sticker_set_ids Identifiers of viewed trending sticker sets +local function viewTrendingStickerSets(sticker_set_ids, dl_cb, cmd) + tdcli_function ({ + ID = "ViewTrendingStickerSets", + sticker_set_ids_ = sticker_set_ids -- vector + }, dl_cb, cmd) +end + +M.viewTrendingStickerSets = viewTrendingStickerSets + +-- Changes the order of installed sticker sets +-- @is_masks Pass true to change masks order, pass false to change stickers order +-- @sticker_set_ids Identifiers of installed sticker sets in the new right order +local function reorderStickerSets(is_masks, sticker_set_ids, dl_cb, cmd) + tdcli_function ({ + ID = "ReorderStickerSets", + is_masks_ = is_masks, + sticker_set_ids_ = sticker_set_ids -- vector + }, dl_cb, cmd) +end + +M.reorderStickerSets = reorderStickerSets + +-- Returns list of recently used stickers +-- @is_attached Pass true to return stickers and masks recently attached to photo or video files, pass false to return recently sent stickers +local function getRecentStickers(is_attached, dl_cb, cmd) + tdcli_function ({ + ID = "GetRecentStickers", + is_attached_ = is_attached + }, dl_cb, cmd) +end + +M.getRecentStickers = getRecentStickers + +-- Manually adds new sticker to the list of recently used stickers. +-- New sticker is added to the beginning of the list. +-- If the sticker is already in the list, at first it is removed from the list +-- @is_attached Pass true to add the sticker to the list of stickers recently attached to photo or video files, pass false to add the sticker to the list of recently sent stickers +-- @sticker Sticker file to add +local function addRecentSticker(is_attached, sticker, dl_cb, cmd) + tdcli_function ({ + ID = "AddRecentSticker", + is_attached_ = is_attached, + sticker_ = getInputFile(sticker) + }, dl_cb, cmd) +end + +M.addRecentSticker = addRecentSticker + +-- Removes a sticker from the list of recently used stickers +-- @is_attached Pass true to remove the sticker from the list of stickers recently attached to photo or video files, pass false to remove the sticker from the list of recently sent stickers +-- @sticker Sticker file to delete +local function deleteRecentSticker(is_attached, sticker, dl_cb, cmd) + tdcli_function ({ + ID = "DeleteRecentSticker", + is_attached_ = is_attached, + sticker_ = getInputFile(sticker) + }, dl_cb, cmd) +end + +M.deleteRecentSticker = deleteRecentSticker + +-- Clears list of recently used stickers +-- @is_attached Pass true to clear list of stickers recently attached to photo or video files, pass false to clear the list of recently sent stickers +local function clearRecentStickers(is_attached, dl_cb, cmd) + tdcli_function ({ + ID = "ClearRecentStickers", + is_attached_ = is_attached + }, dl_cb, cmd) +end + +M.clearRecentStickers = clearRecentStickers + +-- Returns emojis corresponding to a sticker +-- @sticker Sticker file identifier +local function getStickerEmojis(sticker, dl_cb, cmd) + tdcli_function ({ + ID = "GetStickerEmojis", + sticker_ = getInputFile(sticker) + }, dl_cb, cmd) +end + +M.getStickerEmojis = getStickerEmojis + +-- Returns saved animations +local function getSavedAnimations(dl_cb, cmd) + tdcli_function ({ + ID = "GetSavedAnimations", + }, dl_cb, cmd) +end + +M.getSavedAnimations = getSavedAnimations + +-- Manually adds new animation to the list of saved animations. +-- New animation is added to the beginning of the list. +-- If the animation is already in the list, at first it is removed from the list. +-- Only non-secret video animations with MIME type "video/mp4" can be added to the list +-- @animation Animation file to add. Only known to server animations (i. e. successfully sent via message) can be added to the list +local function addSavedAnimation(animation, dl_cb, cmd) + tdcli_function ({ + ID = "AddSavedAnimation", + animation_ = getInputFile(animation) + }, dl_cb, cmd) +end + +M.addSavedAnimation = addSavedAnimation + +-- Removes animation from the list of saved animations +-- @animation Animation file to delete +local function deleteSavedAnimation(animation, dl_cb, cmd) + tdcli_function ({ + ID = "DeleteSavedAnimation", + animation_ = getInputFile(animation) + }, dl_cb, cmd) +end + +M.deleteSavedAnimation = deleteSavedAnimation + +-- Returns up to 20 recently used inline bots in the order of the last usage +local function getRecentInlineBots(dl_cb, cmd) + tdcli_function ({ + ID = "GetRecentInlineBots", + }, dl_cb, cmd) +end + +M.getRecentInlineBots = getRecentInlineBots + +-- Get web page preview by text of the message. +-- Do not call this function to often +-- @message_text Message text +local function getWebPagePreview(message_text, dl_cb, cmd) + tdcli_function ({ + ID = "GetWebPagePreview", + message_text_ = message_text + }, dl_cb, cmd) +end + +M.getWebPagePreview = getWebPagePreview + +-- Returns notification settings for a given scope +-- @scope Scope to return information about notification settings +-- scope = Chat(chat_id)|PrivateChats|GroupChats|AllChats| +local function getNotificationSettings(scope, chat_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetNotificationSettings", + scope_ = { + ID = 'NotificationSettingsFor' .. scope, + chat_id_ = chat_id or nil + }, + }, dl_cb, cmd) +end + +M.getNotificationSettings = getNotificationSettings + +-- Changes notification settings for a given scope +-- @scope Scope to change notification settings +-- @notification_settings New notification settings for given scope +-- scope = Chat(chat_id)|PrivateChats|GroupChats|AllChats| +local function setNotificationSettings(scope, chat_id, mute_for, show_preview, dl_cb, cmd) + tdcli_function ({ + ID = "SetNotificationSettings", + scope_ = { + ID = 'NotificationSettingsFor' .. scope, + chat_id_ = chat_id or nil + }, + notification_settings_ = { + ID = "NotificationSettings", + mute_for_ = mute_for, + sound_ = "default", + show_preview_ = show_preview + } + }, dl_cb, cmd) +end + +M.setNotificationSettings = setNotificationSettings + +-- Resets all notification settings to the default value. +-- By default the only muted chats are supergroups, sound is set to 'default' and message previews are showed +local function resetAllNotificationSettings(dl_cb, cmd) + tdcli_function ({ + ID = "ResetAllNotificationSettings" + }, dl_cb, cmd) +end + +M.resetAllNotificationSettings = resetAllNotificationSettings + +-- Uploads new profile photo for logged in user. +-- Photo will not change until change will be synchronized with the server. +-- Photo will not be changed if application is killed before it can send request to the server. +-- If something changes, updateUser will be sent +-- @photo_path Path to new profile photo +local function setProfilePhoto(photo_path, dl_cb, cmd) + tdcli_function ({ + ID = "SetProfilePhoto", + photo_path_ = photo_path + }, dl_cb, cmd) +end + +M.setProfilePhoto = setProfilePhoto + +-- Deletes profile photo. +-- If something changes, updateUser will be sent +-- @profile_photo_id Identifier of profile photo to delete +local function deleteProfilePhoto(profile_photo_id, dl_cb, cmd) + tdcli_function ({ + ID = "DeleteProfilePhoto", + profile_photo_id_ = profile_photo_id + }, dl_cb, cmd) +end + +M.deleteProfilePhoto = deleteProfilePhoto + +-- Changes first and last names of logged in user. +-- If something changes, updateUser will be sent +-- @first_name New value of user first name, 1-255 characters +-- @last_name New value of optional user last name, 0-255 characters +local function changeName(first_name, last_name, dl_cb, cmd) + tdcli_function ({ + ID = "ChangeName", + first_name_ = first_name, + last_name_ = last_name + }, dl_cb, cmd) +end + +M.changeName = changeName + +-- Changes about information of logged in user +-- @about New value of userFull.about, 0-255 characters +local function changeAbout(about, dl_cb, cmd) + tdcli_function ({ + ID = "ChangeAbout", + about_ = about + }, dl_cb, cmd) +end + +M.changeAbout = changeAbout + +-- Changes username of logged in user. +-- If something changes, updateUser will be sent +-- @username New value of username. Use empty string to remove username +local function changeUsername(username, dl_cb, cmd) + tdcli_function ({ + ID = "ChangeUsername", + username_ = username + }, dl_cb, cmd) +end + +M.changeUsername = changeUsername + +-- Changes user's phone number and sends authentication code to the new user's phone number. +-- Returns authStateWaitCode with information about sent code on success +-- @phone_number New user's phone number in any reasonable format +-- @allow_flash_call Pass True, if code can be sent via flash call to the specified phone number +-- @is_current_phone_number Pass true, if the phone number is used on the current device. Ignored if allow_flash_call is False +local function changePhoneNumber(phone_number, allow_flash_call, is_current_phone_number, dl_cb, cmd) + tdcli_function ({ + ID = "ChangePhoneNumber", + phone_number_ = phone_number, + allow_flash_call_ = allow_flash_call, + is_current_phone_number_ = is_current_phone_number + }, dl_cb, cmd) +end + +M.changePhoneNumber = changePhoneNumber + +-- Resends authentication code sent to change user's phone number. +-- Works only if in previously received authStateWaitCode next_code_type was not null. +-- Returns authStateWaitCode on success +local function resendChangePhoneNumberCode(dl_cb, cmd) + tdcli_function ({ + ID = "ResendChangePhoneNumberCode", + }, dl_cb, cmd) +end + +M.resendChangePhoneNumberCode = resendChangePhoneNumberCode + +-- Checks authentication code sent to change user's phone number. +-- Returns authStateOk on success +-- @code Verification code from SMS, voice call or flash call +local function checkChangePhoneNumberCode(code, dl_cb, cmd) + tdcli_function ({ + ID = "CheckChangePhoneNumberCode", + code_ = code + }, dl_cb, cmd) +end + +M.checkChangePhoneNumberCode = checkChangePhoneNumberCode + +-- Returns all active sessions of logged in user +local function getActiveSessions(dl_cb, cmd) + tdcli_function ({ + ID = "GetActiveSessions", + }, dl_cb, cmd) +end + +M.getActiveSessions = getActiveSessions + +-- Terminates another session of logged in user +-- @session_id Session identifier +local function terminateSession(session_id, dl_cb, cmd) + tdcli_function ({ + ID = "TerminateSession", + session_id_ = session_id + }, dl_cb, cmd) +end + +M.terminateSession = terminateSession + +-- Terminates all other sessions of logged in user +local function terminateAllOtherSessions(dl_cb, cmd) + tdcli_function ({ + ID = "TerminateAllOtherSessions", + }, dl_cb, cmd) +end + +M.terminateAllOtherSessions = terminateAllOtherSessions + +-- Gives or revokes all members of the group editor rights. +-- Needs creator privileges in the group +-- @group_id Identifier of the group +-- @anyone_can_edit New value of anyone_can_edit +local function toggleGroupEditors(group_id, anyone_can_edit, dl_cb, cmd) + tdcli_function ({ + ID = "ToggleGroupEditors", + group_id_ = getChatId(group_id).ID, + anyone_can_edit_ = anyone_can_edit + }, dl_cb, cmd) +end + +M.toggleGroupEditors = toggleGroupEditors + +-- Changes username of the channel. +-- Needs creator privileges in the channel +-- @channel_id Identifier of the channel +-- @username New value of username. Use empty string to remove username +local function changeChannelUsername(channel_id, username, dl_cb, cmd) + tdcli_function ({ + ID = "ChangeChannelUsername", + channel_id_ = getChatId(channel_id).ID, + username_ = username + }, dl_cb, cmd) +end + +M.changeChannelUsername = changeChannelUsername + +-- Gives or revokes right to invite new members to all current members of the channel. +-- Needs creator privileges in the channel. +-- Available only for supergroups +-- @channel_id Identifier of the channel +-- @anyone_can_invite New value of anyone_can_invite +local function toggleChannelInvites(channel_id, anyone_can_invite, dl_cb, cmd) + tdcli_function ({ + ID = "ToggleChannelInvites", + channel_id_ = getChatId(channel_id).ID, + anyone_can_invite_ = anyone_can_invite + }, dl_cb, cmd) +end + +M.toggleChannelInvites = toggleChannelInvites + +-- Enables or disables sender signature on sent messages in the channel. +-- Needs creator privileges in the channel. +-- Not available for supergroups +-- @channel_id Identifier of the channel +-- @sign_messages New value of sign_messages +local function toggleChannelSignMessages(channel_id, sign_messages, dl_cb, cmd) + tdcli_function ({ + ID = "ToggleChannelSignMessages", + channel_id_ = getChatId(channel_id).ID, + sign_messages_ = sign_messages + }, dl_cb, cmd) +end + +M.toggleChannelSignMessages = toggleChannelSignMessages + +-- Changes information about the channel. +-- Needs creator privileges in the broadcast channel or editor privileges in the supergroup channel +-- @channel_id Identifier of the channel +-- @about New value of about, 0-255 characters +local function changeChannelAbout(channel_id, about, dl_cb, cmd) + tdcli_function ({ + ID = "ChangeChannelAbout", + channel_id_ = getChatId(channel_id).ID, + about_ = about + }, dl_cb, cmd) +end + +M.changeChannelAbout = changeChannelAbout + +-- Pins a message in a supergroup channel chat. +-- Needs editor privileges in the channel +-- @channel_id Identifier of the channel +-- @message_id Identifier of the new pinned message +-- @disable_notification True, if there should be no notification about the pinned message +local function pinChannelMessage(channel_id, message_id, disable_notification, dl_cb, cmd) + tdcli_function ({ + ID = "PinChannelMessage", + channel_id_ = getChatId(channel_id).ID, + message_id_ = message_id, + disable_notification_ = disable_notification + }, dl_cb, cmd) +end + +M.pinChannelMessage = pinChannelMessage + +-- Removes pinned message in the supergroup channel. +-- Needs editor privileges in the channel +-- @channel_id Identifier of the channel +local function unpinChannelMessage(channel_id, dl_cb, cmd) + tdcli_function ({ + ID = "UnpinChannelMessage", + channel_id_ = getChatId(channel_id).ID + }, dl_cb, cmd) +end + +M.unpinChannelMessage = unpinChannelMessage + +-- Reports some supergroup channel messages from a user as spam messages +-- @channel_id Channel identifier +-- @user_id User identifier +-- @message_ids Identifiers of messages sent in the supergroup by the user, the list should be non-empty +local function reportChannelSpam(channel_id, user_id, message_ids, dl_cb, cmd) + tdcli_function ({ + ID = "ReportChannelSpam", + channel_id_ = getChatId(channel_id).ID, + user_id_ = user_id, + message_ids_ = message_ids -- vector + }, dl_cb, cmd) +end + +M.reportChannelSpam = reportChannelSpam + +-- Returns information about channel members or kicked from channel users. +-- Can be used only if channel_full->can_get_members == true +-- @channel_id Identifier of the channel +-- @filter Kind of channel users to return, defaults to channelMembersRecent +-- @offset Number of channel users to skip +-- @limit Maximum number of users be returned, can't be greater than 200 +-- filter = Recent|Administrators|Kicked|Bots +local function getChannelMembers(channel_id, offset, filter, limit, dl_cb, cmd) + if not limit or limit > 200 then + limit = 200 + end + + tdcli_function ({ + ID = "GetChannelMembers", + channel_id_ = getChatId(channel_id).ID, + filter_ = { + ID = "ChannelMembers" .. filter + }, + offset_ = offset, + limit_ = limit + }, dl_cb, cmd) +end + +M.getChannelMembers = getChannelMembers + +-- Deletes channel along with all messages in corresponding chat. +-- Releases channel username and removes all members. +-- Needs creator privileges in the channel. +-- Channels with more than 1000 members can't be deleted +-- @channel_id Identifier of the channel +local function deleteChannel(channel_id, dl_cb, cmd) + tdcli_function ({ + ID = "DeleteChannel", + channel_id_ = getChatId(channel_id).ID + }, dl_cb, cmd) +end + +M.deleteChannel = deleteChannel + +-- Returns list of created public channels +local function getCreatedPublicChannels(dl_cb, cmd) + tdcli_function ({ + ID = "GetCreatedPublicChannels" + }, dl_cb, cmd) +end + +M.getCreatedPublicChannels = getCreatedPublicChannels + +-- Closes secret chat +-- @secret_chat_id Secret chat identifier +local function closeSecretChat(secret_chat_id, dl_cb, cmd) + tdcli_function ({ + ID = "CloseSecretChat", + secret_chat_id_ = secret_chat_id + }, dl_cb, cmd) +end + +M.closeSecretChat = closeSecretChat + +-- Returns user that can be contacted to get support +local function getSupportUser(dl_cb, cmd) + tdcli_function ({ + ID = "GetSupportUser", + }, dl_cb, cmd) +end + +M.getSupportUser = getSupportUser + +-- Returns background wallpapers +local function getWallpapers(dl_cb, cmd) + tdcli_function ({ + ID = "GetWallpapers", + }, dl_cb, cmd) +end + +M.getWallpapers = getWallpapers + +-- Registers current used device for receiving push notifications +-- @device_token Device token +-- device_token = apns|gcm|mpns|simplePush|ubuntuPhone|blackberry +local function registerDevice(device_token, token, device_token_set, dl_cb, cmd) + local dToken = {ID = device_token .. 'DeviceToken', token_ = token} + + if device_token_set then + dToken = {ID = "DeviceTokenSet", token_ = device_token_set} -- tokens:vector<DeviceToken> + end + + tdcli_function ({ + ID = "RegisterDevice", + device_token_ = dToken + }, dl_cb, cmd) +end + +M.registerDevice = registerDevice + +-- Returns list of used device tokens +local function getDeviceTokens(dl_cb, cmd) + tdcli_function ({ + ID = "GetDeviceTokens", + }, dl_cb, cmd) +end + +M.getDeviceTokens = getDeviceTokens + +-- Changes privacy settings +-- @key Privacy key +-- @rules New privacy rules +-- @privacyKeyUserStatus Privacy key for managing visibility of the user status +-- @privacyKeyChatInvite Privacy key for managing ability of invitation of the user to chats +-- @privacyRuleAllowAll Rule to allow all users +-- @privacyRuleAllowContacts Rule to allow all user contacts +-- @privacyRuleAllowUsers Rule to allow specified users +-- @user_ids User identifiers +-- @privacyRuleDisallowAll Rule to disallow all users +-- @privacyRuleDisallowContacts Rule to disallow all user contacts +-- @privacyRuleDisallowUsers Rule to disallow all specified users +-- key = UserStatus|ChatInvite +-- rules = AllowAll|AllowContacts|AllowUsers(user_ids)|DisallowAll|DisallowContacts|DisallowUsers(user_ids) +local function setPrivacy(key, rule, allowed_user_ids, disallowed_user_ids, dl_cb, cmd) + local rules = {[0] = {ID = 'PrivacyRule' .. rule}} + + if allowed_user_ids then + rules = { + { + ID = 'PrivacyRule' .. rule + }, + [0] = { + ID = "PrivacyRuleAllowUsers", + user_ids_ = allowed_user_ids -- vector + }, + } + end + if disallowed_user_ids then + rules = { + { + ID = 'PrivacyRule' .. rule + }, + [0] = { + ID = "PrivacyRuleDisallowUsers", + user_ids_ = disallowed_user_ids -- vector + }, + } + end + if allowed_user_ids and disallowed_user_ids then + rules = { + { + ID = 'PrivacyRule' .. rule + }, + { + ID = "PrivacyRuleAllowUsers", + user_ids_ = allowed_user_ids + }, + [0] = { + ID = "PrivacyRuleDisallowUsers", + user_ids_ = disallowed_user_ids + }, + } + end + tdcli_function ({ + ID = "SetPrivacy", + key_ = { + ID = 'PrivacyKey' .. key + }, + rules_ = { + ID = "PrivacyRules", + rules_ = rules + }, + }, dl_cb, cmd) +end + +M.setPrivacy = setPrivacy + +-- Returns current privacy settings +-- @key Privacy key +-- key = UserStatus|ChatInvite +local function getPrivacy(key, dl_cb, cmd) + tdcli_function ({ + ID = "GetPrivacy", + key_ = { + ID = "PrivacyKey" .. key + }, + }, dl_cb, cmd) +end + +M.getPrivacy = getPrivacy + +-- Returns value of an option by its name. +-- See list of available options on https://core.telegram.org/tdlib/options +-- @name Name of the option +local function getOption(name, dl_cb, cmd) + tdcli_function ({ + ID = "GetOption", + name_ = name + }, dl_cb, cmd) +end + +M.getOption = getOption + +-- Sets value of an option. +-- See list of available options on https://core.telegram.org/tdlib/options. +-- Only writable options can be set +-- @name Name of the option +-- @value New value of the option +local function setOption(name, option, value, dl_cb, cmd) + tdcli_function ({ + ID = "SetOption", + name_ = name, + value_ = { + ID = 'Option' .. option, + value_ = value + }, + }, dl_cb, cmd) +end + +M.setOption = setOption + +-- Changes period of inactivity, after which the account of currently logged in user will be automatically deleted +-- @ttl New account TTL +local function changeAccountTtl(days, dl_cb, cmd) + tdcli_function ({ + ID = "ChangeAccountTtl", + ttl_ = { + ID = "AccountTtl", + days_ = days + }, + }, dl_cb, cmd) +end + +M.changeAccountTtl = changeAccountTtl + +-- Returns period of inactivity, after which the account of currently logged in user will be automatically deleted +local function getAccountTtl(dl_cb, cmd) + tdcli_function ({ + ID = "GetAccountTtl", + }, dl_cb, cmd) +end + +M.getAccountTtl = getAccountTtl + +-- Deletes the account of currently logged in user, deleting from the server all information associated with it. +-- Account's phone number can be used to create new account, but only once in two weeks +-- @reason Optional reason of account deletion +local function deleteAccount(reason, dl_cb, cmd) + tdcli_function ({ + ID = "DeleteAccount", + reason_ = reason + }, dl_cb, cmd) +end + +M.deleteAccount = deleteAccount + +-- Returns current chat report spam state +-- @chat_id Chat identifier +local function getChatReportSpamState(chat_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetChatReportSpamState", + chat_id_ = chat_id + }, dl_cb, cmd) +end + +M.getChatReportSpamState = getChatReportSpamState + +-- Reports chat as a spam chat or as not a spam chat. +-- Can be used only if ChatReportSpamState.can_report_spam is true. +-- After this request ChatReportSpamState.can_report_spam became false forever +-- @chat_id Chat identifier +-- @is_spam_chat If true, chat will be reported as a spam chat, otherwise it will be marked as not a spam chat +local function changeChatReportSpamState(chat_id, is_spam_chat, dl_cb, cmd) + tdcli_function ({ + ID = "ChangeChatReportSpamState", + chat_id_ = chat_id, + is_spam_chat_ = is_spam_chat + }, dl_cb, cmd) +end + +M.changeChatReportSpamState = changeChatReportSpamState + +-- Bots only. +-- Informs server about number of pending bot updates if they aren't processed for a long time +-- @pending_update_count Number of pending updates +-- @error_message Last error's message +local function setBotUpdatesStatus(pending_update_count, error_message, dl_cb, cmd) + tdcli_function ({ + ID = "SetBotUpdatesStatus", + pending_update_count_ = pending_update_count, + error_message_ = error_message + }, dl_cb, cmd) +end + +M.setBotUpdatesStatus = setBotUpdatesStatus + +-- Returns Ok after specified amount of the time passed +-- @seconds Number of seconds before that function returns +local function setAlarm(seconds, dl_cb, cmd) + tdcli_function ({ + ID = "SetAlarm", + seconds_ = seconds + }, dl_cb, cmd) +end + +M.setAlarm = setAlarm + +-- Text message +-- @text Text to send +-- @disable_notification Pass true, to disable notification about the message, doesn't works in secret chats +-- @from_background Pass true, if the message is sent from background +-- @reply_markup Bots only. Markup for replying to message +-- @disable_web_page_preview Pass true to disable rich preview for link in the message text +-- @clear_draft Pass true if chat draft message should be deleted +-- @entities Bold, Italic, Code, Pre, PreCode and TextUrl entities contained in the text. Non-bot users can't use TextUrl entities. Can't be used with non-null parse_mode +-- @parse_mode Text parse mode, nullable. Can't be used along with enitities +local function sendMessage(chat_id, reply_to_message_id, disable_notification, text, disable_web_page_preview, parse_mode) + local TextParseMode = getParseMode(parse_mode) + + tdcli_function ({ + ID = "SendMessage", + chat_id_ = chat_id, + reply_to_message_id_ = reply_to_message_id, + disable_notification_ = disable_notification, + from_background_ = 1, + reply_markup_ = nil, + input_message_content_ = { + ID = "InputMessageText", + text_ = text, + disable_web_page_preview_ = disable_web_page_preview, + clear_draft_ = 0, + entities_ = {}, + parse_mode_ = TextParseMode, + }, + }, dl_cb, nil) +end + +M.sendMessage = sendMessage + +-- Animation message +-- @animation Animation file to send +-- @thumb Animation thumb, if available +-- @width Width of the animation, may be replaced by the server +-- @height Height of the animation, may be replaced by the server +-- @caption Animation caption, 0-200 characters +local function sendAnimation(chat_id, reply_to_message_id, disable_notification, from_background, reply_markup, animation, width, height, caption, dl_cb, cmd) + tdcli_function ({ + ID = "SendMessage", + chat_id_ = chat_id, + reply_to_message_id_ = reply_to_message_id, + disable_notification_ = disable_notification, + from_background_ = from_background, + reply_markup_ = reply_markup, + input_message_content_ = { + ID = "InputMessageAnimation", + animation_ = getInputFile(animation), + --thumb_ = { + --ID = "InputThumb", + --path_ = path, + --width_ = width, + --height_ = height + --}, + width_ = width or '', + height_ = height or '', + caption_ = caption or '' + }, + }, dl_cb, cmd) +end + +M.sendAnimation = sendAnimation + +-- Audio message +-- @audio Audio file to send +-- @album_cover_thumb Thumb of the album's cover, if available +-- @duration Duration of audio in seconds, may be replaced by the server +-- @title Title of the audio, 0-64 characters, may be replaced by the server +-- @performer Performer of the audio, 0-64 characters, may be replaced by the server +-- @caption Audio caption, 0-200 characters +local function sendAudio(chat_id, reply_to_message_id, disable_notification, from_background, reply_markup, audio, duration, title, performer, caption, dl_cb, cmd) + tdcli_function ({ + ID = "SendMessage", + chat_id_ = chat_id, + reply_to_message_id_ = reply_to_message_id, + disable_notification_ = disable_notification, + from_background_ = from_background, + reply_markup_ = reply_markup, + input_message_content_ = { + ID = "InputMessageAudio", + audio_ = getInputFile(audio), + --album_cover_thumb_ = { + --ID = "InputThumb", + --path_ = path, + --width_ = width, + --height_ = height + --}, + duration_ = duration or '', + title_ = title or '', + performer_ = performer or '', + caption_ = caption or '' + }, + }, dl_cb, cmd) +end + +M.sendAudio = sendAudio + +-- Document message +-- @document Document to send +-- @thumb Document thumb, if available +-- @caption Document caption, 0-200 characters +local function sendDocument(chat_id, reply_to_message_id, disable_notification, from_background, reply_markup, document, caption, dl_cb, cmd) + tdcli_function ({ + ID = "SendMessage", + chat_id_ = chat_id, + reply_to_message_id_ = reply_to_message_id, + disable_notification_ = disable_notification, + from_background_ = from_background, + reply_markup_ = reply_markup, + input_message_content_ = { + ID = "InputMessageDocument", + document_ = getInputFile(document), + --thumb_ = { + --ID = "InputThumb", + --path_ = path, + --width_ = width, + --height_ = height + --}, + caption_ = caption + }, + }, dl_cb, cmd) +end + +M.sendDocument = sendDocument + +-- Photo message +-- @photo Photo to send +-- @caption Photo caption, 0-200 characters +local function sendPhoto(chat_id, reply_to_message_id, disable_notification, from_background, reply_markup, photo, caption, dl_cb, cmd) + tdcli_function ({ + ID = "SendMessage", + chat_id_ = chat_id, + reply_to_message_id_ = reply_to_message_id, + disable_notification_ = disable_notification, + from_background_ = from_background, + reply_markup_ = reply_markup, + input_message_content_ = { + ID = "InputMessagePhoto", + photo_ = getInputFile(photo), + added_sticker_file_ids_ = {}, + width_ = 0, + height_ = 0, + caption_ = caption + }, + }, dl_cb, cmd) +end + +M.sendPhoto = sendPhoto + +-- Sticker message +-- @sticker Sticker to send +-- @thumb Sticker thumb, if available +local function sendSticker(chat_id, reply_to_message_id, disable_notification, from_background, reply_markup, sticker, dl_cb, cmd) + tdcli_function ({ + ID = "SendMessage", + chat_id_ = chat_id, + reply_to_message_id_ = reply_to_message_id, + disable_notification_ = disable_notification, + from_background_ = from_background, + reply_markup_ = reply_markup, + input_message_content_ = { + ID = "InputMessageSticker", + sticker_ = getInputFile(sticker), + --thumb_ = { + --ID = "InputThumb", + --path_ = path, + --width_ = width, + --height_ = height + --}, + }, + }, dl_cb, cmd) +end + +M.sendSticker = sendSticker + +-- Video message +-- @video Video to send +-- @thumb Video thumb, if available +-- @duration Duration of video in seconds +-- @width Video width +-- @height Video height +-- @caption Video caption, 0-200 characters +local function sendVideo(chat_id, reply_to_message_id, disable_notification, from_background, reply_markup, video, duration, width, height, caption, dl_cb, cmd) + tdcli_function ({ + ID = "SendMessage", + chat_id_ = chat_id, + reply_to_message_id_ = reply_to_message_id, + disable_notification_ = disable_notification, + from_background_ = from_background, + reply_markup_ = reply_markup, + input_message_content_ = { + ID = "InputMessageVideo", + video_ = getInputFile(video), + --thumb_ = { + --ID = "InputThumb", + --path_ = path, + --width_ = width, + --height_ = height + --}, + added_sticker_file_ids_ = {}, + duration_ = duration or '', + width_ = width or '', + height_ = height or '', + caption_ = caption or '' + }, + }, dl_cb, cmd) +end + +M.sendVideo = sendVideo + +-- Voice message +-- @voice Voice file to send +-- @duration Duration of voice in seconds +-- @waveform Waveform representation of the voice in 5-bit format +-- @caption Voice caption, 0-200 characters +local function sendVoice(chat_id, reply_to_message_id, disable_notification, from_background, reply_markup, voice, duration, waveform, caption, dl_cb, cmd) + tdcli_function ({ + ID = "SendMessage", + chat_id_ = chat_id, + reply_to_message_id_ = reply_to_message_id, + disable_notification_ = disable_notification, + from_background_ = from_background, + reply_markup_ = reply_markup, + input_message_content_ = { + ID = "InputMessageVoice", + voice_ = getInputFile(voice), + duration_ = duration or '', + waveform_ = waveform or '', + caption_ = caption or '' + }, + }, dl_cb, cmd) +end + +M.sendVoice = sendVoice + +-- Message with location +-- @latitude Latitude of location in degrees as defined by sender +-- @longitude Longitude of location in degrees as defined by sender +local function sendLocation(chat_id, reply_to_message_id, disable_notification, from_background, reply_markup, latitude, longitude, dl_cb, cmd) + tdcli_function ({ + ID = "SendMessage", + chat_id_ = chat_id, + reply_to_message_id_ = reply_to_message_id, + disable_notification_ = disable_notification, + from_background_ = from_background, + reply_markup_ = reply_markup, + input_message_content_ = { + ID = "InputMessageLocation", + location_ = { + ID = "Location", + latitude_ = latitude, + longitude_ = longitude + }, + }, + }, dl_cb, cmd) +end + +M.sendLocation = sendLocation + +-- Message with information about venue +-- @venue Venue to send +-- @latitude Latitude of location in degrees as defined by sender +-- @longitude Longitude of location in degrees as defined by sender +-- @title Venue name as defined by sender +-- @address Venue address as defined by sender +-- @provider Provider of venue database as defined by sender. Only "foursquare" need to be supported currently +-- @id Identifier of the venue in provider database as defined by sender +local function sendVenue(chat_id, reply_to_message_id, disable_notification, from_background, reply_markup, latitude, longitude, title, address, id, dl_cb, cmd) + tdcli_function ({ + ID = "SendMessage", + chat_id_ = chat_id, + reply_to_message_id_ = reply_to_message_id, + disable_notification_ = disable_notification, + from_background_ = from_background, + reply_markup_ = reply_markup, + input_message_content_ = { + ID = "InputMessageVenue", + venue_ = { + ID = "Venue", + location_ = { + ID = "Location", + latitude_ = latitude, + longitude_ = longitude + }, + title_ = title, + address_ = address, + provider_ = 'foursquare', + id_ = id + }, + }, + }, dl_cb, cmd) +end + +M.sendVenue = sendVenue + +-- User contact message +-- @contact Contact to send +-- @phone_number User's phone number +-- @first_name User first name, 1-255 characters +-- @last_name User last name +-- @user_id User identifier if known, 0 otherwise +local function sendContact(chat_id, reply_to_message_id, disable_notification, from_background, reply_markup, phone_number, first_name, last_name, user_id, dl_cb, cmd) + tdcli_function ({ + ID = "SendMessage", + chat_id_ = chat_id, + reply_to_message_id_ = reply_to_message_id, + disable_notification_ = disable_notification, + from_background_ = from_background, + reply_markup_ = reply_markup, + input_message_content_ = { + ID = "InputMessageContact", + contact_ = { + ID = "Contact", + phone_number_ = phone_number, + first_name_ = first_name, + last_name_ = last_name, + user_id_ = user_id + }, + }, + }, dl_cb, cmd) +end + +M.sendContact = sendContact + +-- Message with a game +-- @bot_user_id User identifier of a bot owned the game +-- @game_short_name Game short name +local function sendGame(chat_id, reply_to_message_id, disable_notification, from_background, reply_markup, bot_user_id, game_short_name, dl_cb, cmd) + tdcli_function ({ + ID = "SendMessage", + chat_id_ = chat_id, + reply_to_message_id_ = reply_to_message_id, + disable_notification_ = disable_notification, + from_background_ = from_background, + reply_markup_ = reply_markup, + input_message_content_ = { + ID = "InputMessageGame", + bot_user_id_ = bot_user_id, + game_short_name_ = game_short_name + }, + }, dl_cb, cmd) +end + +M.sendGame = sendGame + +-- Forwarded message +-- @from_chat_id Chat identifier of the message to forward +-- @message_id Identifier of the message to forward +local function sendForwarded(chat_id, reply_to_message_id, disable_notification, from_background, reply_markup, from_chat_id, message_id, dl_cb, cmd) + tdcli_function ({ + ID = "SendMessage", + chat_id_ = chat_id, + reply_to_message_id_ = reply_to_message_id, + disable_notification_ = disable_notification, + from_background_ = from_background, + reply_markup_ = reply_markup, + input_message_content_ = { + ID = "InputMessageForwarded", + from_chat_id_ = from_chat_id, + message_id_ = message_id + }, + }, dl_cb, cmd) +end + +M.sendForwarded = sendForwarded + +return M cli/tg/tgcli (Binary file not shown.) 0 comments on commit 3233fdf Comment on 3233fdf Leave a comment Comment Desktop version
Simplifi-ED
Go cli to check Cloud services (Azure for now) prices on the fly
Saturnremabtc64
Gear61 / Random-Number-Generator Code Issues 5 Pull requests 0 Projects 0 Wiki Pulse projectFilesBackup/.idea/workspace.xml <?xml version="1.0" encoding="UTF-8"?> <project version="4"> <component name="AndroidLayouts"> <shared> <config /> </shared> </component> <component name="AndroidLogFilters"> <option name="TOOL_WINDOW_CONFIGURED_FILTER" value="Show only selected application" /> </component> <component name="ChangeListManager"> <list default="true" id="f5e37520-ca17-4d94-bb6c-b4cbc9c73568" name="Default" comment="" /> <ignored path="rngplus.iws" /> <ignored path=".idea/workspace.xml" /> <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" /> <option name="TRACKING_ENABLED" value="true" /> <option name="SHOW_DIALOG" value="false" /> <option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" /> <option name="LAST_RESOLUTION" value="IGNORE" /> </component> <component name="ChangesViewManager" flattened_view="true" show_ignored="false" /> <component name="CreatePatchCommitExecutor"> <option name="PATCH_PATH" value="" /> </component> <component name="ExecutionTargetManager" SELECTED_TARGET="default_target" /> <component name="ExternalProjectsManager"> <system id="GRADLE"> <state> <projects_view /> </state> </system> </component> <component name="FavoritesManager"> <favorites_list name="rngplus" /> </component> <component name="FileEditorManager"> <leaf SIDE_TABS_SIZE_LIMIT_KEY="300"> <file leaf-file-name="SettingsActivity.java" pinned="false" current-in-tab="false"> <entry file="file://$PROJECT_DIR$/app/src/main/java/com/randomappsinc/randomnumbergeneratorplus/Activities/SettingsActivity.java"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.0"> <caret line="21" column="4" selection-start-line="21" selection-start-column="4" selection-end-line="69" selection-end-column="5" /> <folding> <element signature="imports" expanded="false" /> </folding> </state> </provider> </entry> </file> <file leaf-file-name="settings_strings.xml" pinned="false" current-in-tab="false"> <entry file="file://$PROJECT_DIR$/app/src/main/res/values/settings_strings.xml"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.0"> <caret line="20" column="50" selection-start-line="20" selection-start-column="50" selection-end-line="20" selection-end-column="50" /> <folding /> </state> </provider> </entry> </file> <file leaf-file-name="styles.xml" pinned="false" current-in-tab="false"> <entry file="file://$PROJECT_DIR$/app/src/main/res/values/styles.xml"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.0"> <caret line="7" column="4" selection-start-line="7" selection-start-column="4" selection-end-line="21" selection-end-column="12" /> <folding /> </state> </provider> </entry> </file> <file leaf-file-name="ripple_button.xml" pinned="false" current-in-tab="false"> <entry file="file://$PROJECT_DIR$/app/src/main/res/drawable/ripple_button.xml"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.0"> <caret line="5" column="11" selection-start-line="5" selection-start-column="11" selection-end-line="5" selection-end-column="11" /> <folding /> </state> </provider> </entry> </file> <file leaf-file-name="homepage.xml" pinned="false" current-in-tab="false"> <entry file="file://$PROJECT_DIR$/app/src/main/res/layout/homepage.xml"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="-0.28301886"> <caret line="1" column="48" selection-start-line="1" selection-start-column="48" selection-end-line="1" selection-end-column="48" /> <folding /> </state> </provider> <provider editor-type-id="android-designer"> <state /> </provider> </entry> </file> <file leaf-file-name="settings.xml" pinned="false" current-in-tab="false"> <entry file="file://$PROJECT_DIR$/app/src/main/res/layout/settings.xml"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.0"> <caret line="6" column="41" selection-start-line="0" selection-start-column="0" selection-end-line="14" selection-end-column="0" /> <folding /> </state> </provider> <provider editor-type-id="android-designer"> <state /> </provider> </entry> </file> <file leaf-file-name="MainActivity.java" pinned="false" current-in-tab="false"> <entry file="file://$PROJECT_DIR$/app/src/main/java/com/randomappsinc/randomnumbergeneratorplus/Activities/MainActivity.java"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.0"> <caret line="331" column="5" selection-start-line="296" selection-start-column="4" selection-end-line="331" selection-end-column="5" /> <folding> <element signature="imports" expanded="false" /> <element signature="e#5173#5174#0" expanded="false" /> <element signature="e#5212#5213#0" expanded="false" /> <element signature="e#5339#5340#0" expanded="false" /> <element signature="e#5378#5379#0" expanded="false" /> </folding> </state> </provider> </entry> </file> <file leaf-file-name="menu_main.xml" pinned="false" current-in-tab="false"> <entry file="file://$PROJECT_DIR$/app/src/main/res/menu/menu_main.xml"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.0"> <caret line="13" column="0" selection-start-line="13" selection-start-column="0" selection-end-line="13" selection-end-column="0" /> <folding /> </state> </provider> </entry> </file> <file leaf-file-name="AndroidManifest.xml" pinned="false" current-in-tab="false"> <entry file="file://$PROJECT_DIR$/app/src/main/AndroidManifest.xml"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="-8.75"> <caret line="14" column="49" selection-start-line="14" selection-start-column="0" selection-end-line="15" selection-end-column="0" /> <folding /> </state> </provider> </entry> </file> <file leaf-file-name="edittext_border.xml" pinned="false" current-in-tab="true"> <entry file="file://$PROJECT_DIR$/app/src/main/res/drawable/edittext_border.xml"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.2112676"> <caret line="5" column="8" selection-start-line="0" selection-start-column="0" selection-end-line="5" selection-end-column="8" /> <folding /> </state> </provider> </entry> </file> </leaf> </component> <component name="FileTemplateManagerImpl"> <option name="RECENT_TEMPLATES"> <list> <option value="resourceFile" /> <option value="layoutResourceFile_vertical" /> <option value="Class" /> <option value="valueResourceFile" /> </list> </option> </component> <component name="GenerateSignedApkSettings"> <option name="KEY_STORE_PATH" value="$PROJECT_DIR$/../keys/randomappsinc.jks" /> <option name="KEY_ALIAS" value="randomappsinc" /> <option name="REMEMBER_PASSWORDS" value="true" /> </component> <component name="Git.Settings"> <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" /> </component> <component name="GradleLocalSettings"> <option name="availableProjects"> <map> <entry> <key> <ExternalProjectPojo> <option name="name" value="rngplus" /> <option name="path" value="$PROJECT_DIR$" /> </ExternalProjectPojo> </key> <value> <list> <ExternalProjectPojo> <option name="name" value=":app" /> <option name="path" value="$PROJECT_DIR$/app" /> </ExternalProjectPojo> <ExternalProjectPojo> <option name="name" value="rngplus" /> <option name="path" value="$PROJECT_DIR$" /> </ExternalProjectPojo> </list> </value> </entry> </map> </option> <option name="availableTasks"> <map> <entry key="$PROJECT_DIR$"> <value> <list> <ExternalTaskPojo> <option name="description" value="Displays all buildscript dependencies declared in root project 'rngplus'." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="buildEnvironment" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="clean" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Displays the components produced by root project 'rngplus'. [incubating]" /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="components" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Displays all dependencies declared in root project 'rngplus'." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="dependencies" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Displays the insight into a specific dependency in root project 'rngplus'." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="dependencyInsight" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Displays a help message." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="help" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Initializes a new Gradle build. [incubating]" /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="init" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Displays the configuration model of root project 'rngplus'. [incubating]" /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="model" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Displays the sub-projects of root project 'rngplus'." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="projects" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Displays the properties of root project 'rngplus'." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="properties" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Displays the tasks runnable from root project 'rngplus' (some of the displayed tasks may belong to subprojects)." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="tasks" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Generates Gradle wrapper files. [incubating]" /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="wrapper" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Displays the Android dependencies of the project." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="androidDependencies" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Assembles all variants of all applications and secondary packages." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="assemble" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Assembles all the Test applications." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="assembleAndroidTest" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Assembles all Debug builds." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="assembleDebug" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="assembleDebugAndroidTest" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="assembleDebugUnitTest" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Assembles all Release builds." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="assembleRelease" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="assembleReleaseUnitTest" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Assembles and tests this project." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="build" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Assembles and tests this project and all projects that depend on it." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="buildDependents" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Assembles and tests this project and all projects it depends on." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="buildNeeded" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Runs all checks." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="check" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="checkDebugManifest" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="checkReleaseManifest" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="compileDebugAidl" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="compileDebugAndroidTestAidl" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="compileDebugAndroidTestJavaWithJavac" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="compileDebugAndroidTestNdk" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="compileDebugAndroidTestRenderscript" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="compileDebugAndroidTestShaders" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="compileDebugAndroidTestSources" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="compileDebugJavaWithJavac" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="compileDebugNdk" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="compileDebugRenderscript" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="compileDebugShaders" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="compileDebugSources" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="compileDebugUnitTestJavaWithJavac" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="compileDebugUnitTestSources" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="compileLint" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="compileReleaseAidl" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="compileReleaseJavaWithJavac" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="compileReleaseNdk" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="compileReleaseRenderscript" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="compileReleaseShaders" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="compileReleaseSources" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="compileReleaseUnitTestJavaWithJavac" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="compileReleaseUnitTestSources" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Installs and runs instrumentation tests for all flavors on connected devices." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="connectedAndroidTest" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Runs all device checks on currently connected devices." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="connectedCheck" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Installs and runs the tests for debug on connected devices." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="connectedDebugAndroidTest" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Installs and runs instrumentation tests using all Device Providers." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="deviceAndroidTest" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Runs all device checks using Device Providers and Test Servers." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="deviceCheck" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="generateDebugAndroidTestAssets" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="generateDebugAndroidTestBuildConfig" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="generateDebugAndroidTestResValues" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="generateDebugAndroidTestResources" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="generateDebugAndroidTestSources" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="generateDebugAssets" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="generateDebugBuildConfig" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="generateDebugResValues" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="generateDebugResources" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="generateDebugSources" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="generateReleaseAssets" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="generateReleaseBuildConfig" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="generateReleaseResValues" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="generateReleaseResources" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="generateReleaseSources" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="incrementalDebugAndroidTestJavaCompilationSafeguard" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="incrementalDebugJavaCompilationSafeguard" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="incrementalDebugUnitTestJavaCompilationSafeguard" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="incrementalReleaseJavaCompilationSafeguard" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="incrementalReleaseUnitTestJavaCompilationSafeguard" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Installs the Debug build." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="installDebug" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Installs the android (on device) tests for the Debug build." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="installDebugAndroidTest" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="jarDebugClasses" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="jarReleaseClasses" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Runs lint on all variants." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="lint" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Runs lint on the Debug build." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="lintDebug" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Runs lint on the Release build." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="lintRelease" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Runs lint on just the fatal issues in the Release build." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="lintVitalRelease" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="mergeDebugAndroidTestAssets" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="mergeDebugAndroidTestJniLibFolders" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="mergeDebugAndroidTestResources" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="mergeDebugAndroidTestShaders" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="mergeDebugAssets" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="mergeDebugJniLibFolders" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="mergeDebugResources" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="mergeDebugShaders" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="mergeReleaseAssets" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="mergeReleaseJniLibFolders" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="mergeReleaseResources" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="mergeReleaseShaders" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Creates a version of android.jar that's suitable for unit tests." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="mockableAndroidJar" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="packageDebug" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="packageDebugAndroidTest" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="packageRelease" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="preBuild" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="preDebugAndroidTestBuild" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="preDebugBuild" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="preDebugUnitTestBuild" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="prePackageMarkerForDebug" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="prePackageMarkerForDebugAndroidTest" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="prePackageMarkerForRelease" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="preReleaseBuild" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="preReleaseUnitTestBuild" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Prepare com.android.support:animated-vector-drawable:23.3.0" /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="prepareComAndroidSupportAnimatedVectorDrawable2330Library" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Prepare com.android.support:appcompat-v7:23.3.0" /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="prepareComAndroidSupportAppcompatV72330Library" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Prepare com.android.support:cardview-v7:23.1.1" /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="prepareComAndroidSupportCardviewV72311Library" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Prepare com.android.support:design:23.3.0" /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="prepareComAndroidSupportDesign2330Library" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Prepare com.android.support:recyclerview-v7:23.3.0" /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="prepareComAndroidSupportRecyclerviewV72330Library" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Prepare com.android.support:support-v4:23.3.0" /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="prepareComAndroidSupportSupportV42330Library" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Prepare com.android.support:support-vector-drawable:23.3.0" /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="prepareComAndroidSupportSupportVectorDrawable2330Library" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Prepare com.github.afollestad.material-dialogs:core:0.8.5.8" /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="prepareComGithubAfollestadMaterialDialogsCore0858Library" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Prepare com.github.rey5137:material:1.2.2" /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="prepareComGithubRey5137Material122Library" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Prepare com.joanzapata.iconify:android-iconify:2.2.2" /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="prepareComJoanzapataIconifyAndroidIconify222Library" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Prepare com.joanzapata.iconify:android-iconify-fontawesome:2.2.2" /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="prepareComJoanzapataIconifyAndroidIconifyFontawesome222Library" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Prepare com.joanzapata.iconify:android-iconify-ionicons:2.2.2" /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="prepareComJoanzapataIconifyAndroidIconifyIonicons222Library" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="prepareDebugAndroidTestDependencies" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="prepareDebugDependencies" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="prepareDebugUnitTestDependencies" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Prepare me.zhanghai.android.materialprogressbar:library:1.1.5" /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="prepareMeZhanghaiAndroidMaterialprogressbarLibrary115Library" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="prepareReleaseDependencies" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="prepareReleaseUnitTestDependencies" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="processDebugAndroidTestJavaRes" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="processDebugAndroidTestManifest" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="processDebugAndroidTestResources" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="processDebugJavaRes" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="processDebugManifest" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="processDebugResources" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="processDebugUnitTestJavaRes" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="processReleaseJavaRes" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="processReleaseManifest" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="processReleaseResources" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="processReleaseUnitTestJavaRes" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Displays the signing info for each variant." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="signingReport" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Prints out all the source sets defined in this project." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="sourceSets" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Run unit tests for all variants." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="test" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Run unit tests for the debug build." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="testDebugUnitTest" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Run unit tests for the release build." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="testReleaseUnitTest" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="transformClassesWithDexForDebug" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="transformClassesWithDexForDebugAndroidTest" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="transformClassesWithDexForRelease" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="transformNative_libsWithMergeJniLibsForDebug" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="transformNative_libsWithMergeJniLibsForDebugAndroidTest" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="transformNative_libsWithMergeJniLibsForRelease" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="transformResourcesWithMergeJavaResForDebug" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="transformResourcesWithMergeJavaResForDebugAndroidTest" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="transformResourcesWithMergeJavaResForDebugUnitTest" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="transformResourcesWithMergeJavaResForRelease" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="transformResourcesWithMergeJavaResForReleaseUnitTest" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Uninstall all applications." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="uninstallAll" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Uninstalls the Debug build." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="uninstallDebug" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Uninstalls the android (on device) tests for the Debug build." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="uninstallDebugAndroidTest" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Uninstalls the Release build." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="uninstallRelease" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="validateDebugSigning" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> <option name="name" value="zipalignDebug" /> </ExternalTaskPojo> </list> </value> </entry> <entry key="$PROJECT_DIR$/app"> <value> <list> <ExternalTaskPojo> <option name="description" value="Displays the Android dependencies of the project." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="androidDependencies" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Assembles all variants of all applications and secondary packages." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="assemble" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Assembles all the Test applications." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="assembleAndroidTest" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Assembles all Debug builds." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="assembleDebug" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="assembleDebugAndroidTest" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="assembleDebugUnitTest" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Assembles all Release builds." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="assembleRelease" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="assembleReleaseUnitTest" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Assembles and tests this project." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="build" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Assembles and tests this project and all projects that depend on it." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="buildDependents" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Displays all buildscript dependencies declared in project ':app'." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="buildEnvironment" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Assembles and tests this project and all projects it depends on." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="buildNeeded" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Runs all checks." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="check" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="checkDebugManifest" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="checkReleaseManifest" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Deletes the build directory." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="clean" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="compileDebugAidl" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="compileDebugAndroidTestAidl" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="compileDebugAndroidTestJavaWithJavac" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="compileDebugAndroidTestNdk" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="compileDebugAndroidTestRenderscript" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="compileDebugAndroidTestShaders" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="compileDebugAndroidTestSources" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="compileDebugJavaWithJavac" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="compileDebugNdk" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="compileDebugRenderscript" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="compileDebugShaders" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="compileDebugSources" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="compileDebugUnitTestJavaWithJavac" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="compileDebugUnitTestSources" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="compileLint" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="compileReleaseAidl" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="compileReleaseJavaWithJavac" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="compileReleaseNdk" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="compileReleaseRenderscript" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="compileReleaseShaders" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="compileReleaseSources" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="compileReleaseUnitTestJavaWithJavac" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="compileReleaseUnitTestSources" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Displays the components produced by project ':app'. [incubating]" /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="components" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Installs and runs instrumentation tests for all flavors on connected devices." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="connectedAndroidTest" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Runs all device checks on currently connected devices." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="connectedCheck" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Installs and runs the tests for debug on connected devices." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="connectedDebugAndroidTest" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Displays all dependencies declared in project ':app'." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="dependencies" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Displays the insight into a specific dependency in project ':app'." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="dependencyInsight" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Installs and runs instrumentation tests using all Device Providers." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="deviceAndroidTest" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Runs all device checks using Device Providers and Test Servers." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="deviceCheck" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="generateDebugAndroidTestAssets" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="generateDebugAndroidTestBuildConfig" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="generateDebugAndroidTestResValues" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="generateDebugAndroidTestResources" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="generateDebugAndroidTestSources" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="generateDebugAssets" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="generateDebugBuildConfig" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="generateDebugResValues" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="generateDebugResources" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="generateDebugSources" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="generateReleaseAssets" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="generateReleaseBuildConfig" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="generateReleaseResValues" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="generateReleaseResources" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="generateReleaseSources" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Displays a help message." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="help" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="incrementalDebugAndroidTestJavaCompilationSafeguard" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="incrementalDebugJavaCompilationSafeguard" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="incrementalDebugUnitTestJavaCompilationSafeguard" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="incrementalReleaseJavaCompilationSafeguard" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="incrementalReleaseUnitTestJavaCompilationSafeguard" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Installs the Debug build." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="installDebug" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Installs the android (on device) tests for the Debug build." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="installDebugAndroidTest" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="jarDebugClasses" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="jarReleaseClasses" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Runs lint on all variants." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="lint" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Runs lint on the Debug build." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="lintDebug" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Runs lint on the Release build." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="lintRelease" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Runs lint on just the fatal issues in the Release build." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="lintVitalRelease" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="mergeDebugAndroidTestAssets" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="mergeDebugAndroidTestJniLibFolders" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="mergeDebugAndroidTestResources" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="mergeDebugAndroidTestShaders" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="mergeDebugAssets" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="mergeDebugJniLibFolders" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="mergeDebugResources" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="mergeDebugShaders" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="mergeReleaseAssets" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="mergeReleaseJniLibFolders" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="mergeReleaseResources" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="mergeReleaseShaders" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Creates a version of android.jar that's suitable for unit tests." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="mockableAndroidJar" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Displays the configuration model of project ':app'. [incubating]" /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="model" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="packageDebug" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="packageDebugAndroidTest" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="packageRelease" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="preBuild" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="preDebugAndroidTestBuild" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="preDebugBuild" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="preDebugUnitTestBuild" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="prePackageMarkerForDebug" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="prePackageMarkerForDebugAndroidTest" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="prePackageMarkerForRelease" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="preReleaseBuild" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="preReleaseUnitTestBuild" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Prepare com.android.support:animated-vector-drawable:23.3.0" /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="prepareComAndroidSupportAnimatedVectorDrawable2330Library" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Prepare com.android.support:appcompat-v7:23.3.0" /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="prepareComAndroidSupportAppcompatV72330Library" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Prepare com.android.support:cardview-v7:23.1.1" /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="prepareComAndroidSupportCardviewV72311Library" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Prepare com.android.support:design:23.3.0" /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="prepareComAndroidSupportDesign2330Library" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Prepare com.android.support:recyclerview-v7:23.3.0" /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="prepareComAndroidSupportRecyclerviewV72330Library" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Prepare com.android.support:support-v4:23.3.0" /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="prepareComAndroidSupportSupportV42330Library" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Prepare com.android.support:support-vector-drawable:23.3.0" /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="prepareComAndroidSupportSupportVectorDrawable2330Library" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Prepare com.github.afollestad.material-dialogs:core:0.8.5.8" /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="prepareComGithubAfollestadMaterialDialogsCore0858Library" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Prepare com.github.rey5137:material:1.2.2" /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="prepareComGithubRey5137Material122Library" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Prepare com.joanzapata.iconify:android-iconify:2.2.2" /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="prepareComJoanzapataIconifyAndroidIconify222Library" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Prepare com.joanzapata.iconify:android-iconify-fontawesome:2.2.2" /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="prepareComJoanzapataIconifyAndroidIconifyFontawesome222Library" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Prepare com.joanzapata.iconify:android-iconify-ionicons:2.2.2" /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="prepareComJoanzapataIconifyAndroidIconifyIonicons222Library" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="prepareDebugAndroidTestDependencies" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="prepareDebugDependencies" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="prepareDebugUnitTestDependencies" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Prepare me.zhanghai.android.materialprogressbar:library:1.1.5" /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="prepareMeZhanghaiAndroidMaterialprogressbarLibrary115Library" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="prepareReleaseDependencies" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="prepareReleaseUnitTestDependencies" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="processDebugAndroidTestJavaRes" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="processDebugAndroidTestManifest" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="processDebugAndroidTestResources" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="processDebugJavaRes" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="processDebugManifest" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="processDebugResources" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="processDebugUnitTestJavaRes" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="processReleaseJavaRes" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="processReleaseManifest" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="processReleaseResources" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="processReleaseUnitTestJavaRes" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Displays the sub-projects of project ':app'." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="projects" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Displays the properties of project ':app'." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="properties" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Displays the signing info for each variant." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="signingReport" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Prints out all the source sets defined in this project." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="sourceSets" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Displays the tasks runnable from project ':app'." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="tasks" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Run unit tests for all variants." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="test" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Run unit tests for the debug build." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="testDebugUnitTest" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Run unit tests for the release build." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="testReleaseUnitTest" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="transformClassesWithDexForDebug" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="transformClassesWithDexForDebugAndroidTest" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="transformClassesWithDexForRelease" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="transformNative_libsWithMergeJniLibsForDebug" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="transformNative_libsWithMergeJniLibsForDebugAndroidTest" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="transformNative_libsWithMergeJniLibsForRelease" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="transformResourcesWithMergeJavaResForDebug" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="transformResourcesWithMergeJavaResForDebugAndroidTest" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="transformResourcesWithMergeJavaResForDebugUnitTest" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="transformResourcesWithMergeJavaResForRelease" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="transformResourcesWithMergeJavaResForReleaseUnitTest" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Uninstall all applications." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="uninstallAll" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Uninstalls the Debug build." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="uninstallDebug" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Uninstalls the android (on device) tests for the Debug build." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="uninstallDebugAndroidTest" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="description" value="Uninstalls the Release build." /> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="uninstallRelease" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="validateDebugSigning" /> </ExternalTaskPojo> <ExternalTaskPojo> <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" /> <option name="name" value="zipalignDebug" /> </ExternalTaskPojo> </list> </value> </entry> </map> </option> <option name="modificationStamps"> <map> <entry key="$PROJECT_DIR$" value="4377878861000" /> </map> </option> <option name="projectBuildClasspath"> <map> <entry key="$PROJECT_DIR$"> <value> <ExternalProjectBuildClasspathPojo> <option name="modulesBuildClasspath"> <map> <entry key="$PROJECT_DIR$"> <value> <ExternalModuleBuildClasspathPojo> <option name="entries"> <list> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/gradle/2.1.0/gradle-2.1.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/gradle-core/2.1.0/gradle-core-2.1.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/jacoco/org.jacoco.core/0.7.4.201502262128/org.jacoco.core-0.7.4.201502262128-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/jacoco/org.jacoco.core/0.7.4.201502262128/org.jacoco.core-0.7.4.201502262128.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm-commons/5.0.3/asm-commons-5.0.3-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm-commons/5.0.3/asm-commons-5.0.3.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/gradle-api/2.1.0/gradle-api-2.1.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/lint/lint/25.1.0/lint-25.1.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/databinding/compilerCommon/2.1.0/compilerCommon-2.1.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm/5.0.3/asm-5.0.3-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm/5.0.3/asm-5.0.3.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/proguard/proguard-gradle/5.2.1/proguard-gradle-5.2.1-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/proguard/proguard-gradle/5.2.1/proguard-gradle-5.2.1.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/transform-api/2.0.0-deprecated-use-gradle-api/transform-api-2.0.0-deprecated-use-gradle-api.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/builder/2.1.0/builder-2.1.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm-debug-all/5.0.1/asm-debug-all-5.0.1-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm-debug-all/5.0.1/asm-debug-all-5.0.1.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm-tree/5.0.3/asm-tree-5.0.3-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm-tree/5.0.3/asm-tree-5.0.3.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/google/guava/guava/17.0/guava-17.0-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/google/guava/guava/17.0/guava-17.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/annotations/25.1.0/annotations-25.1.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/lint/lint-checks/25.1.0/lint-checks-25.1.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/eclipse/jdt/core/compiler/ecj/4.4.2/ecj-4.4.2-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/eclipse/jdt/core/compiler/ecj/4.4.2/ecj-4.4.2.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/googlecode/juniversalchardet/juniversalchardet/1.0.3/juniversalchardet-1.0.3.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/tunnelvisionlabs/antlr4/4.5/antlr4-4.5.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/commons-io/commons-io/2.4/commons-io-2.4-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/commons-io/commons-io/2.4/commons-io-2.4.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/databinding/baseLibrary/2.1.0/baseLibrary-2.1.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/proguard/proguard-base/5.2.1/proguard-base-5.2.1-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/proguard/proguard-base/5.2.1/proguard-base-5.2.1.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/builder-model/2.1.0/builder-model-2.1.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/common/25.1.0/common-25.1.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/ddms/ddmlib/25.1.0/ddmlib-25.1.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/bouncycastle/bcprov-jdk15on/1.48/bcprov-jdk15on-1.48-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/bouncycastle/bcprov-jdk15on/1.48/bcprov-jdk15on-1.48.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/sdklib/25.1.0/sdklib-25.1.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/squareup/javawriter/2.5.0/javawriter-2.5.0-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/squareup/javawriter/2.5.0/javawriter-2.5.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/builder-test-api/2.1.0/builder-test-api-2.1.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/sdk-common/25.1.0/sdk-common-25.1.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/manifest-merger/25.1.0/manifest-merger-25.1.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/jack/jack-api/0.10.0/jack-api-0.10.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/bouncycastle/bcpkix-jdk15on/1.48/bcpkix-jdk15on-1.48-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/bouncycastle/bcpkix-jdk15on/1.48/bcpkix-jdk15on-1.48.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/jill/jill-api/0.10.0/jill-api-0.10.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm-analysis/5.0.3/asm-analysis-5.0.3-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm-analysis/5.0.3/asm-analysis-5.0.3.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/lint/lint-api/25.1.0/lint-api-25.1.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/tunnelvisionlabs/antlr4-runtime/4.5/antlr4-runtime-4.5.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/tunnelvisionlabs/antlr4-annotations/4.5/antlr4-annotations-4.5.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/antlr/antlr-runtime/3.5.2/antlr-runtime-3.5.2.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/antlr/ST4/4.0.8/ST4-4.0.8.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/kxml/kxml2/2.3.0/kxml2-2.3.0-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/kxml/kxml2/2.3.0/kxml2-2.3.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/repository/25.1.0/repository-25.1.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpclient/4.1.1/httpclient-4.1.1-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpclient/4.1.1/httpclient-4.1.1.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpmime/4.1/httpmime-4.1-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpmime/4.1/httpmime-4.1.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/google/code/gson/gson/2.2.4/gson-2.2.4-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/google/code/gson/gson/2.2.4/gson-2.2.4.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/commons/commons-compress/1.8.1/commons-compress-1.8.1-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/commons/commons-compress/1.8.1/commons-compress-1.8.1.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/dvlib/25.1.0/dvlib-25.1.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/layoutlib/layoutlib-api/25.1.0/layoutlib-api-25.1.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/external/lombok/lombok-ast/0.2.3/lombok-ast-0.2.3-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/external/lombok/lombok-ast/0.2.3/lombok-ast-0.2.3.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/abego/treelayout/org.abego.treelayout.core/1.0.1/org.abego.treelayout.core-1.0.1.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpcore/4.1/httpcore-4.1-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpcore/4.1/httpcore-4.1.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/commons-codec/commons-codec/1.4/commons-codec-1.4-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/commons-codec/commons-codec/1.4/commons-codec-1.4.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/intellij/annotations/12.0/annotations-12.0-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/intellij/annotations/12.0/annotations-12.0.jar" /> </list> </option> <option name="path" value="$PROJECT_DIR$" /> </ExternalModuleBuildClasspathPojo> </value> </entry> <entry key="$PROJECT_DIR$/app"> <value> <ExternalModuleBuildClasspathPojo> <option name="entries"> <list> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/gradle/2.1.0/gradle-2.1.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/gradle-core/2.1.0/gradle-core-2.1.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/jacoco/org.jacoco.core/0.7.4.201502262128/org.jacoco.core-0.7.4.201502262128-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/jacoco/org.jacoco.core/0.7.4.201502262128/org.jacoco.core-0.7.4.201502262128.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm-commons/5.0.3/asm-commons-5.0.3-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm-commons/5.0.3/asm-commons-5.0.3.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/gradle-api/2.1.0/gradle-api-2.1.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/lint/lint/25.1.0/lint-25.1.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/databinding/compilerCommon/2.1.0/compilerCommon-2.1.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm/5.0.3/asm-5.0.3-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm/5.0.3/asm-5.0.3.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/proguard/proguard-gradle/5.2.1/proguard-gradle-5.2.1-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/proguard/proguard-gradle/5.2.1/proguard-gradle-5.2.1.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/transform-api/2.0.0-deprecated-use-gradle-api/transform-api-2.0.0-deprecated-use-gradle-api.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/builder/2.1.0/builder-2.1.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm-debug-all/5.0.1/asm-debug-all-5.0.1-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm-debug-all/5.0.1/asm-debug-all-5.0.1.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm-tree/5.0.3/asm-tree-5.0.3-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm-tree/5.0.3/asm-tree-5.0.3.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/google/guava/guava/17.0/guava-17.0-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/google/guava/guava/17.0/guava-17.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/annotations/25.1.0/annotations-25.1.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/lint/lint-checks/25.1.0/lint-checks-25.1.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/eclipse/jdt/core/compiler/ecj/4.4.2/ecj-4.4.2-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/eclipse/jdt/core/compiler/ecj/4.4.2/ecj-4.4.2.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/googlecode/juniversalchardet/juniversalchardet/1.0.3/juniversalchardet-1.0.3.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/tunnelvisionlabs/antlr4/4.5/antlr4-4.5.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/commons-io/commons-io/2.4/commons-io-2.4-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/commons-io/commons-io/2.4/commons-io-2.4.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/databinding/baseLibrary/2.1.0/baseLibrary-2.1.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/proguard/proguard-base/5.2.1/proguard-base-5.2.1-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/proguard/proguard-base/5.2.1/proguard-base-5.2.1.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/builder-model/2.1.0/builder-model-2.1.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/common/25.1.0/common-25.1.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/ddms/ddmlib/25.1.0/ddmlib-25.1.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/bouncycastle/bcprov-jdk15on/1.48/bcprov-jdk15on-1.48-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/bouncycastle/bcprov-jdk15on/1.48/bcprov-jdk15on-1.48.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/sdklib/25.1.0/sdklib-25.1.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/squareup/javawriter/2.5.0/javawriter-2.5.0-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/squareup/javawriter/2.5.0/javawriter-2.5.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/builder-test-api/2.1.0/builder-test-api-2.1.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/sdk-common/25.1.0/sdk-common-25.1.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/manifest-merger/25.1.0/manifest-merger-25.1.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/jack/jack-api/0.10.0/jack-api-0.10.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/bouncycastle/bcpkix-jdk15on/1.48/bcpkix-jdk15on-1.48-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/bouncycastle/bcpkix-jdk15on/1.48/bcpkix-jdk15on-1.48.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/jill/jill-api/0.10.0/jill-api-0.10.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm-analysis/5.0.3/asm-analysis-5.0.3-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm-analysis/5.0.3/asm-analysis-5.0.3.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/lint/lint-api/25.1.0/lint-api-25.1.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/tunnelvisionlabs/antlr4-runtime/4.5/antlr4-runtime-4.5.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/tunnelvisionlabs/antlr4-annotations/4.5/antlr4-annotations-4.5.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/antlr/antlr-runtime/3.5.2/antlr-runtime-3.5.2.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/antlr/ST4/4.0.8/ST4-4.0.8.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/kxml/kxml2/2.3.0/kxml2-2.3.0-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/kxml/kxml2/2.3.0/kxml2-2.3.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/repository/25.1.0/repository-25.1.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpclient/4.1.1/httpclient-4.1.1-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpclient/4.1.1/httpclient-4.1.1.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpmime/4.1/httpmime-4.1-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpmime/4.1/httpmime-4.1.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/google/code/gson/gson/2.2.4/gson-2.2.4-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/google/code/gson/gson/2.2.4/gson-2.2.4.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/commons/commons-compress/1.8.1/commons-compress-1.8.1-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/commons/commons-compress/1.8.1/commons-compress-1.8.1.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/dvlib/25.1.0/dvlib-25.1.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/layoutlib/layoutlib-api/25.1.0/layoutlib-api-25.1.0.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/external/lombok/lombok-ast/0.2.3/lombok-ast-0.2.3-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/external/lombok/lombok-ast/0.2.3/lombok-ast-0.2.3.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/abego/treelayout/org.abego.treelayout.core/1.0.1/org.abego.treelayout.core-1.0.1.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpcore/4.1/httpcore-4.1-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpcore/4.1/httpcore-4.1.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/commons-codec/commons-codec/1.4/commons-codec-1.4-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/commons-codec/commons-codec/1.4/commons-codec-1.4.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/intellij/annotations/12.0/annotations-12.0-sources.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/intellij/annotations/12.0/annotations-12.0.jar" /> <option value="$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/appcompat-v7/23.3.0/appcompat-v7-23.3.0.aar" /> <option value="$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/design/23.3.0/design-23.3.0.aar" /> <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.github.afollestad.material-dialogs/core/0.8.5.8/b4d41fdd96238d1e6c97575fccbc7c0f34a36368/core-0.8.5.8.aar" /> <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jakewharton/butterknife/7.0.1/d5d13ea991eab0252e3710e5df3d6a9d4b21d461/butterknife-7.0.1.jar" /> <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.joanzapata.iconify/android-iconify-fontawesome/2.2.2/928b3e5124c431395319f4a0daa2572160f0d4a2/android-iconify-fontawesome-2.2.2.aar" /> <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.joanzapata.iconify/android-iconify-ionicons/2.2.2/7275b0e41ceea9f529c2034da11db27151ef628e/android-iconify-ionicons-2.2.2.aar" /> <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.github.rey5137/material/1.2.2/febd2d94a6309e3eb337231577abd3eadd5226b8/material-1.2.2.aar" /> <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/io.realm/realm-android/0.87.1/6d9a1bba4e31252cc8183aa27a32e6edbdacaeb7/realm-android-0.87.1.jar" /> <option value="$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/support-vector-drawable/23.3.0/support-vector-drawable-23.3.0.aar" /> <option value="$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/animated-vector-drawable/23.3.0/animated-vector-drawable-23.3.0.aar" /> <option value="$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/support-v4/23.3.0/support-v4-23.3.0.aar" /> <option value="$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/recyclerview-v7/23.3.0/recyclerview-v7-23.3.0.aar" /> <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/me.zhanghai.android.materialprogressbar/library/1.1.5/afbd308dd929885b239f90e170d9b88ed292bc07/library-1.1.5.aar" /> <option value="$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/support-annotations/23.3.0/support-annotations-23.3.0.jar" /> <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.joanzapata.iconify/android-iconify/2.2.2/ec87ddc551e6e266f17c2569a1bd29bf7640e0ed/android-iconify-2.2.2.aar" /> <option value="$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/cardview-v7/23.1.1/cardview-v7-23.1.1.aar" /> </list> </option> <option name="path" value="$PROJECT_DIR$/app" /> </ExternalModuleBuildClasspathPojo> </value> </entry> </map> </option> <option name="name" value="app" /> <option name="projectBuildClasspath"> <list> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/ant-1.9.3.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/ant-launcher-1.9.3.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/gradle-base-services-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/gradle-base-services-groovy-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/gradle-cli-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/gradle-core-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/gradle-docs-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/gradle-launcher-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/gradle-messaging-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/gradle-model-core-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/gradle-model-groovy-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/gradle-native-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/gradle-open-api-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/gradle-resources-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/gradle-tooling-api-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/gradle-ui-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/gradle-wrapper-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/groovy-all-2.4.4.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/plugins/gradle-announce-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/plugins/gradle-antlr-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/plugins/gradle-build-comparison-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/plugins/gradle-build-init-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/plugins/gradle-code-quality-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/plugins/gradle-dependency-management-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/plugins/gradle-diagnostics-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/plugins/gradle-ear-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/plugins/gradle-ide-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/plugins/gradle-ide-native-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/plugins/gradle-ivy-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/plugins/gradle-jacoco-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/plugins/gradle-javascript-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/plugins/gradle-jetty-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/plugins/gradle-language-groovy-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/plugins/gradle-language-java-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/plugins/gradle-language-jvm-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/plugins/gradle-language-native-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/plugins/gradle-language-scala-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/plugins/gradle-maven-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/plugins/gradle-osgi-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/plugins/gradle-platform-base-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/plugins/gradle-platform-jvm-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/plugins/gradle-platform-native-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/plugins/gradle-platform-play-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/plugins/gradle-plugin-development-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/plugins/gradle-plugin-use-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/plugins/gradle-plugins-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/plugins/gradle-publish-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/plugins/gradle-reporting-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/plugins/gradle-resources-http-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/plugins/gradle-resources-s3-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/plugins/gradle-resources-sftp-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/plugins/gradle-scala-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/plugins/gradle-signing-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/plugins/gradle-sonar-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/plugins/gradle-test-kit-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/plugins/gradle-testing-native-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/plugins/gradle-tooling-api-builders-2.10.jar" /> <option value="$APPLICATION_HOME_DIR$/gradle/gradle-2.10/lib/plugins/ivy-2.2.0.jar" /> <option value="$PROJECT_DIR$/buildSrc/src/main/java" /> <option value="$PROJECT_DIR$/buildSrc/src/main/groovy" /> </list> </option> </ExternalProjectBuildClasspathPojo> </value> </entry> </map> </option> <option name="externalProjectsViewState"> <projects_view /> </option> </component> <component name="IdeDocumentHistory"> <option name="CHANGED_PATHS"> <list> <option value="$PROJECT_DIR$/build.gradle" /> <option value="$PROJECT_DIR$/app/src/main/java/com/randomappsinc/randomnumbergeneratorplus/Activities/StandardActivity.java" /> <option value="$PROJECT_DIR$/app/src/main/res/anim/slide_left_out.xml" /> <option value="$PROJECT_DIR$/app/src/main/res/anim/slide_left_in.xml" /> <option value="$PROJECT_DIR$/app/src/main/res/values/integers.xml" /> <option value="$PROJECT_DIR$/app/src/main/res/anim/slide_right_out.xml" /> <option value="$PROJECT_DIR$/app/src/main/res/anim/slide_right_in.xml" /> <option value="$PROJECT_DIR$/app/src/main/res/values/settings_item_cell.xml" /> <option value="$PROJECT_DIR$/app/src/main/res/layout/settings_item_cell.xml" /> <option value="$PROJECT_DIR$/app/src/main/res/drawable/edittext_border.xml" /> <option value="$PROJECT_DIR$/app/src/main/res/values/configuration_styles.xml" /> <option value="$PROJECT_DIR$/app/src/main/java/com/randomappsinc/randomnumbergeneratorplus/Adapters/SettingsAdapter.java" /> <option value="$PROJECT_DIR$/app/src/main/res/layout/excluded_number_cell.xml" /> <option value="$PROJECT_DIR$/app/src/main/res/layout/other_apps.xml" /> <option value="$PROJECT_DIR$/app/src/main/java/com/randomappsinc/randomnumbergeneratorplus/Adapters/OtherAppsAdapter.java" /> <option value="$PROJECT_DIR$/app/src/main/res/layout/other_app_cell.xml" /> <option value="$PROJECT_DIR$/app/src/main/java/com/randomappsinc/randomnumbergeneratorplus/Activities/OtherAppsActivity.java" /> <option value="$PROJECT_DIR$/app/src/main/res/values/other_apps_strings.xml" /> <option value="$PROJECT_DIR$/app/src/main/java/com/randomappsinc/randomnumbergeneratorplus/Persistence/Database/ExcludedNumber.java" /> <option value="$PROJECT_DIR$/app/src/main/java/com/randomappsinc/randomnumbergeneratorplus/Persistence/Database/Configuration.java" /> <option value="$PROJECT_DIR$/app/src/main/java/com/randomappsinc/randomnumbergeneratorplus/Utils/ConversionUtils.java" /> <option value="$PROJECT_DIR$/app/src/main/AndroidManifest.xml" /> <option value="$PROJECT_DIR$/app/src/main/java/com/randomappsinc/randomnumbergeneratorplus/Adapters/ExcludedNumbersAdapter.java" /> <option value="$PROJECT_DIR$/app/src/main/res/layout/settings.xml" /> <option value="$PROJECT_DIR$/app/src/main/java/com/randomappsinc/randomnumbergeneratorplus/Utils/FormUtils.java" /> <option value="$PROJECT_DIR$/app/src/main/res/values/styles.xml" /> <option value="$PROJECT_DIR$/app/src/main/res/layout/edit_excluded.xml" /> <option value="$PROJECT_DIR$/app/src/main/java/com/randomappsinc/randomnumbergeneratorplus/Activities/EditExcludedActivity.java" /> <option value="$PROJECT_DIR$/app/src/main/java/com/randomappsinc/randomnumbergeneratorplus/Persistence/Database/DatabaseManager.java" /> <option value="$PROJECT_DIR$/app/src/main/res/layout/configuration_cell.xml" /> <option value="$PROJECT_DIR$/app/src/main/res/values/colors.xml" /> <option value="$PROJECT_DIR$/app/src/main/res/layout/config_cell.xml" /> <option value="$PROJECT_DIR$/app/src/main/res/layout/edit_configurations.xml" /> <option value="$PROJECT_DIR$/app/src/main/java/com/randomappsinc/randomnumbergeneratorplus/Activities/EditConfigurationsActivity.java" /> <option value="$PROJECT_DIR$/app/src/main/java/com/randomappsinc/randomnumbergeneratorplus/Adapters/ConfigurationsAdapter.java" /> <option value="$PROJECT_DIR$/app/src/main/res/layout/homepage.xml" /> <option value="$PROJECT_DIR$/app/src/main/java/com/randomappsinc/randomnumbergeneratorplus/Activities/SettingsActivity.java" /> <option value="$PROJECT_DIR$/app/src/main/java/com/randomappsinc/randomnumbergeneratorplus/Persistence/PreferencesManager.java" /> <option value="$PROJECT_DIR$/app/src/main/res/values/edit_excluded_strings.xml" /> <option value="$PROJECT_DIR$/app/src/main/java/com/randomappsinc/randomnumbergeneratorplus/Utils/RandUtils.java" /> <option value="$PROJECT_DIR$/app/src/main/java/com/randomappsinc/randomnumbergeneratorplus/Activities/MainActivity.java" /> <option value="$PROJECT_DIR$/app/src/main/res/values/config_strings.xml" /> <option value="$PROJECT_DIR$/app/src/main/res/values/settings_strings.xml" /> <option value="$PROJECT_DIR$/app/src/main/res/values/strings.xml" /> <option value="$PROJECT_DIR$/app/src/main/java/com/randomappsinc/randomnumbergeneratorplus/Utils/MyApplication.java" /> <option value="$PROJECT_DIR$/app/build.gradle" /> <option value="$PROJECT_DIR$/app/src/main/res/menu/menu_main.xml" /> <option value="$PROJECT_DIR$/app/src/main/res/drawable/ripple_button.xml" /> </list> </option> </component> <component name="MavenImportPreferences"> <option name="generalSettings"> <MavenGeneralSettings> <option name="mavenHome" value="Bundled (Maven 3)" /> </MavenGeneralSettings> </option> </component> <component name="ProjectFrameBounds"> <option name="y" value="23" /> <option name="width" value="1280" /> <option name="height" value="709" /> </component> <component name="ProjectLevelVcsManager" settingsEditedManually="true"> <OptionsSetting value="true" id="Add" /> <OptionsSetting value="true" id="Remove" /> <OptionsSetting value="true" id="Checkout" /> <OptionsSetting value="true" id="Update" /> <OptionsSetting value="true" id="Status" /> <OptionsSetting value="true" id="Edit" /> <ConfirmationsSetting value="2" id="Add" /> <ConfirmationsSetting value="0" id="Remove" /> </component> <component name="ProjectView"> <navigator currentView="AndroidView" proportions="" version="1"> <flattenPackages /> <showMembers /> <showModules /> <showLibraryContents /> <hideEmptyPackages /> <abbreviatePackageNames /> <autoscrollToSource /> <autoscrollFromSource /> <sortByType /> <manualOrder /> <foldersAlwaysOnTop value="true" /> </navigator> <panes> <pane id="ProjectPane" /> <pane id="PackagesPane" /> <pane id="Scope" /> <pane id="AndroidView"> <subPane> <PATH> <PATH_ELEMENT> <option name="myItemId" value="rngplus" /> <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidViewProjectNode" /> </PATH_ELEMENT> </PATH> </subPane> </pane> <pane id="Scratches" /> </panes> </component> <component name="PropertiesComponent"> <property name="last_opened_file_path" value="$PROJECT_DIR$/../keys/randomappsinc.jks" /> <property name="settings.editor.selected.configurable" value="preferences.updates" /> <property name="settings.editor.splitter.proportion" value="0.2" /> <property name="recentsLimit" value="5" /> <property name="ANDROID_EXTENDED_DEVICE_CHOOSER_SERIALS" value="d2659bb9" /> <property name="ANDROID_EXTENDED_DEVICE_CHOOSER_AVD" value="Nexus_5_API_21_x86" /> <property name="OverrideImplement.combined" value="true" /> <property name="OverrideImplement.overriding.sorted" value="false" /> <property name="lastFolderRoot" value="$USER_HOME$/Downloads/sql_practice.png" /> <property name="ExportApk.ApkPath" value="$PROJECT_DIR$/app" /> <property name="ExportApk.Flavors" value="" /> <property name="ExportApk.BuildType" value="release" /> <property name="device.picker.selection" value="192.168.59.101:5555" /> </component> <component name="RunManager" selected="Android Application.app"> <configuration default="true" type="AndroidRunConfigurationType" factoryName="Android Application"> <module name="" /> <option name="DEPLOY" value="true" /> <option name="ARTIFACT_NAME" value="" /> <option name="PM_INSTALL_OPTIONS" value="" /> <option name="ACTIVITY_EXTRA_FLAGS" value="" /> <option name="MODE" value="default_activity" /> <option name="TARGET_SELECTION_MODE" value="SHOW_DIALOG" /> <option name="PREFERRED_AVD" value="" /> <option name="CLEAR_LOGCAT" value="false" /> <option name="SHOW_LOGCAT_AUTOMATICALLY" value="true" /> <option name="SKIP_NOOP_APK_INSTALLATIONS" value="true" /> <option name="FORCE_STOP_RUNNING_APP" value="true" /> <option name="DEBUGGER_TYPE" value="Java" /> <option name="USE_LAST_SELECTED_DEVICE" value="false" /> <option name="PREFERRED_AVD" value="" /> <option name="SELECTED_CLOUD_MATRIX_CONFIGURATION_ID" value="-1" /> <option name="SELECTED_CLOUD_MATRIX_PROJECT_ID" value="" /> <Hybrid> <option name="WORKING_DIR" value="" /> <option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" /> </Hybrid> <Native> <option name="WORKING_DIR" value="" /> <option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" /> </Native> <Java /> <Profilers> <option name="GAPID_DISABLE_PCS" value="false" /> </Profilers> <option name="DEEP_LINK" value="" /> <option name="ACTIVITY_CLASS" value="" /> <method /> </configuration> <configuration default="true" type="AndroidTestRunConfigurationType" factoryName="Android Tests"> <module name="" /> <option name="TESTING_TYPE" value="0" /> <option name="INSTRUMENTATION_RUNNER_CLASS" value="" /> <option name="METHOD_NAME" value="" /> <option name="CLASS_NAME" value="" /> <option name="PACKAGE_NAME" value="" /> <option name="EXTRA_OPTIONS" value="" /> <option name="TARGET_SELECTION_MODE" value="SHOW_DIALOG" /> <option name="PREFERRED_AVD" value="" /> <option name="CLEAR_LOGCAT" value="false" /> <option name="SHOW_LOGCAT_AUTOMATICALLY" value="true" /> <option name="SKIP_NOOP_APK_INSTALLATIONS" value="true" /> <option name="FORCE_STOP_RUNNING_APP" value="true" /> <option name="DEBUGGER_TYPE" value="Java" /> <option name="USE_LAST_SELECTED_DEVICE" value="false" /> <option name="PREFERRED_AVD" value="" /> <option name="SELECTED_CLOUD_MATRIX_CONFIGURATION_ID" value="-1" /> <option name="SELECTED_CLOUD_MATRIX_PROJECT_ID" value="" /> <Hybrid> <option name="WORKING_DIR" value="" /> <option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" /> </Hybrid> <Native> <option name="WORKING_DIR" value="" /> <option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" /> </Native> <Java /> <Profilers> <option name="GAPID_DISABLE_PCS" value="false" /> </Profilers> <method /> </configuration> <configuration default="true" type="Application" factoryName="Application"> <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" /> <option name="MAIN_CLASS_NAME" /> <option name="VM_PARAMETERS" /> <option name="PROGRAM_PARAMETERS" /> <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" /> <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" /> <option name="ALTERNATIVE_JRE_PATH" /> <option name="ENABLE_SWING_INSPECTOR" value="false" /> <option name="ENV_VARIABLES" /> <option name="PASS_PARENT_ENVS" value="true" /> <module name="" /> <envs /> <method /> </configuration> <configuration default="true" type="JUnit" factoryName="JUnit"> <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" /> <module name="" /> <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" /> <option name="ALTERNATIVE_JRE_PATH" /> <option name="PACKAGE_NAME" /> <option name="MAIN_CLASS_NAME" /> <option name="METHOD_NAME" /> <option name="TEST_OBJECT" value="class" /> <option name="VM_PARAMETERS" value="-ea" /> <option name="PARAMETERS" /> <option name="WORKING_DIRECTORY" value="$MODULE_DIR$" /> <option name="ENV_VARIABLES" /> <option name="PASS_PARENT_ENVS" value="true" /> <option name="TEST_SEARCH_SCOPE"> <value defaultName="singleModule" /> </option> <envs /> <patterns /> <method> <option name="Make" enabled="false" /> <option name="Android.Gradle.BeforeRunTask" enabled="true" /> </method> </configuration> <configuration default="true" type="JUnitTestDiscovery" factoryName="JUnit Test Discovery" changeList="All"> <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" /> <module name="" /> <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" /> <option name="ALTERNATIVE_JRE_PATH" /> <option name="PACKAGE_NAME" /> <option name="MAIN_CLASS_NAME" /> <option name="METHOD_NAME" /> <option name="TEST_OBJECT" value="class" /> <option name="VM_PARAMETERS" /> <option name="PARAMETERS" /> <option name="WORKING_DIRECTORY" /> <option name="ENV_VARIABLES" /> <option name="PASS_PARENT_ENVS" value="true" /> <option name="TEST_SEARCH_SCOPE"> <value defaultName="singleModule" /> </option> <envs /> <patterns /> <method /> </configuration> <configuration default="true" type="JarApplication" factoryName="JAR Application"> <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" /> <envs /> <method /> </configuration> <configuration default="true" type="Java Scratch" factoryName="Java Scratch"> <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" /> <option name="SCRATCH_FILE_ID" value="0" /> <option name="MAIN_CLASS_NAME" /> <option name="VM_PARAMETERS" /> <option name="PROGRAM_PARAMETERS" /> <option name="WORKING_DIRECTORY" /> <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" /> <option name="ALTERNATIVE_JRE_PATH" /> <option name="ENABLE_SWING_INSPECTOR" value="false" /> <option name="ENV_VARIABLES" /> <option name="PASS_PARENT_ENVS" value="true" /> <module name="" /> <envs /> <method /> </configuration> <configuration default="true" type="Remote" factoryName="Remote"> <option name="USE_SOCKET_TRANSPORT" value="true" /> <option name="SERVER_MODE" value="false" /> <option name="SHMEM_ADDRESS" value="javadebug" /> <option name="HOST" value="localhost" /> <option name="PORT" value="5005" /> <method /> </configuration> <configuration default="true" type="TestNG" factoryName="TestNG"> <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" /> <module name="" /> <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" /> <option name="ALTERNATIVE_JRE_PATH" /> <option name="SUITE_NAME" /> <option name="PACKAGE_NAME" /> <option name="MAIN_CLASS_NAME" /> <option name="METHOD_NAME" /> <option name="GROUP_NAME" /> <option name="TEST_OBJECT" value="CLASS" /> <option name="VM_PARAMETERS" value="-ea" /> <option name="PARAMETERS" /> <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" /> <option name="OUTPUT_DIRECTORY" /> <option name="ANNOTATION_TYPE" /> <option name="ENV_VARIABLES" /> <option name="PASS_PARENT_ENVS" value="true" /> <option name="TEST_SEARCH_SCOPE"> <value defaultName="singleModule" /> </option> <option name="USE_DEFAULT_REPORTERS" value="false" /> <option name="PROPERTIES_FILE" /> <envs /> <properties /> <listeners /> <method /> </configuration> <configuration default="true" type="TestNGTestDiscovery" factoryName="TestNG Test Discovery" changeList="All"> <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" /> <module name="" /> <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" /> <option name="ALTERNATIVE_JRE_PATH" /> <option name="SUITE_NAME" /> <option name="PACKAGE_NAME" /> <option name="MAIN_CLASS_NAME" /> <option name="METHOD_NAME" /> <option name="GROUP_NAME" /> <option name="TEST_OBJECT" value="CLASS" /> <option name="VM_PARAMETERS" /> <option name="PARAMETERS" /> <option name="WORKING_DIRECTORY" /> <option name="OUTPUT_DIRECTORY" /> <option name="ANNOTATION_TYPE" /> <option name="ENV_VARIABLES" /> <option name="PASS_PARENT_ENVS" value="true" /> <option name="TEST_SEARCH_SCOPE"> <value defaultName="singleModule" /> </option> <option name="USE_DEFAULT_REPORTERS" value="false" /> <option name="PROPERTIES_FILE" /> <envs /> <properties /> <listeners /> <method /> </configuration> <configuration default="false" name="app" type="AndroidRunConfigurationType" factoryName="Android Application" activateToolWindowBeforeRun="false"> <module name="app" /> <option name="DEPLOY" value="true" /> <option name="ARTIFACT_NAME" value="" /> <option name="PM_INSTALL_OPTIONS" value="" /> <option name="ACTIVITY_EXTRA_FLAGS" value="" /> <option name="MODE" value="default_activity" /> <option name="TARGET_SELECTION_MODE" value="SHOW_DIALOG" /> <option name="PREFERRED_AVD" value="" /> <option name="CLEAR_LOGCAT" value="false" /> <option name="SHOW_LOGCAT_AUTOMATICALLY" value="true" /> <option name="SKIP_NOOP_APK_INSTALLATIONS" value="true" /> <option name="FORCE_STOP_RUNNING_APP" value="true" /> <option name="DEBUGGER_TYPE" value="Java" /> <option name="USE_LAST_SELECTED_DEVICE" value="true" /> <option name="PREFERRED_AVD" value="" /> <option name="SELECTED_CLOUD_MATRIX_CONFIGURATION_ID" value="-1" /> <option name="SELECTED_CLOUD_MATRIX_PROJECT_ID" value="" /> <Hybrid> <option name="WORKING_DIR" value="" /> <option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" /> </Hybrid> <Native> <option name="WORKING_DIR" value="" /> <option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" /> </Native> <Java /> <Profilers> <option name="GAPID_DISABLE_PCS" value="false" /> </Profilers> <option name="DEEP_LINK" value="" /> <option name="ACTIVITY_CLASS" value="" /> <method /> </configuration> <list size="1"> <item index="0" class="java.lang.String" itemvalue="Android Application.app" /> </list> <configuration name="<template>" type="Applet" default="true" selected="false"> <option name="MAIN_CLASS_NAME" /> <option name="HTML_FILE_NAME" /> <option name="HTML_USED" value="false" /> <option name="WIDTH" value="400" /> <option name="HEIGHT" value="300" /> <option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" /> <option name="VM_PARAMETERS" /> </configuration> <configuration name="<template>" type="#org.jetbrains.idea.devkit.run.PluginConfigurationType" default="true" selected="false"> <option name="VM_PARAMETERS" value="-Xmx512m -Xms256m -XX:MaxPermSize=250m -ea" /> </configuration> </component> <component name="ShelveChangesManager" show_recycled="false" /> <component name="SvnConfiguration"> <configuration /> </component> <component name="TaskManager"> <task active="true" id="Default" summary="Default task"> <changelist id="f5e37520-ca17-4d94-bb6c-b4cbc9c73568" name="Default" comment="" /> <created>1451460273974</created> <option name="number" value="Default" /> <updated>1451460273974</updated> </task> <servers /> </component> <component name="ToolWindowManager"> <frame x="0" y="23" width="1280" height="709" extended-state="6" /> <editor active="true" /> <layout> <window_info id="Palette	" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" /> <window_info id="Designer" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" /> <window_info id="Preview" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" /> <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" /> <window_info id="Android Model" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="true" content_ui="tabs" /> <window_info id="Capture Analysis" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" /> <window_info id="Android Monitor" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.31365937" sideWeight="0.47415185" order="7" side_tool="false" content_ui="tabs" /> <window_info id="Captures" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" /> <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" /> <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3153457" sideWeight="0.52584815" order="7" side_tool="true" content_ui="tabs" /> <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" /> <window_info id="Capture Tool" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" /> <window_info id="Gradle Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" /> <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" /> <window_info id="Build Variants" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" /> <window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32715008" sideWeight="0.49353796" order="7" side_tool="false" content_ui="tabs" /> <window_info id="Gradle" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" /> <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" /> <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.22374798" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" /> <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.327787" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" /> <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> <window_info id="Application Servers" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" /> <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" /> <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" /> <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" /> <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32833335" sideWeight="0.49676898" order="1" side_tool="false" content_ui="tabs" /> <window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" /> <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" /> <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" /> </layout> </component> <component name="Vcs.Log.UiProperties"> <option name="RECENTLY_FILTERED_USER_GROUPS"> <collection /> </option> <option name="RECENTLY_FILTERED_BRANCH_GROUPS"> <collection /> </option> </component> <component name="VcsContentAnnotationSettings"> <option name="myLimit" value="2678400000" /> </component> <component name="XDebuggerManager"> <breakpoint-manager /> <watches-manager /> </component> <component name="editorHistoryManager"> <entry file="file://$PROJECT_DIR$/app/src/main/java/com/randomappsinc/randomnumbergeneratorplus/Activities/SettingsActivity.java"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.0"> <caret line="46" column="76" selection-start-line="46" selection-start-column="76" selection-end-line="46" selection-end-column="76" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/build.gradle"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.0"> <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/src/main/java/com/randomappsinc/randomnumbergeneratorplus/Activities/MainActivity.java"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.0"> <caret line="30" column="44" selection-start-line="30" selection-start-column="44" selection-end-line="30" selection-end-column="44" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/src/main/res/values/strings.xml"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.0"> <caret line="15" column="71" selection-start-line="15" selection-start-column="71" selection-end-line="15" selection-end-column="71" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/src/main/java/com/randomappsinc/randomnumbergeneratorplus/Activities/EditExcludedActivity.java"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.0"> <caret line="25" column="0" selection-start-line="25" selection-start-column="0" selection-end-line="25" selection-end-column="0" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/src/main/java/com/randomappsinc/randomnumbergeneratorplus/Activities/StandardActivity.java"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.0"> <caret line="20" column="4" selection-start-line="20" selection-start-column="4" selection-end-line="25" selection-end-column="5" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/src/main/res/layout/homepage.xml"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.0"> <caret line="91" column="52" selection-start-line="91" selection-start-column="52" selection-end-line="91" selection-end-column="52" /> </state> </provider> <provider editor-type-id="android-designer"> <state /> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/src/main/java/com/randomappsinc/randomnumbergeneratorplus/Utils/RandUtils.java"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.0"> <caret line="8" column="0" selection-start-line="8" selection-start-column="0" selection-end-line="8" selection-end-column="0" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/src/main/java/com/randomappsinc/randomnumbergeneratorplus/Utils/MyApplication.java"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.0"> <caret line="19" column="5" selection-start-line="19" selection-start-column="5" selection-end-line="19" selection-end-column="5" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/src/main/res/values/styles.xml"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.0"> <caret line="47" column="0" selection-start-line="47" selection-start-column="0" selection-end-line="47" selection-end-column="0" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/src/main/res/layout/excluded_number_cell.xml"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="-3.6206896"> <caret line="7" column="37" selection-start-line="7" selection-start-column="37" selection-end-line="7" selection-end-column="37" /> </state> </provider> <provider editor-type-id="android-designer"> <state /> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/src/main/java/com/randomappsinc/randomnumbergeneratorplus/Adapters/ExcludedNumbersAdapter.java"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="-0.18110237"> <caret line="81" column="36" selection-start-line="81" selection-start-column="36" selection-end-line="81" selection-end-column="36" /> </state> </provider> </entry> <entry file="jar://$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/design/23.2.0/design-23.2.0-sources.jar!/android/support/design/widget/Snackbar.java"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.33333334"> <caret line="357" column="65" selection-start-line="357" selection-start-column="54" selection-end-line="357" selection-end-column="65" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/build.gradle"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.0"> <caret line="17" column="8" selection-start-line="17" selection-start-column="8" selection-end-line="17" selection-end-column="42" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/src/main/res/anim/slide_left_in.xml"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.0"> <caret line="5" column="24" selection-start-line="0" selection-start-column="0" selection-end-line="5" selection-end-column="53" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/src/main/res/values/integers.xml"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.0"> <caret line="4" column="12" selection-start-line="0" selection-start-column="0" selection-end-line="4" selection-end-column="12" /> <folding /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/src/main/res/anim/slide_left_out.xml"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.0"> <caret line="5" column="43" selection-start-line="5" selection-start-column="43" selection-end-line="5" selection-end-column="43" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/src/main/res/anim/slide_right_in.xml"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.0"> <caret line="5" column="37" selection-start-line="0" selection-start-column="0" selection-end-line="5" selection-end-column="53" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/src/main/res/anim/slide_right_out.xml"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.0"> <caret line="5" column="19" selection-start-line="5" selection-start-column="19" selection-end-line="5" selection-end-column="19" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/src/main/java/com/randomappsinc/randomnumbergeneratorplus/Activities/StandardActivity.java"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.0"> <caret line="27" column="13" selection-start-line="27" selection-start-column="13" selection-end-line="27" selection-end-column="13" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/src/main/java/com/randomappsinc/randomnumbergeneratorplus/Utils/FormUtils.java"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.0"> <caret line="15" column="0" selection-start-line="15" selection-start-column="0" selection-end-line="36" selection-end-column="1" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/src/main/java/com/randomappsinc/randomnumbergeneratorplus/Adapters/SettingsAdapter.java"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.28"> <caret line="18" column="0" selection-start-line="18" selection-start-column="0" selection-end-line="71" selection-end-column="0" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/src/main/java/com/randomappsinc/randomnumbergeneratorplus/Persistence/Database/DatabaseManager.java"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="-2.1496062"> <caret line="20" column="33" selection-start-line="20" selection-start-column="33" selection-end-line="20" selection-end-column="33" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/src/main/res/values/colors.xml"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.30259365"> <caret line="7" column="29" selection-start-line="7" selection-start-column="29" selection-end-line="7" selection-end-column="29" /> <folding /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/src/main/res/layout/config_cell.xml"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.6132075"> <caret line="20" column="36" selection-start-line="20" selection-start-column="36" selection-end-line="20" selection-end-column="36" /> <folding /> </state> </provider> <provider editor-type-id="android-designer"> <state /> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/src/main/res/layout/edit_configurations.xml"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.18867925"> <caret line="4" column="37" selection-start-line="4" selection-start-column="37" selection-end-line="4" selection-end-column="37" /> <folding /> </state> </provider> <provider editor-type-id="android-designer"> <state /> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/src/main/java/com/randomappsinc/randomnumbergeneratorplus/Adapters/ConfigurationsAdapter.java"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.3968254"> <caret line="33" column="27" selection-start-line="33" selection-start-column="27" selection-end-line="33" selection-end-column="27" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/src/main/java/com/randomappsinc/randomnumbergeneratorplus/Persistence/PreferencesManager.java"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.7619048"> <caret line="52" column="0" selection-start-line="52" selection-start-column="0" selection-end-line="52" selection-end-column="0" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/src/main/res/layout/edit_excluded.xml"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="-0.1875"> <caret line="12" column="39" selection-start-line="12" selection-start-column="39" selection-end-line="12" selection-end-column="39" /> <folding /> </state> </provider> <provider editor-type-id="android-designer"> <state /> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/src/main/java/com/randomappsinc/randomnumbergeneratorplus/Persistence/Database/ExcludedNumber.java"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.2777778"> <caret line="7" column="13" selection-start-line="7" selection-start-column="13" selection-end-line="7" selection-end-column="13" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/src/main/java/com/randomappsinc/randomnumbergeneratorplus/Utils/ConversionUtils.java"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.44444445"> <caret line="23" column="37" selection-start-line="23" selection-start-column="37" selection-end-line="23" selection-end-column="37" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/src/main/java/com/randomappsinc/randomnumbergeneratorplus/Persistence/Database/RNGConfiguration.java"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="-0.34920636"> <caret line="17" column="30" selection-start-line="17" selection-start-column="30" selection-end-line="17" selection-end-column="30" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/src/main/res/values/edit_excluded_strings.xml"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.63559324"> <caret line="15" column="74" selection-start-line="15" selection-start-column="74" selection-end-line="15" selection-end-column="74" /> <folding /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/src/main/java/com/randomappsinc/randomnumbergeneratorplus/Utils/RandUtils.java"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.0"> <caret line="166" column="0" selection-start-line="166" selection-start-column="0" selection-end-line="166" selection-end-column="0" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/src/main/java/com/randomappsinc/randomnumbergeneratorplus/Activities/EditConfigurationsActivity.java"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.7010582"> <caret line="27" column="76" selection-start-line="27" selection-start-column="76" selection-end-line="27" selection-end-column="76" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/src/main/java/com/randomappsinc/randomnumbergeneratorplus/Activities/EditExcludedActivity.java"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="-1.2222222"> <caret line="37" column="24" selection-start-line="37" selection-start-column="24" selection-end-line="37" selection-end-column="24" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/src/main/res/values/config_strings.xml"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="-1.875"> <caret line="3" column="46" selection-start-line="3" selection-start-column="46" selection-end-line="3" selection-end-column="46" /> <folding /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/src/main/res/values/strings.xml"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.0"> <caret line="33" column="36" selection-start-line="33" selection-start-column="36" selection-end-line="33" selection-end-column="36" /> <folding /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/src/main/java/com/randomappsinc/randomnumbergeneratorplus/Utils/MyApplication.java"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.0"> <caret line="22" column="16" selection-start-line="22" selection-start-column="16" selection-end-line="22" selection-end-column="16" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/build.gradle"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.0"> <caret line="11" column="26" selection-start-line="11" selection-start-column="26" selection-end-line="11" selection-end-column="26" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/src/main/res/layout/settings_item_cell.xml"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.0"> <caret line="10" column="32" selection-start-line="0" selection-start-column="0" selection-end-line="26" selection-end-column="15" /> <folding /> </state> </provider> <provider editor-type-id="android-designer"> <state /> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/src/main/java/com/randomappsinc/randomnumbergeneratorplus/Activities/SettingsActivity.java"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.0"> <caret line="21" column="4" selection-start-line="21" selection-start-column="4" selection-end-line="69" selection-end-column="5" /> <folding> <element signature="imports" expanded="false" /> </folding> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/src/main/res/values/settings_strings.xml"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.0"> <caret line="20" column="50" selection-start-line="20" selection-start-column="50" selection-end-line="20" selection-end-column="50" /> <folding /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/src/main/res/values/styles.xml"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.0"> <caret line="7" column="4" selection-start-line="7" selection-start-column="4" selection-end-line="21" selection-end-column="12" /> <folding /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/src/main/res/drawable/ripple_button.xml"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.0"> <caret line="5" column="11" selection-start-line="5" selection-start-column="11" selection-end-line="5" selection-end-column="11" /> <folding /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/src/main/res/layout/homepage.xml"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="-0.28301886"> <caret line="1" column="48" selection-start-line="1" selection-start-column="48" selection-end-line="1" selection-end-column="48" /> <folding /> </state> </provider> <provider editor-type-id="android-designer"> <state /> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/src/main/res/layout/settings.xml"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.0"> <caret line="6" column="41" selection-start-line="0" selection-start-column="0" selection-end-line="14" selection-end-column="0" /> <folding /> </state> </provider> <provider editor-type-id="android-designer"> <state /> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/src/main/java/com/randomappsinc/randomnumbergeneratorplus/Activities/MainActivity.java"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.0"> <caret line="331" column="5" selection-start-line="296" selection-start-column="4" selection-end-line="331" selection-end-column="5" /> <folding> <element signature="imports" expanded="false" /> <element signature="e#5173#5174#0" expanded="false" /> <element signature="e#5212#5213#0" expanded="false" /> <element signature="e#5339#5340#0" expanded="false" /> <element signature="e#5378#5379#0" expanded="false" /> </folding> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/src/main/res/menu/menu_main.xml"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.0"> <caret line="13" column="0" selection-start-line="13" selection-start-column="0" selection-end-line="13" selection-end-column="0" /> <folding /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/src/main/AndroidManifest.xml"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="-8.75"> <caret line="14" column="49" selection-start-line="14" selection-start-column="0" selection-end-line="15" selection-end-column="0" /> <folding /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/app/src/main/res/drawable/edittext_border.xml"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.2112676"> <caret line="5" column="8" selection-start-line="0" selection-start-column="0" selection-end-line="5" selection-end-column="8" /> <folding /> </state> </provider> </entry> </component> </project> Sign out
trancethehuman
Running Claude Code on cloud sandboxes
PatchedReality
A simple framework for using Claude Code or Codex CLI as the frontend to any cloud or local LLM on Apple Silicon. Connect locally via LiteLLM + MLX or LM Studio, or remotely via Z.AI, Gemini/Google AI Studio, DeepSeek, or OpenRouter.
max-mapper
access bucket data from google cloud storage as a stream from node or on the cli
devops4me
Use docker, the AWS Cli (acm-pca) and openssl to create and manage an on-premises (root) and cloud-based (subordinate) private certificate authority.
mark-adams
A CLI tool (and library) written in Go to simplify the process of retrieving IP addresses from infrastructure hosted on Google Cloud Platform (GCP).
canonical
An interactive CLI tool for creating a cloud-config for cloud-init based on the current machine's configuration.
gregoryguillou
Plan, apply and destroy terraform stacks on the Cloud via a REST API ond its CLI
NVIDIA
K8s Launch Kit (l8k) is a CLI tool for deploying and managing NVIDIA cloud-native solutions on Kubernetes. The tool helps provide flexible deployment workflows for optimal network performance with SR-IOV, RDMA, and other networking technologies.
llaoj
AI Shell Assistant (aiassist): an intelligent CLI tool for server & cloud-native O&M. It provides expert-level diagnosis, solutions and command guidance for O&M engineers, optimizing workflows, cutting fault troubleshooting time and boosting O&M efficiency. Works on bash/sh/zsh, installable via yum/apt/apk, out-of-the-box.
ragingwind
FCM(Firebase Cloud Messaging Client) for CLI to avoid a troublesome testing of Push Notification on the terminal
regulussol
Employee Payroll/Salary Management App This repository is updated to Angular 11.0 Now. Please install latest Angular 11 cli before starting this project, in case of any issue, please open a GitHub Issue and include detail error screenshots. YouTube Video Tutorial !! Objective: This document serves as an Installation Guide for Elish HCM Cloud free commmunity version Desktop/Mobile App. Tools: MEAN Stack (latest) Angular 9.0, NodeJS 10.8, Express, GraphQL and MongoDB 4.0 or MYSQL Using this design pattern, any old client/server software (like VB/SQL or JAVA/Oracle) can be converted to new design to replace or run in parallel with original software. You can easliy deploy this as an exe desktop app, host it over premises or over cloud or create an Android & iOS mobile app easily. This design pattern is built for Big Data technologies and supports millions of transactions. Also, this design pattern can be applied to any front end like React, VueJS, HTML/JS/Bootstrap/Project clarityto get any front-end look and feel. And Same concepts can applied to connect to almost any database of owners choice at the backend like MYSQL, MS SQL Server, Oracle or CouchDB, MongoDB, Google Firebase etc. What's included : In this repository, Only Employee Management, Payroll/Salary, Voucher and Expense modules is included. Elish HCM Cloud v1.1.8 Elish HCM Cloud provide a completely free desktop and mobile app for managing Employee, Payables, Payroll, Attendance (GPS & Picture), Visitor (GPS & Picture) and other management modules. future update/version/releases after v1.1.8 baseline release, will include new features and bug fixes for free under community license. For enhancement/feature requests, please open a new issue at this Github Repository. App Choices: #A. Elish HCM Cloud also provide a free web and mobile Enterprise app, hosted on Google Cloud with Google Firebase/Firestore database at: https://alivetracking.com Google Playstore - https://alivetracking.com #B. For Community/Developer edition, developers can download a copy of "out of the box installable software package" or complete source code for free. Below documentation serves as installation instruciton for point #B mentioned above. Installation Instruction for "out of the box Installable Desktop/Mobile App" Community/Developers Open Source Code guide Installation Instruction for "out of the box Installable Desktop/Mobile App" ------------------------------------------------------------------------------------ By dafault, Elish HCM Cloud Community Edition is bundled with MongoDB. However, Other database supported on v1.1.8 release are MYSQL, MS SQL Server, PostGreSQL, CouchDB, Google Firebase/FireStore, MongoDB If you wish to migrate/upgrade your old desktop or client/server software to enterprise desktop/mobile app, please write to info@elishconsulting.com for Enterprise version upgrade. README.STEP-1-DB-INSTALLATION README.STEP-2-MIDDLEWARE README.STEP-3-FRONT-END README.STEP-4-Deploy/Host code over cloud Step 4 - will be udpated later.
aiwithqasim
This repository include the snowflake content relaetd to intro to snowflake & loading data from UI, CLI & Cloud Provider in an hands on way
orbs-network
CLI tool for the creation and management of an Orbs V1 node on cloud service (like AWS) - deprecated, see Polygon
A Getting Started Tutorial to get you quick-started on using the IBM Watson Studio DLaaS (Deep Learning as a Service) via the Command Line Interface (CLI). Covers basic pre-requisites, creating a Machine Learning Instance, Cloud Object Storage, etc. and a simple demo.
aviggiano
ffs is a Fast Fuzzing Service CLI that runs your campaigns on the cloud
KoredeSec
A production-ready CLI tool that recreates cloud VPC functionality entirely on Linux, demonstrating how container networking and cloud infrastructure work under the hood.
This project covers the end to end implementation of deploying and productionizing a dockerized/containerized machine learning python flask application into Kubernetes Cluster using the AWS Elastic Kubernetes Service (EKS), AWS Serverless Fargate Instances, AWS CloudFormation Cloud Stack and AWS Elastic Container Registry (ECR) Service. The machine learning business case implemented in this project includes a bank note authentication binary classifier model using Random Forest Classifier; which predicts and classifies a bank note either as a Fake Bank Note (Label 0) or a Genuine Bank Note (Label 1). Implementation Steps: 1. Creation of an end to end machine learning solution covering all the ML life-cycle steps of Data Exploration, Feature Selection, Model Training, Model Validation and Model Testing on the unseen production data. 2. Saved the finalised model as a pickle file. 3. Creation of a Python Flask based API; in order to render the ML model solution and inferences to the end-users. 4. Verified and tested the working status of the Python Flask API in the localhost set-up. 5. Creation of a Docker File (containing the steps/instructions to create a docker image) for the Python Flask based Bank Note Authentication Machine Learning Application embedded with Random Forest ML Classifier Model. 6. Creation of IAM Service Roles with appropriate policies to access the AWS Elastic Container Registry (ECR) Service and AWS Elastic Kubernetes Service (EKS) and AWS CloudFormation Service. 7. Created a new EC2 Linux Server Instance in AWS and copied the web application project’s directories and its files into the AWS Linux Server using SFTP linux commands. 8. Installed the Docker software and the supporting python libraries in the AWS EC2 Linux Server Instance; as per the “requirements.txt” file. 9. Transformation of the Docker File into a Docker Image and Docker Container representing the application; using docker build and run commands. 10. Creation of a Docker Repository within the AWS ECR Service and pushed the application docker image into the repository using AWS Command Line Interface (CLI) commands. 11. Creation of the Cloud Stack with private and public subnets using the AWS CloudFormation Service with appropriate IAM roles and policies. 12. Creation of the Kubernetes Cluster using the AWS EKS Service with appropriate IAM roles and policies and linked the cloud stack created using the AWS CloudFormation Service. 13. Creation of the AWS Serverless Fargate Profile and Fargate instances/nodes. 14. Creation and configured the “Deployment.yaml” and “Service.yaml” files using the Kubernetes kubectl commands. 15. Applied the “Deployment.yaml” with pods replica configuration to the AWS EKS Cluster Fargate Nodes; using the Kubernetes kubectl commands. 16. Applied the “Service.yaml” using the Kubernetes kubectl commands; to render and service the machine learning application to the end-users for public access with the creation of the production end-point. 17. Verified and tested the inferences of the productionized ML Application using the AWS Fargate end-point created in the AWS Kubernetes EKS Cluster. Tools & Technologies: Python, Flask, AWS, AWS EC2, Linux Server, Linux Commands, Command Line Interface (CLI), Docker, Docker Commands, AWS ECR, AWS IAM, AWS CloudFormation, AWS EKS, Kubernetes, Kubernetes kubectl Commands.
{ "name": "bootstrap", "description": "The most popular front-end framework for developing responsive, mobile first projects on the web.", "version": "4.5.0", "version_short": "4.5", "keywords": [ "css", "sass", "mobile-first", "responsive", "front-end", "framework", "web" ], "homepage": "https://getbootstrap.com/", "author": "The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)", "contributors": [ "Twitter, Inc." ], "scripts": { "start": "npm-run-all --parallel watch docs-serve", "bundlewatch": "bundlewatch --config .bundlewatch.config.json", "css": "npm-run-all css-compile css-prefix css-minify css-copy", "css-copy": "cross-env-shell shx mkdir -p site/docs/$npm_package_version_short/dist/ && cross-env-shell shx cp -r dist/css/ site/docs/$npm_package_version_short/dist/", "css-main": "npm-run-all css-lint css-compile-main css-prefix-main css-minify-main css-copy", "css-docs": "npm-run-all css-compile-docs css-prefix-docs css-minify-docs", "css-compile": "npm-run-all --parallel css-compile-*", "css-compile-main": "node-sass --output-style expanded --source-map true --source-map-contents true --precision 6 scss/ -o dist/css/ && npm run css-copy", "css-compile-docs": "cross-env-shell node-sass --output-style expanded --source-map true --source-map-contents true --precision 6 site/docs/$npm_package_version_short/assets/scss/docs.scss site/docs/$npm_package_version_short/assets/css/docs.min.css", "css-lint": "npm-run-all --continue-on-error --parallel css-lint-*", "css-lint-main": "stylelint \"scss/**/*.scss\" --cache --cache-location .cache/.stylelintcache", "css-lint-docs": "stylelint \"site/docs/**/assets/scss/*.scss\" \"site/docs/**/*.css\" --cache --cache-location .cache/.stylelintcache", "css-lint-vars": "fusv scss/ site/docs/", "css-minify": "npm-run-all --parallel css-minify-*", "css-minify-main": "cleancss --level 1 --format breakWith=lf --source-map --source-map-inline-sources --output dist/css/bootstrap.min.css dist/css/bootstrap.css && cleancss --level 1 --format breakWith=lf --source-map --source-map-inline-sources --output dist/css/bootstrap-grid.min.css dist/css/bootstrap-grid.css && cleancss --level 1 --format breakWith=lf --source-map --source-map-inline-sources --output dist/css/bootstrap-reboot.min.css dist/css/bootstrap-reboot.css", "css-minify-docs": "cross-env-shell cleancss --level 1 --format breakWith=lf --source-map --source-map-inline-sources --output site/docs/$npm_package_version_short/assets/css/docs.min.css site/docs/$npm_package_version_short/assets/css/docs.min.css", "css-prefix": "npm-run-all --parallel css-prefix-*", "css-prefix-main": "postcss --config build/postcss.config.js --replace \"dist/css/*.css\" \"!dist/css/*.min.css\"", "css-prefix-docs": "postcss --config build/postcss.config.js --replace \"site/docs/**/*.css\"", "js": "npm-run-all js-compile js-minify js-copy", "js-copy": "cross-env-shell shx mkdir -p site/docs/$npm_package_version_short/dist/ && cross-env-shell shx cp -r dist/js/ site/docs/$npm_package_version_short/dist/", "js-main": "npm-run-all js-lint js-compile js-minify-main", "js-docs": "npm-run-all js-lint-docs js-minify-docs", "js-compile": "npm-run-all --parallel js-compile-* --sequential js-copy", "js-compile-standalone": "rollup --environment BUNDLE:false --config build/rollup.config.js --sourcemap", "js-compile-bundle": "rollup --environment BUNDLE:true --config build/rollup.config.js --sourcemap", "js-compile-plugins": "node build/build-plugins.js", "js-compile-plugins-coverage": "cross-env NODE_ENV=test node build/build-plugins.js", "js-lint": "npm-run-all --continue-on-error --parallel js-lint-*", "js-lint-main": "eslint --report-unused-disable-directives --cache --cache-location .cache/.eslintcache js/src js/tests build/", "js-lint-docs": "eslint --report-unused-disable-directives --cache --cache-location .cache/.eslintcache site/", "js-minify": "npm-run-all --parallel js-minify-main js-minify-docs", "js-minify-main": "npm-run-all js-minify-standalone js-minify-bundle", "js-minify-standalone": "terser --compress typeofs=false --mangle --comments \"/^!/\" --source-map \"content=dist/js/bootstrap.js.map,includeSources,url=bootstrap.min.js.map\" --output dist/js/bootstrap.min.js dist/js/bootstrap.js", "js-minify-bundle": "terser --compress typeofs=false --mangle --comments \"/^!/\" --source-map \"content=dist/js/bootstrap.bundle.js.map,includeSources,url=bootstrap.bundle.min.js.map\" --output dist/js/bootstrap.bundle.min.js dist/js/bootstrap.bundle.js", "js-minify-docs": "cross-env-shell terser --mangle --comments \\\"/^!/\\\" --output site/docs/$npm_package_version_short/assets/js/docs.min.js site/docs/$npm_package_version_short/assets/js/vendor/anchor.min.js site/docs/$npm_package_version_short/assets/js/vendor/clipboard.min.js site/docs/$npm_package_version_short/assets/js/vendor/bs-custom-file-input.min.js \"site/docs/$npm_package_version_short/assets/js/src/*.js\"", "js-test": "npm-run-all js-test-karma* js-test-integration", "js-test-karma": "karma start js/tests/karma.conf.js", "js-test-karma-old": "cross-env USE_OLD_JQUERY=true npm run js-test-karma", "js-test-karma-bundle": "cross-env BUNDLE=true npm run js-test-karma", "js-test-karma-bundle-old": "cross-env BUNDLE=true USE_OLD_JQUERY=true npm run js-test-karma", "js-test-integration": "rollup --config js/tests/integration/rollup.bundle.js", "js-test-cloud": "cross-env BROWSER=true npm run js-test-karma", "lint": "npm-run-all --parallel js-lint css-lint lockfile-lint", "docs": "npm-run-all css-docs js-docs docs-build docs-lint", "docs-build": "bundle exec jekyll build", "docs-compile": "npm run docs-build", "docs-production": "cross-env JEKYLL_ENV=production npm run docs-build", "docs-netlify": "cross-env JEKYLL_ENV=netlify npm run docs-build", "docs-linkinator": "linkinator _gh_pages --recurse --silent --skip \"^(?!http://localhost)\"", "docs-vnu": "node build/vnu-jar.js", "docs-lint": "npm-run-all --parallel docs-vnu docs-linkinator", "docs-serve": "bundle exec jekyll serve", "docs-serve-only": "npm run docs-serve -- --skip-initial-build --no-watch", "lockfile-lint": "lockfile-lint --allowed-hosts npm --allowed-schemes https: --empty-hostname false --type npm --path package-lock.json", "update-deps": "ncu -u -x \"jquery,karma-browserstack-launcher,popper.js,qunit,sinon\" && npm update && bundle update && cross-env-shell echo Manually update \\\"site/docs/$npm_package_version_short/assets/js/vendor/\\\"", "release": "npm-run-all dist release-sri docs-build release-zip*", "release-sri": "node build/generate-sri.js", "release-version": "node build/change-version.js", "release-zip": "cross-env-shell \"shx rm -rf bootstrap-$npm_package_version-dist && shx cp -r dist/ bootstrap-$npm_package_version-dist && zip -r9 bootstrap-$npm_package_version-dist.zip bootstrap-$npm_package_version-dist && shx rm -rf bootstrap-$npm_package_version-dist\"", "release-zip-examples": "node build/zip-examples.js", "dist": "npm-run-all --parallel css js", "test": "npm-run-all lint dist js-test docs-build docs-lint", "netlify": "npm-run-all dist release-sri docs-netlify", "watch": "npm-run-all --parallel watch-*", "watch-css-main": "nodemon --watch scss/ --ext scss --exec \"npm run css-main\"", "watch-css-docs": "nodemon --watch \"site/docs/**/assets/scss/\" --ext scss --exec \"npm run css-docs\"", "watch-js-main": "nodemon --watch js/src/ --ext js --exec \"npm run js-compile\"", "watch-js-docs": "nodemon --watch \"site/docs/**/assets/js/src/\" --ext js --exec \"npm run js-docs\"" }, "style": "dist/css/bootstrap.css", "sass": "scss/bootstrap.scss", "main": "dist/js/bootstrap.js", "repository": { "type": "git", "url": "git+https://github.com/twbs/bootstrap.git" }, "bugs": { "url": "https://github.com/twbs/bootstrap/issues" }, "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/bootstrap" }, "dependencies": {}, "peerDependencies": { "jquery": "1.9.1 - 3", "popper.js": "^1.16.0" }, "devDependencies": { "@babel/cli": "^7.8.4", "@babel/core": "^7.9.6", "@babel/plugin-proposal-object-rest-spread": "^7.9.6", "@babel/preset-env": "^7.9.6", "@rollup/plugin-commonjs": "^11.1.0", "@rollup/plugin-node-resolve": "^7.1.3", "autoprefixer": "^9.7.6", "babel-eslint": "^10.1.0", "babel-plugin-istanbul": "^6.0.0", "bundlewatch": "^0.2.7", "clean-css-cli": "^4.3.0", "cross-env": "^7.0.2", "eslint": "^7.0.0", "find-unused-sass-variables": "^2.0.0", "glob": "^7.1.6", "hammer-simulator": "0.0.1", "ip": "^1.1.5", "jquery": "^3.5.1", "karma": "^5.0.5", "karma-browserstack-launcher": "1.4.0", "karma-chrome-launcher": "^3.1.0", "karma-coverage-istanbul-reporter": "^3.0.2", "karma-detect-browsers": "^2.3.3", "karma-firefox-launcher": "^1.3.0", "karma-qunit": "^4.1.1", "karma-sinon": "^1.0.5", "linkinator": "^2.1.1", "lockfile-lint": "^4.2.2", "node-sass": "^4.14.1", "nodemon": "^2.0.3", "npm-run-all": "^4.1.5", "popper.js": "^1.16.0", "postcss-cli": "^7.1.1", "qunit": "2.9.2", "rollup": "^2.9.1", "rollup-plugin-babel": "^4.4.0", "shelljs": "^0.8.4", "shx": "^0.3.2", "sinon": "^7.5.0", "stylelint": "^13.3.3", "stylelint-config-twbs-bootstrap": "^2.0.2", "terser": "^4.6.13", "vnu-jar": "20.3.16" }, "files": [ "dist/{css,js}/*.{css,js,map}", "js/{src,dist}/**/*.{js,map}", "scss/**/*.scss" ], "jspm": { "registry": "npm", "main": "js/bootstrap", "directories": { "lib": "dist" }, "shim": { "js/bootstrap": { "deps": [ "jquery", "popper.js" ], "exports": "$" } }, "dependencies": {}, "peerDependencies": { "jquery": "1.9.1 - 3", "popper.js": "^1.16.0" } } }
nightcloudminer
Open source cloud mining CLI for Midnight's Scavenger Mine. Deploy in one click on AWS with the fastest Rust implementation.
bwnyasse
A hands-on CLI tool sample showcasing the integration of Dart with Google Cloud's DocumentAI.