text:
package io.sgr.telegram.bot.api;

import static io.sgr.telegram.bot.api.utils.TelegramUtils.verifyToken;

import io.sgr.telegram.bot.api.http.DefaultCallAdapterFactory;
import io.sgr.telegram.bot.api.models.Chat;
import io.sgr.telegram.bot.api.models.ChatMember;
import io.sgr.telegram.bot.api.models.ChatPermissions;
import io.sgr.telegram.bot.api.models.Message;
import io.sgr.telegram.bot.api.models.Poll;
import io.sgr.telegram.bot.api.models.Update;
import io.sgr.telegram.bot.api.models.User;
import io.sgr.telegram.bot.api.models.WebhookInfo;
import io.sgr.telegram.bot.api.models.game.GameHighScore;
import io.sgr.telegram.bot.api.models.game.http.GetGameScorePayload;
import io.sgr.telegram.bot.api.models.game.http.SendGamePayload;
import io.sgr.telegram.bot.api.models.game.http.SetGameScorePayload;
import io.sgr.telegram.bot.api.models.http.AnswerCallbackQueryPayload;
import io.sgr.telegram.bot.api.models.http.AnswerInlineQueryPayload;
import io.sgr.telegram.bot.api.models.http.DeleteMessagePayload;
import io.sgr.telegram.bot.api.models.http.EditMessageCaptionPayload;
import io.sgr.telegram.bot.api.models.http.EditMessageReplyMarkupPayload;
import io.sgr.telegram.bot.api.models.http.EditMessageTextPayload;
import io.sgr.telegram.bot.api.models.http.ForwardMessagePayload;
import io.sgr.telegram.bot.api.models.http.GetUpdatesPayload;
import io.sgr.telegram.bot.api.models.http.SendMessagePayload;
import io.sgr.telegram.bot.api.models.http.SendPollPayload;
import io.sgr.telegram.bot.api.models.http.StopPollPayload;
import io.sgr.telegram.bot.api.utils.JsonUtil;

import okhttp3.OkHttpClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import retrofit2.Retrofit;
import retrofit2.converter.jackson.JacksonConverterFactory;
import retrofit2.converter.scalars.ScalarsConverterFactory;
import retrofit2.http.Body;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;

import java.util.List;
import java.util.Locale;
import java.util.Optional;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;

/**
 * @author SgrAlpha
 */
public interface BotApi {

    /**
     * A simple method for testing your bot's auth token. Requires no parameters.
     *
     * @return basic information about the bot in form of a User object.
     */
    @POST("getMe")
    CompletableFuture<User> getMe();

    @POST("getWebhookInfo")
    CompletableFuture<WebhookInfo> getWebhookInfo();

    @POST("getUpdates")
    CompletableFuture<List<Update>> getUpdates(@Body GetUpdatesPayload payload);

    /**
     * Use this method to send text messages.
     *
     * @param payload The request payload.
     * @return On success, the sent Message is returned.
     */
    @POST("sendMessage")
    CompletableFuture<Message> sendMessage(@Body SendMessagePayload payload);

    /**
     * Use this method to forward messages of any kind.
     *
     * @param payload The request payload.
     * @return On success, the sent Message is returned.
     */
    @POST("forwardMessage")
    CompletableFuture<Message> forwardMessage(@Body ForwardMessagePayload payload);

    /**
     * Use this method to edit text and game messages.
     *
     * @param payload The request payload.
     * @return On success, if edited message is sent by the bot, the edited Message is returned, otherwise True is returned.
     */
    @POST("editMessageText")
    CompletableFuture<Message> editMessageText(@Body EditMessageTextPayload payload);

    /**
     * Use this method to edit captions of messages.
     *
     * @param payload The request payload.
     * @return On success, if edited message is sent by the bot, the edited Message is returned, otherwise True is returned.
     */
    @POST("editMessageCaption")
    CompletableFuture<Message> editMessageCaption(@Body EditMessageCaptionPayload payload);

    /**
     * Use this method to edit only the reply markup of messages.
     *
     * @param payload The request payload.
     * @return On success, if edited message is sent by the bot, the edited Message is returned, otherwise True is returned.
     */
    @POST("editMessageReplyMarkup")
    CompletableFuture<Message> editMessageReplyMarkup(@Body EditMessageReplyMarkupPayload payload);

    /**
     * Use this method to delete a message, including service messages, with the following limitations:
     *

     * - A message can only be deleted if it was sent less than 48 hours ago.
     *

     * - A dice message in a private chat can only be deleted if it was sent more than 24 hours ago.
     *

     * - Bots can delete outgoing messages in private chats, groups, and supergroups.
     *

     * - Bots can delete incoming messages in private chats.
     *

     * - Bots granted can_post_messages permissions can delete outgoing messages in channels.
     *

     * - If the bot is an administrator of a group, it can delete any message there.
     *

     * - If the bot has can_delete_messages permission in a supergroup or a channel, it can delete any message there.
     *
     * @param payload The request payload.
     * @return True on success.
     */
    @POST("deleteMessage")
    CompletableFuture<Boolean> deleteMessage(@Body DeleteMessagePayload payload);

    /**
     * Use this method to send answers to an inline query. No more than 50 results per query are allowed.
     *
     * @param payload The request payload.
     * @return On success, True is returned.
     */
    @POST("answerInlineQuery")
    CompletableFuture<Boolean> answerInlineQuery(@Body AnswerInlineQueryPayload payload);

    /**
     * Use this method to send a native poll.
     *
     * @param payload The request payload.
     * @return On success, the sent Message is returned.
     */
    @POST("sendPoll")
    CompletableFuture<Message> sendPoll(@Body SendPollPayload payload);

    /**
     * Use this method to stop a poll which was sent by the bot.
     *
     * @param payload The request payload.
     * @return On success, the stopped Poll with the final results is returned.
     */
    @POST("stopPoll")
    CompletableFuture<Poll> stopPoll(@Body StopPollPayload payload);

    /**
     * Use this method to kick a user from a group, a supergroup or a channel. In the case of supergroups and channels, the user will not be able to return to
     * the group on their own using invite links, etc., unless unbanned first. The bot must be an administrator in the chat for this to work and must have the
     * appropriate admin rights.
     *
     * @param chatId Unique identifier for the target group or username of the target supergroup or channel (in the format @channelusername).
     * @param userId Unique identifier of the target user.
     * @param untilDate Optional. Date when the user will be unbanned, unix time. If user is banned for more than 366 days or less than 30 seconds from the
     * current time they are considered to be banned forever.
     * @return True on success.
     */
    @FormUrlEncoded
    @POST("kickChatMember")
    CompletableFuture<Boolean> kickChatMember(@Field("chat_id") String chatId, @Field("user_id") long userId, @Field("until_date") Long untilDate);

    /**
     * Use this method to kick a user from a group, a supergroup or a channel. In the case of supergroups and channels, the user will not be able to return to
     * the group on their own using invite links, etc., unless unbanned first. The bot must be an administrator in the chat for this to work and must have the
     * appropriate admin rights.
     *
     * @param chatId Unique identifier for the target group or username of the target supergroup or channel (in the format @channelusername).
     * @param userId Unique identifier of the target user.
     * @param untilDate Optional. Date when the user will be unbanned, unix time. If user is banned for more than 366 days or less than 30 seconds from the
     * current time they are considered to be banned forever.
     * @return True on success.
     */
    @FormUrlEncoded
    @POST("kickChatMember")
    CompletableFuture<Boolean> kickChatMember(@Field("chat_id") long chatId, @Field("user_id") long userId, @Field("until_date") Long untilDate);

    /**
     * Use this method to unban a previously kicked user in a supergroup or channel. The user will not return to the group or channel automatically, but will be
     * able to join via link, etc. The bot must be an administrator for this to work.
     *
     * @param chatId Unique identifier for the target group or username of the target supergroup or channel (in the format @channelusername).
     * @param userId Unique identifier of the target user.
     * @return True on success.
     */
    @FormUrlEncoded
    @POST("unbanChatMember")
    CompletableFuture<Boolean> unbanChatMember(@Field("chat_id") String chatId, @Field("user_id") long userId);

    /**
     * Use this method to unban a previously kicked user in a supergroup or channel. The user will not return to the group or channel automatically, but will be
     * able to join via link, etc. The bot must be an administrator for this to work.
     *
     * @param chatId Unique identifier for the target group or username of the target supergroup or channel (in the format @channelusername).
     * @param userId Unique identifier of the target user.
     * @return True on success.
     */
    @FormUrlEncoded
    @POST("unbanChatMember")
    CompletableFuture<Boolean> unbanChatMember(@Field("chat_id") long chatId, @Field("user_id") long userId);

    /**
     * Use this method to restrict a user in a supergroup. The bot must be an administrator in the supergroup for this to work and must have the appropriate
     * admin rights. Pass True for all permissions to lift restrictions from a user.
     *
     * @param chatId Unique identifier for the target group or username of the target supergroup or channel (in the format @channelusername).
     * @param userId Unique identifier of the target user.
     * @param permissions New user permissions.
     * @param untilDate Optional. Date when restrictions will be lifted for the user, unix time. If user is restricted for more than 366 days or less than 30
     * seconds from the current time, they are considered to be restricted forever.
     * @return True on success.
     */
    @FormUrlEncoded
    @POST("restrictChatMember")
    CompletableFuture<Boolean> restrictChatMember(@Field("chat_id") String chatId, @Field("user_id") long userId,
            @Field("permissions") ChatPermissions permissions, @Field("until_date") Long untilDate);

    /**
     * Use this method to restrict a user in a supergroup. The bot must be an administrator in the supergroup for this to work and must have the appropriate
     * admin rights. Pass True for all permissions to lift restrictions from a user.
     *
     * @param chatId Unique identifier for the target group or username of the target supergroup or channel (in the format @channelusername).
     * @param userId Unique identifier of the target user.
     * @param permissions New user permissions.
     * @param untilDate Optional. Date when restrictions will be lifted for the user, unix time. If user is restricted for more than 366 days or less than 30
     * seconds from the current time, they are considered to be restricted forever.
     * @return True on success.
     */
    @FormUrlEncoded
    @POST("restrictChatMember")
    CompletableFuture<Boolean> restrictChatMember(@Field("chat_id") long chatId, @Field("user_id") long userId,
            @Field("permissions") ChatPermissions permissions, @Field("until_date") Long untilDate);

    /**
     * Use this method to promote or demote a user in a supergroup or a channel. The bot must be an administrator in the chat for this to work and must have the
     * appropriate admin rights. Pass False for all boolean parameters to demote a user.
     *
     * @param chatId Unique identifier for the target group or username of the target supergroup or channel (in the format @channelusername).
     * @param userId Unique identifier of the target user.
     * @param canChangeInfo Optional. Pass True, if the administrator can change chat title, photo and other settings.
     * @param canPostMessage Optional. Pass True, if the administrator can create channel posts, channels only.
     * @param canEditMessage Optional. Pass True, if the administrator can edit messages of other users and can pin messages, channels only.
     * @param canDeleteMessage Optional. Pass True, if the administrator can delete messages of other users.
     * @param canInviteUsers Optional. Pass True, if the administrator can invite new users to the chat.
     * @param canRestrictMembers Optional. Pass True, if the administrator can restrict, ban or unban chat members.
     * @param canPinMessage Optional. Pass True, if the administrator can pin messages, supergroups only.
     * @param canPromoteMembers Optional. Pass True, if the administrator can add new administrators with a subset of his own privileges or demote
     * administrators that he has promoted, directly or indirectly (promoted by administrators that were appointed by him).
     * @return True on success.
     */
    @FormUrlEncoded
    @POST("promoteChatMember")
    CompletableFuture<Boolean> promoteChatMember(@Field("chat_id") String chatId, @Field("user_id") long userId,
            @Field("can_change_info") Boolean canChangeInfo, @Field("can_post_messages") Boolean canPostMessage,
            @Field("can_edit_messages") Boolean canEditMessage, @Field("can_delete_messages") Boolean canDeleteMessage,
            @Field("can_invite_users") Boolean canInviteUsers, @Field("can_restrict_members") Boolean canRestrictMembers,
            @Field("can_pin_messages") Boolean canPinMessage, @Field("can_promote_members") Boolean canPromoteMembers);

    /**
     * Use this method to promote or demote a user in a supergroup or a channel. The bot must be an administrator in the chat for this to work and must have the
     * appropriate admin rights. Pass False for all boolean parameters to demote a user.
     *
     * @param chatId Unique identifier for the target group or username of the target supergroup or channel (in the format @channelusername).
     * @param userId Unique identifier of the target user.
     * @param canChangeInfo Optional. Pass True, if the administrator can change chat title, photo and other settings.
     * @param canPostMessage Optional. Pass True, if the administrator can create channel posts, channels only.
     * @param canEditMessage Optional. Pass True, if the administrator can edit messages of other users and can pin messages, channels only.
     * @param canDeleteMessage Optional. Pass True, if the administrator can delete messages of other users.
     * @param canInviteUsers Optional. Pass True, if the administrator can invite new users to the chat.
     * @param canRestrictMembers Optional. Pass True, if the administrator can restrict, ban or unban chat members.
     * @param canPinMessage Optional. Pass True, if the administrator can pin messages, supergroups only.
     * @param canPromoteMembers Optional. Pass True, if the administrator can add new administrators with a subset of his own privileges or demote
     * administrators that he has promoted, directly or indirectly (promoted by administrators that were appointed by him).
     * @return True on success.
     */
    @FormUrlEncoded
    @POST("promoteChatMember")
    CompletableFuture<Boolean> promoteChatMember(@Field("chat_id") long chatId, @Field("user_id") long userId,
            @Field("can_change_info") Boolean canChangeInfo, @Field("can_post_messages") Boolean canPostMessage,
            @Field("can_edit_messages") Boolean canEditMessage, @Field("can_delete_messages") Boolean canDeleteMessage,
            @Field("can_invite_users") Boolean canInviteUsers, @Field("can_restrict_members") Boolean canRestrictMembers,
            @Field("can_pin_messages") Boolean canPinMessage, @Field("can_promote_members") Boolean canPromoteMembers);

    /**
     * Use this method to set a custom title for an administrator in a supergroup promoted by the bot.
     *
     * @param chatId Unique identifier for the target group or username of the target supergroup or channel (in the format @channelusername).
     * @param userId Unique identifier of the target user.
     * @param customTitle New custom title for the administrator; 0-16 characters, emoji are not allowed.
     * @return True on success.
     */
    @FormUrlEncoded
    @POST("setChatAdministratorCustomTitle")
    CompletableFuture<Boolean> setChatAdministratorCustomTitle(@Field("chat_id") String chatId, @Field("user_id") long userId,
            @Field("custom_title") String customTitle);

    /**
     * Use this method to set a custom title for an administrator in a supergroup promoted by the bot.
     *
     * @param chatId Unique identifier for the target group or username of the target supergroup or channel (in the format @channelusername).
     * @param userId Unique identifier of the target user.
     * @param customTitle New custom title for the administrator; 0-16 characters, emoji are not allowed.
     * @return True on success.
     */
    @FormUrlEncoded
    @POST("setChatAdministratorCustomTitle")
    CompletableFuture<Boolean> setChatAdministratorCustomTitle(@Field("chat_id") long chatId, @Field("user_id") long userId,
            @Field("custom_title") String customTitle);

    /**
     * Use this method to set default chat permissions for all members. The bot must be an administrator in the group or a supergroup for this to work and must
     * have the can_restrict_members admin rights.
     *
     * @param chatId Unique identifier for the target chat or username of the target supergroup (in the format @supergroupusername).
     * @param permissions New default chat permissions.
     * @return True on success.
     */
    @FormUrlEncoded
    @POST("setChatPermissions")
    CompletableFuture<Boolean> setChatPermissions(@Field("chat_id") String chatId, @Field("permissions") ChatPermissions permissions);

    /**
     * Use this method to set default chat permissions for all members. The bot must be an administrator in the group or a supergroup for this to work and must
     * have the can_restrict_members admin rights.
     *
     * @param chatId Unique identifier for the target chat or username of the target supergroup (in the format @supergroupusername).
     * @param permissions New default chat permissions.
     * @return True on success.
     */
    @FormUrlEncoded
    @POST("setChatPermissions")
    CompletableFuture<Boolean> setChatPermissions(@Field("chat_id") long chatId, @Field("permissions") ChatPermissions permissions);

    /**
     * Use this method to generate a new invite link for a chat; any previously generated link is revoked. The bot must be an administrator in the chat for this
     * to work and must have the appropriate admin rights.
     *
     * Note: Each administrator in a chat generates their own invite links. Bots can't use invite links generated by other administrators. If you want your bot
     * to work with invite links, it will need to generate its own link using exportChatInviteLink – after this the link will become available to the bot via
     * the getChat method. If your bot needs to generate a new invite link replacing its previous one, use exportChatInviteLink again.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the format @channelusername).
     * @return the new invite link as String on success.
     */
    @FormUrlEncoded
    @POST("exportChatInviteLink")
    CompletableFuture<String> exportChatInviteLink(@Field("chat_id") String chatId);

    /**
     * Use this method to generate a new invite link for a chat; any previously generated link is revoked. The bot must be an administrator in the chat for this
     * to work and must have the appropriate admin rights.
     *
     * Note: Each administrator in a chat generates their own invite links. Bots can't use invite links generated by other administrators. If you want your bot
     * to work with invite links, it will need to generate its own link using exportChatInviteLink – after this the link will become available to the bot via
     * the getChat method. If your bot needs to generate a new invite link replacing its previous one, use exportChatInviteLink again.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the format @channelusername).
     * @return the new invite link as String on success.
     */
    @FormUrlEncoded
    @POST("exportChatInviteLink")
    CompletableFuture<String> exportChatInviteLink(@Field("chat_id") long chatId);

    /**
     * Use this method to delete a chat photo. Photos can't be changed for private chats. The bot must be an administrator in the chat for this to work and must
     * have the appropriate admin rights.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the format @channelusername).
     * @return True on success.
     */
    @FormUrlEncoded
    @POST("deleteChatPhoto")
    CompletableFuture<Boolean> deleteChatPhoto(@Field("chat_id") String chatId);

    /**
     * Use this method to delete a chat photo. Photos can't be changed for private chats. The bot must be an administrator in the chat for this to work and must
     * have the appropriate admin rights.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the format @channelusername).
     * @return True on success.
     */
    @FormUrlEncoded
    @POST("deleteChatPhoto")
    CompletableFuture<Boolean> deleteChatPhoto(@Field("chat_id") long chatId);

    /**
     * Use this method to change the title of a chat. Titles can't be changed for private chats. The bot must be an administrator in the chat for this to work
     * and must have the appropriate admin rights.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the format @channelusername).
     * @param title New chat title, 1-255 characters.
     * @return True on success.
     */
    @FormUrlEncoded
    @POST("setChatTitle")
    CompletableFuture<Boolean> setChatTitle(@Field("chat_id") String chatId, @Field("title") String title);

    /**
     * Use this method to change the title of a chat. Titles can't be changed for private chats. The bot must be an administrator in the chat for this to work
     * and must have the appropriate admin rights.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the format @channelusername).
     * @param title New chat title, 1-255 characters.
     * @return True on success.
     */
    @FormUrlEncoded
    @POST("setChatTitle")
    CompletableFuture<Boolean> setChatTitle(@Field("chat_id") long chatId, @Field("title") String title);

    /**
     * Use this method to change the description of a group, a supergroup or a channel. The bot must be an administrator in the chat for this to work and must
     * have the appropriate admin rights.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the format @channelusername).
     * @param description New chat description, 0-255 characters.
     * @return True on success.
     */
    @FormUrlEncoded
    @POST("setChatDescription")
    CompletableFuture<Boolean> setChatDescription(@Field("chat_id") String chatId, @Field("description") String description);

    /**
     * Use this method to change the description of a group, a supergroup or a channel. The bot must be an administrator in the chat for this to work and must
     * have the appropriate admin rights.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the format @channelusername).
     * @param description New chat description, 0-255 characters.
     * @return True on success.
     */
    @FormUrlEncoded
    @POST("setChatDescription")
    CompletableFuture<Boolean> setChatDescription(@Field("chat_id") long chatId, @Field("description") String description);

    /**
     * Use this method to pin a message in a group, a supergroup, or a channel. The bot must be an administrator in the chat for this to work and must have the
     * 'can_pin_messages' admin right in the supergroup or 'can_edit_messages' admin right in the channel.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the format @channelusername).
     * @param messageId Identifier of a message to pin.
     * @param disableNotification Pass True, if it is not necessary to send a notification to all chat members about the new pinned message. Notifications are
     * always disabled in channels.
     * @return True on success.
     */
    @FormUrlEncoded
    @POST("pinChatMessage")
    CompletableFuture<Boolean> pinChatMessage(@Field("chat_id") String chatId, @Field("message_id") long messageId,
            @Field("disable_notification") Boolean disableNotification);

    /**
     * Use this method to pin a message in a group, a supergroup, or a channel. The bot must be an administrator in the chat for this to work and must have the
     * 'can_pin_messages' admin right in the supergroup or 'can_edit_messages' admin right in the channel.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the format @channelusername).
     * @param messageId Identifier of a message to pin.
     * @param disableNotification Pass True, if it is not necessary to send a notification to all chat members about the new pinned message. Notifications are
     * always disabled in channels.
     * @return True on success.
     */
    @FormUrlEncoded
    @POST("pinChatMessage")
    CompletableFuture<Boolean> pinChatMessage(@Field("chat_id") long chatId, @Field("message_id") long messageId,
            @Field("disable_notification") Boolean disableNotification);

    /**
     * Use this method to unpin a message in a group, a supergroup, or a channel. The bot must be an administrator in the chat for this to work and must have
     * the 'can_pin_messages' admin right in the supergroup or 'can_edit_messages' admin right in the channel.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the format @channelusername).
     * @return True on success.
     */
    @FormUrlEncoded
    @POST("unpinChatMessage")
    CompletableFuture<Boolean> unpinChatMessage(@Field("chat_id") String chatId);

    /**
     * Use this method to unpin a message in a group, a supergroup, or a channel. The bot must be an administrator in the chat for this to work and must have
     * the 'can_pin_messages' admin right in the supergroup or 'can_edit_messages' admin right in the channel.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the format @channelusername).
     * @return True on success.
     */
    @FormUrlEncoded
    @POST("unpinChatMessage")
    CompletableFuture<Boolean> unpinChatMessage(@Field("chat_id") long chatId);

    /**
     * Use this method for your bot to leave a group, supergroup or channel.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the format @channelusername).
     * @return True on success.
     */
    @FormUrlEncoded
    @POST("leaveChat")
    CompletableFuture<Boolean> leaveChat(@Field("chat_id") String chatId);

    /**
     * Use this method for your bot to leave a group, supergroup or channel.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the format @channelusername).
     * @return True on success.
     */
    @FormUrlEncoded
    @POST("leaveChat")
    CompletableFuture<Boolean> leaveChat(@Field("chat_id") long chatId);

    /**
     * Use this method to get up to date information about the chat (current name of the user for one-on-one conversations, current username of a user, group or
     * channel, etc.).
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the format @channelusername).
     * @return a Chat object on success.
     */
    @FormUrlEncoded
    @POST("getChat")
    CompletableFuture<Chat> getChat(@Field("chat_id") String chatId);

    /**
     * Use this method to get up to date information about the chat (current name of the user for one-on-one conversations, current username of a user, group or
     * channel, etc.).
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the format @channelusername).
     * @return a Chat object on success.
     */
    @FormUrlEncoded
    @POST("getChat")
    CompletableFuture<Chat> getChat(@Field("chat_id") long chatId);

    /**
     * Use this method to get a list of administrators in a chat.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the format @channelusername).
     * @return an Array of ChatMember objects that contains information about all chat administrators except other bots. If the chat is a group or a supergroup
     * and no administrators were appointed, only the creator will be returned.
     */
    @FormUrlEncoded
    @POST("getChatAdministrators")
    CompletableFuture<List<ChatMember>> getChatAdministrators(@Field("chat_id") String chatId);

    /**
     * Use this method to get a list of administrators in a chat.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the format @channelusername).
     * @return an Array of ChatMember objects that contains information about all chat administrators except other bots. If the chat is a group or a supergroup
     * and no administrators were appointed, only the creator will be returned.
     */
    @FormUrlEncoded
    @POST("getChatAdministrators")
    CompletableFuture<List<ChatMember>> getChatAdministrators(@Field("chat_id") long chatId);

    /**
     * Use this method to get the number of members in a chat.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the format @channelusername).
     * @return Int on success.
     */
    @FormUrlEncoded
    @POST("getChatMembersCount")
    CompletableFuture<Integer> getChatMembersCount(@Field("chat_id") String chatId);

    /**
     * Use this method to get the number of members in a chat.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the format @channelusername).
     * @return Int on success.
     */
    @FormUrlEncoded
    @POST("getChatMembersCount")
    CompletableFuture<Integer> getChatMembersCount(@Field("chat_id") long chatId);

    /**
     * Use this method to get information about a member of a chat.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the format @channelusername).
     * @param userId Unique identifier of the target user.
     * @return a ChatMember object on success.
     */
    @FormUrlEncoded
    @POST("getChatMember")
    CompletableFuture<ChatMember> getChatMember(@Field("chat_id") String chatId, @Field("user_id") long userId);

    /**
     * Use this method to get information about a member of a chat.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the format @channelusername).
     * @param userId Unique identifier of the target user.
     * @return a ChatMember object on success.
     */
    @FormUrlEncoded
    @POST("getChatMember")
    CompletableFuture<ChatMember> getChatMember(@Field("chat_id") long chatId, @Field("user_id") long userId);

    /**
     * Use this method to send answers to callback queries sent from inline keyboards. The answer will be displayed to the user as a notification at the top of
     * the chat screen or as an alert.
     *
     * @param payload The request payload.
     * @return True on success.
     */
    @POST("answerCallbackQuery")
    CompletableFuture<Boolean> answerCallbackQuery(@Body AnswerCallbackQueryPayload payload);

    @POST("sendGame")
    CompletableFuture<Message> sendGame(@Body SendGamePayload payload);

    @POST("setGameScore")
    CompletableFuture<Message> setGameScoreByBot(@Body SetGameScorePayload payload);

    @POST("setGameScore")
    CompletableFuture<Boolean> setGameScore(@Body SetGameScorePayload payload);

    @POST("getGameHighScores")
    CompletableFuture<List<GameHighScore>> getGameHighScores(@Body GetGameScorePayload payload);

    static BotApiBuilder newBuilder(String botApiToken) {
        return new BotApiBuilder(botApiToken);
    }

    /**
     * @author SgrAlpha
     */
    class BotApiBuilder {

        private static final String BASE_URL_FORMAT = "https://api.telegram.org/bot%s/";

        private final String botApiToken;
        private boolean retry = false;
        private Logger logger;

        BotApiBuilder(final String botApiToken) {
            verifyToken(botApiToken);
            this.botApiToken = botApiToken;
        }

        /**
         * Enable retry
         *
         * @return the builder
         */
        public BotApiBuilder enableRetry() {
            this.retry = true;
            return this;
        }

        /**
         * @param logger the logger
         *
         * @return the builder
         */
        public BotApiBuilder setLogger(final Logger logger) {
            this.logger = logger;
            return this;
        }

        /**
         * @return the bot API client
         */
        public BotApi build() {
            Retrofit.Builder retrofitBuilder = new Retrofit.Builder()
                    .baseUrl(String.format(Locale.ENGLISH, BASE_URL_FORMAT, botApiToken))
                    .addConverterFactory(ScalarsConverterFactory.create())
                    .addConverterFactory(JacksonConverterFactory.create(JsonUtil.getObjectMapper()))
                    .addCallAdapterFactory(new DefaultCallAdapterFactory(retry, Optional.ofNullable(logger).orElse(LoggerFactory.getLogger(BotApi.class))));
            OkHttpClient.Builder clientBuilder = new OkHttpClient().newBuilder()
                    .retryOnConnectionFailure(true)
                    .connectTimeout(5, TimeUnit.MINUTES)
                    .readTimeout(5, TimeUnit.MINUTES)
                    .writeTimeout(5, TimeUnit.MINUTES);
            retrofitBuilder.client(clientBuilder.build());
            return retrofitBuilder.build().create(BotApi.class);
        }

    }

}


Interested in learning more? See below for details on both commercial and residential service changes.
View a presentation on the new commercial service changes presented at workshops.
Read the December 18, 2017 press release on the new waste, recycling and yard debris services coming to the Town of Truckee.
Read the Final Negotiated Solid Waste Franchise Agreement Proposal, presented at the Truckee Town Council meeting on December 12, 2017.
View the presentation on the new waste, recycling and organics services, presented at the Truckee Town Council meeting on July 25, 2017.
Download the Solid Waste Franchise Agreement Proposal Review, presented at the Truckee Town Council meeting on July 25, 2017.


text:
Q: Superelliptical Trig Functions The six normal trigonometric functions relate to the unit circle and the coordinates of the endpoints of the radii making some angle $\theta$ with the x-axis (sine represents the y-coordinate, cosine the x-coordinate, and tangent the ratio of the two). Does there exist a analogous set of functions for the unit superellipse with equation
$$x^4+y^4=1?$$
I've been struggling to define such functions that are periodic and work for all values of $\theta$, $0$ through $2\pi$.

A: $x^2+y^2=1$ can be described as $(\cos{t},\sin{t})$, so $x^{2n}+y^{2n}=1$ can be described as $(\sqrt[n]{\cos{t}},\sqrt[n]{\sin{t}})$ for $0<t<\frac{\pi}{2}$. To generalize this to all $t$, we can multiply by the signum function, which returns $1$ or $-1$ depending on the sign of the input, and we have
$$(signum(\cos{t})\sqrt[n]{|\cos{t}|},signum(\sin{t})\sqrt[n]{|\sin{t}|})$$

A: I would like to expand upon the excellent solution presented by @IsaacBrowne. To that end, I introduce my own generalization of the superellipse, called superconics. The general form is given by
$$f(X) = b(1-c^2|X/a|^q)^p$$
or its canonical form
$$f(x) = (1-c^2|x|^q)^p$$
Here, $a$ and $b$ scale the $x$ and $y$ axes, resp. and $c^2=\pm1$. $c^2=1$ corresponds to elliptic and parabolic types and $c^2=-1$ corresponds to hyperbolic types. (More generally, $c^2$ can vary smoothly between.)
The following integral gives the area under the curve, the centroid, moments, and moments of inertia of all the superconics.
$$\int_{-a}^a X^nf^m(X) dX = a^{n+1}b^m\int_{-1}^1 x^nf^m(x) dx$$
First we notice that $a$ and $b$ are superfluous and that we can concentrate on the canonical equation. The results can be scaled appropriately for any $a$ and $b$ afterward according to the factor $a^{n+1}b^m$. Next, and most important, this equation can be solved exactly in terms of known functions, specifically, the Gauss hypergeometric function and the incomplete beta function
$$
\begin{align}
\int_{-1}^1 x^nf^m(x) dx
& = \frac{2}{n+1} {_2F_1}(-mp,\frac{n+1}{q};1+\frac{n+1}{q};c^2)\\
& = \frac{2}{q} (c^2)^{-\frac{n+1}{q}} B(\frac{n+1}{q},mp+1,c^2)
\end{align}
$$
Further simplifications accrue when $c^2=1$. To wit, for $m=1, n=0$ we get the area
$$\int_{-1}^1 f(x) dx = \Psi(p,q) = 2\frac{\Gamma(p+1)\Gamma(1+1/q)}{\Gamma(1+1/q)}  = \Psi(1/q,1/p)$$
More generally, for arbitrary $m$ and $n$ we substitute $p\to mp$ and $q\to q/(n+1)$. All of the integrals for $c^2=1$ can be expressed solely in terms of the parameter $\Psi$. This is true for bodies of revolution as well as other three-dimensional bodies composed of superconics profiles.
Now, in addition to the above intrinsic equation for the superconics, we can derive the following $parametric$ equation for superconics in the complex plane:
$$z=|\cos^{2/q}(u)|\text{sgn}(\cos(u))+i|(1-c^2\cos(u))^p|\text{sgn}(\sin(u))$$
where $u = [0,\pi]$ for the upper half plane and $u = [0,2\pi]$ for the full plane, e.g., a closed curve.
You can find some illustrations and animations of superconics here Superconics and here A New Twist on Möbius. There is even an animation of a smooth transition from a sphere to a hyperboloid of one and two sheets using only superconics (with variable $c^2$). Here is a small version of that animation. Mind you, we can make similar animations with any superconics shape.

In the spirit of full disclosure, this is essentially the same response as used here: Polar form of generalized superellipse.

redpajama_set_name: RedPajamaStackExchange


Items where contributor is "Flister, Susanne"
Mysore, Keshava and Flister, Susanne and Müller, Pie and Rodrigues, Veronica and Reichert, Heinrich. (2011) Brain development in the yellow fever mosquito Aedes aegypti : a comparative immunocytochemical analysis using cross-reacting antibodies from Drosophila melanogaster. Development genes and evolution, Vol. 221. pp. 281-296.


This opportunity will provide system engineering and Design Math Model (DMM) integration support to the System Analysis Branch (EV74), the System Evaluation team, the Systems Modeling Team, the Space Launch System (SLS) Program, and the SLS Elements.
The successful candidate will assist in performing criticality assessment on Post EM-1 DMMs and support the DMM Task Team review of the DMM metadata as the System Engineering representative.
Review proposed DMM and perform a criticality assessments of the model to determine if it should be tracked as a DMM.
Develop, populate, assess, and track inputs to the Design Model Log.
Perform functional integration assessments related to model validations. Coordinate and help to ensure that all models meet appropriate documentation and approval milestones.
Provide guidance to model owners to characterize their metadata.
Measure and track the maturity level of models, simulations, and their metadata across the SLS Program.
Review the DMM metadata and ensure that it is complete and accurate.
Participate in the Task Team review of the DMM.
Provide SE concurrence that the DMM and metadata meets all of the stated objectives and is ready for use by SLS.
Lead and/or support the development of the Vehicle Systems Analysis Document (VSAD) and Data Exchange Matrix or SLS vehicle configurations post EM-1.
Degree in Computer, Aerospace, Industrial, or Mechanical Engineering or related technical discipline such as Computer Science, Mathematics, or Physics from an ABET-accredited university is required. Typically, educational requirements are the equivalent of a Masters with at least 8 years of experience or a BS with at least 10 years of experience.
Knowledge of the use of modeling and simulation throughout a product life cycle.
Knowledge of verification, validation, and accreditation/certification (VV&A) of models and simulation.
Technical integration experience working with a variety of engineering disciplines and project/program organizations.
Outstanding negotiation skills demonstrated through complex technical problem solving and the capability to break down complex problems or issues into manageable pieces to facilitate resolution of technical concerns or issues.
Excellent oral, written, interpersonal, customer relation skills, and presentation skills.
Intermediate skills using Microsoft Office Suite (Word, Office, Excel, PowerPoint, and Outlook).
Experience/knowledge of NASA Systems Engineering policies and procedures.
Knowledge of NASA management of Design Math Models (DMMs).
Knowledge of NASA spacecraft, launch vehicles, or SLS Program.


Swedish electric vehicle startup Uniti has hired Sally Povolotsky to lead the continued development of its city EV, Uniti One. According to a statement released by Uniti, the move affirms the company's commitment to revealing both two and four-seat production models in 2019.
Povolotsky joins Uniti with more than 15 years of experience in the automotive industry, from advanced engineering to product strategy and commercial development for numerous initiatives. Povolotsky has achieved particular success in special projects during her time working with Jaguar Land Rover as concept and project lead for several electrification projects.
Due to high vehicle demand – more than €70m (US$81.8m) in pre-order value – Uniti has made moves to ensure availability to pre-order customers throughout northern Europe while establishing the supply chain and production partnerships necessary to rapidly scale operations after 2019. Key partnerships include Siemens, whose PLM suite will be used to minimize waste and reduce time to market. Povolotsky will take lead in managing these relationships.


Is there a membership fee to become an Accelerator?
No! Our program is free and open to all runners. In the Fall, our team will run in a few cross country meets which will require each runner to pay for their own registration fee (usually around $6.00).


The Kawasaki Z1000 SX model is a Sport touring bike manufactured by Kawasaki . In this version sold from year 2014 , the dry weight is and it is equiped with a V2, four-stroke motor. The engine produces a maximum peak output power of 136.11 HP (99.4 kW) @ 10000 RPM and a maximum torque of 111.00 Nm (11.3 kgf-m or 81.9 ft.lbs) @ 11300 RPM . With this drive-train, the Kawasaki Z1000 SX is capable of reaching a maximum top speed of . Regarding the chassis characteristics, responsible for road holding, handling behaviour and ride confort, the Kawasaki Z1000 SX have a Aluminium twin-tube frame with front suspension being 41 mm inverted fork with stepless compression and rebound damping and spring preload adjustability and in the rear suspension it is equiped with Horizontal Back-link, gas-charged, with stepless rebound damping and remote spring preload adjustability . Stock tire sizes are 120/70-ZR17 on the front, and 190/50-ZR17 on the rear. As for stopping power, the Kawasaki Z1000 SX braking system includes Double disc. Floating discs. size 300 mm (11.8 inches) at the front and Single disc size 250 mm (9.8 inches) at the rear.
Front brakes Double disc. Floating discs.


text:
COVID-19 pandemic `will probably get worse' – Trump
COVID-19: Russia embarks on massive vaccination campaign
Verity News
By Harrison Arubu
President Donald Trump on Tuesday evening admitted that the COVID-19 pandemic "will probably get worse before it gets better''.
Speaking at a White House news briefing, Trump noted the rising cases in southern and western states of the country, especially Arizona, California, Florida, Georgia and Texas.
"It will probably, unfortunately, get worse before it gets better, something I don't like saying about things, but that's the way it is," he said.
The News Agency of Nigeria (NAN) reports that the acknowledgement deviated from the president's recent positive predictions about the pandemic.
Until the rise in new cases, Trump had downplayed the COVID-19 crisis in the U.S., and was even pressuring states for reopening of the economy.
He had threatened to withdraw funding from higher institutions that refused to resume in-person classes in the impending new academic year.
At Tuesday's news briefing, the president also urged Americans, especially young people, to wear masks where physical distancing was impossible.
"Get a mask. Whether you like the mask or not, they have an impact. They will have an effect and we need everything we can get," he said.
Trump said the ultimate goal of his administration was to end the pandemic, and not merely to manage it.
He said, "We want to get rid of it as soon as we can. That is why getting a vaccine remains a top priority. Two vaccine candidates are entering the final stage of clinical trials this month.
"This was achieved in record time. It used to be years before you were in a position like we are right now.
"Four other vaccines will enter final trials the following weeks and we are mass producing all of the top candidates so that the first approved vaccine will be available immediately.''
The president added that the U.S. military was on standby to immediately distribute the vaccines as soon as they were ready.
NAN reports that the briefing came hours after a Chinese company, CanSino Biologics Inc., reported that its experimental coronavirus vaccine showed promising results in a mid-stage clinical study.
A reporter asked if his administration would be willing to work with China should it be the first to successfully develop a vaccine.
Trump said he is willing to work with anybody that would "get us a good result''.(NAN)
Related Topics:PandemicTrumpUS
COVID-19: NCDC records 1,444 new infections, total now 110,387
Breaking: For the second time, US reps impeach Trump
COVID-19: infections in Nigeria surpass 100,000
Trump breaks silence hours after twitter permanent ban

redpajama_set_name: RedPajamaCommonCrawl


text:
Study Finds the Exact Amount of Rock Songs You Need for Your Next Road Trip Playlist
Philip Trapp Published: November 17, 2021
iStock / Getty Images
Rock and metal fans have plenty of great songs to choose from for their next road trip playlist.
But just how many tunes should be on it? Is there some magic number of tracks that make the perfect length for a rock road trip playlist?
Car insurance experts at Uswitch.com, a U.K. price comparison website, claim to have found that number for specific trips. And not just for rock, but for many different music genres.
For those about to rock, the results posit that a rock song's average runtime — and therefore the usual length of rock playlists — can make the perfect mix for some iconic road trips.
The study looked at the 10 most popular road trips in the U.S. and abroad, including notable stateside destinations such as the historic Route 66 (No. 1) and California's Big Sur Coast Highway (No. 2). Also on the list were Australia's Great Ocean Road (No. 3), Ireland's Wild Atlantic Highway (No. 4) and Snowdonia National Park in Wales (No. 5).
Considering trips of great distance, rock music fared as one of the best for lengthy drives. Perhaps unsurprisingly, it came in second only to instrumental music, which has an average playlist track count of 200 and average playlist times good for a 10-hour trip.
"Rock music is the perfect choice for journeys up to 6.6 hours long (six hours and 36 minutes with an average of 63 songs), while classical music will be best suited for journeys up to 5.7 hours (five hours and 42 minutes with an average of 74 songs)," the report explains. "If you are after a slightly alternative genre of music, for journeys up to 5.5 hours (five hours and 30 minutes and 91 songs), give a gaming playlist a go."
The study further breaks down which tracks are best suited for each of the trips. For traversing all of Route 66, you'll need a playlist with 474 rock songs. For Big Sur, only 32. Cruising the Pacific Coast Highway requires a rock playlist of 415 songs, while taking the Blue Ridge Parkway entails 156. The respective numbers for metal are slightly different.
Uswitch says it "pursued this research to evaluate the popularity of road trips by the number of music tracks required to complete them. Road trips were sourced from a seed list based on the total number of Instagram hashtags, and they were ranked accordingly."
The trip durations were taken from Google Maps with educated guesses for start and end points. Playlist data was extracted from Spotify, gathering the 10 most popular playlists in each genre, 100 total of which were selected. Calculations were then made to find the average playlist duration in each genre and its respective average number of songs.
Read the full study and see graphic representations of the results here.
The 66 Best Rock Songs of the Decade: 2010 - 2019
See Loudwire's picks for the 66 best rock songs of the 2010s.
Source: Study Finds the Exact Amount of Rock Songs You Need for Your Next Road Trip Playlist
Filed Under: study
Categories: Music


text:
The Powell & Pressburger Pages
Dedicated to the work of Michael Powell and Emeric Pressburger and all the other people, both actors and technicians who helped them make those wonderful films.
A lot of the documents have been sent to me or have come from other web sites. The name of the web site is given where known. If I have unintentionally included an image or document that is copyrighted or that I shouldn't have done then please email me and I'll remove it.
I make no money from this site, it's purely for the love of the films.
[Any comments are by me (Steve Crook) and other members of the email list]
John Sweet (8 February 1916 - 5 July 2011)
Len Smith & John Sweet in Fordwich Town Hall
Sheila Sim & John Sweet at the Marlowe Theatre
Barbara Sweet emailed me to say that John had died
I know that we have been out of touch for quite a while and I'm
sorry. I changed e-mail addresses and things got lost. I'm writing
now to tell you that John died on Tuesday July 5. He hasn't been very
well for the last several months and his body just gave out. He died
peacefully home here with me.
I hope things are going well for you.
My best regards to all.
Barbara Sweet
Steve Crook writes:
John was of course the G.I. in A Canterbury Tale (1944).
He was a real G.I., not a professional actor, working on Eisenhower's staff helping with the preparations for D-Day. He did a bit of amateur theatricals and it was in a Red Cross production for the troops that he was spotted by Michael Powell who realised that he would be perfect for the role of the American in their next film, A Canterbury Tale.
After the film was made, John went with the troops to Europe to do his bit for freedom & democracy. When he was able to be spared from his work for the Army he did a bit of promotional work for the film - there was even an article about him in Life magazine (June 26th, 1944).
He tried out for a few other films but nobody else could see his charm and he never got the jobs. After the war he tried out for a few theatre jobs, but they never quite panned out either. So he went back to his pre-war job of teaching and would have remained buried in obscurity if Paul Tritton hadn't tracked him down when he was researching his book A Canterbury Tale - Memories of a Classic Wartime Movie.
John & Barbara were eventually persuaded to come and visit England again and in October 2000 they did just that. John Sweet and Sheila Sim (Lady Attenborough) had their red carpet moment and were pleased to see that the cinema was full, even on a wet Monday in Canterbury. The next day we took John back to a lot of the locations where they had made that film all those years before.
Sweet by name, he was sweet by nature. A lovely man.
R.I.P. John
Eddie McMillan writes:
I was very saddened to hear that John Sweet had passed away. When Nick Burton and I interviewed John for our 'A Pilgrims Return' documentary in 2000, what struck us most about him was his humility, honesty and gentle nature.
We met John, back in 2000 when he came to Canterbury for a screening of A Canterbury Tale where he was reunited with Lady Attenborough for the first time in 56 years. As he was here and we had access to him, we realised very quickly that it would be a great idea to interview him. So we arranged the shoot and completed the whole thing in less than two hours! John proved to be a wonderful interviewee, lucid, candid and perceptive. He talked enthusiastically about Canterbury, the production of A Canterbury Tale, celebrity culture and his life after the film.
He will be remembered fondly for his wonderful portrayal of Sgt. Bob Johnson in A Canterbury Tale, the good-natured American soldier who touches all around him with his seemingly naive charm, empathetic nature and initial cultural differences which were not that different after all. As Thelma Schoonmaker communicated to me about our documentary "John Sweet was so interesting and also moving. His values perfectly echo what A Canterbury Tale is about".
John bequeathed his ACT archive to the department and this includes various press cuttings, photographs and his precious and insightful diary of the production.
He was a lovely man and he will be sadly missed.
Eddie McMillan
Powell Research Group
Department of Media
John in the news 23 February 1944 (The Southeast Missourian)
Link to -> Obituary in the Carrboro Citizen
Obituary in the Canterbury Times
What did they do in PnP films?
Other P&P obituaries


The idea of grounding is growing but if you are not yet a participant, the basics of grounding are that you walk barefoot on grass, sand, earth or in water or swim in a natural body of water such as a lake or the sea so that your bare skin has as much contact as possible with a natural element. Hugging a tree will work too or getting down and dirty in your garden with your bare hands! The more contact, the more advantages to your general health and well being.
A growing body of research is finding numerous health benefits as a result of the physical body being grounded or connecting electrically with the Earth. Unlike our ancient ancestors, with our modern lifestyle and concrete beneath us, we no longer have this grounding connection unless we walk barefoot.
1. The Earth is a massive reservoir of negatively charged free electrons but without a connection to this reservoir, the cells in our body are unable to balance the positive charge which results from things like electron-deficient free radicals.
2. Our modern environment is full of a wide spectrum of electromagnetic radiation which induces voltages in our bodies, disrupting the trillions of subtle electrical communications which are a vital part of the function of our body's systems. Grounding helps to reduce the levels of these induced voltages, as we are then effectively shielded by the Earth's large electrical mass.
When you walk barefoot or connect any part of your skin to the earth, your skin acts as a good conductor. Especially potent is the middle of the ball of your foot (a point known to acupuncturists as Kidney 1). This point acts as a conductor to all parts of the body.
High on the list is combating inflammation as simply connecting to the ground can restore circulation to fingers and toes in as little as 20 minutes. Grounding research has now discovered that if you place your feet on the ground after an injury, electrons will migrate into your body and spread through your tissues. Any free radicals that leak into the healthy tissue will immediately be electrically neutralized. This occurs because the electrons are negative, while the free radicals are positive, so they cancel each other out.
Another benefit is that grounding thins your blood, making it less viscous. This discovery could have a profound impact on cardiovascular disease as virtually every aspect of cardiovascular disease has been correlated with elevated blood viscosity.
Grounding can even be helpful to counteract jetlag. If you can have an hour of grounding after a long flight or car journey, it can take away all that jet lag and those other effects of long distance travel.
Very beneficial for problem varicose veins too.
Try it for yourself and even do your own research. Spending time walking barefoot on grass or the beach, or paddling in the sea or the lake (now that summer has arrived in the northern hemisphere) can only make you feel more alive.
I am proud of being the danish distributor of the Earthing products. We are seeing great results and personally I've never slept so well.
I can highly recommend the products. I do suggest, however, that you check the Q&A on http://www.earthinginstitute.net/index.php/faq prior to investing in any product.


text:
Home > Small Business News > Finance News
Small Business Finance News
Groupon Enters The Highly Competitive Mobile Payment Processing Market
The nation's largest daily deal provider rolls out a credit card reader designed to target small merchants.
Mobile payment processing is becoming a hotbed of competition with major players like Square and eBay vying to dominate the market for enhanced payment services. Similar to other mobile payment systems, Groupon's new product, Groupon Payments, features a proprietary credit card reader that can be attached to an iPhone or iPod Touch.
The primary differentiator between Groupon Payments and other mobile payment processing systems is price: Groupon is promoting its product as the lowest payment processing system on the market and is offering a lowest rate guarantee to merchants. Merchants that don't use Groupon's daily deal service can also use the company's mobile payment processing system, but will pay a higher rate.
Merchants who understand best practices for business coupons are very familiar with Groupon's business model. Many are now wondering how closely Groupon Payments will track with Groupon's daily deals and other small business products.
"Our goal is to provide merchants with the most affordable and powerful tools to run and grow their businesses," said Mihir Shah, VP Mobile and Merchant Products at Groupon. "With groundbreaking pricing and service, Groupon Payments does just that."
The launch of Groupon Payments comes on the heels of a successful pilot program in the San Francisco area. The Groupon Payments app can also be used to scan and redeem Groupons and to monitor additional spend above the value of the Groupon.
"While the cost savings are obvious, we were really impressed by the level of support provided by Groupon and the speed in which we received our payments," said Nadia McClinton, owner of Body By X and a pilot program participant. "From day one we discovered we could rely on Groupon Payments to effectively, quickly and easily process transactions and deliver a better customer and employee experience. It truly saves us time, money and effort that we can invest in other aspects of our operations."
Groupon is currently advertising swipe rates of 1.8% plus $0.15 per transaction for MasterCard, Visa and Discover; 3% plus $0.15 for American Express. The other attractive feature of Groupon Payments is that merchants will receive credit card deposits overnight rather than having to wait several days for payment.
On the surface, Groupon Payments appears to offer genuine value for business owners interested in adding mobile payments to their POS system. However, the question that many critics and merchants are asking is whether or not Groupon will continue to honor the lower rates after the merchant's Groupon promotion expires. If not, it may difficult for Groupon to convince small merchants that its payment service is substantially better than Square and other providers.
About Our Business News for Entrepreneurs
Our small business writers cover all aspects of entrepreneurship. Our perspective is all about giving you news you can use to be a successful entrepreneur.


Applicants must reside in Benton, Coos, Deschutes, Douglas, Lane, Lincoln or Linn County. Students must enroll at least half-time; have a grade point average of at least 2.5; and submit the names, email addresses, physical addresses and phone numbers of two references. Selection is based on the overall strength of the application.


text:
Vladilen Vladimirovich Volkov (Russian: Владилен Владимирович Волков; born 7 July 1939), is a Russian statesman and politician who had served as the 2nd Head of the Altai Republic from 30 January 1997 to 13 January 1998.

In 1957, he graduated from secondary school No. 6 in Gorno-Altaysk. In 1960, he graduated from the Barnaul Construction College with a degree in technician-technologist. From February 1960 to September 1961, he was a concrete worker, foreman of a reinforced concrete products plant in the city of Barnaul.

From 1961 to 1964, he served in the GSVG. From November 1965 to February 1966 he worked as a foreman, shop manager of a reinforced concrete products plant in Gorno-Altaysk. From February 1966 to June 1973, he worked as an instructor, deputy head of a department of the regional committee of the CPSU, and from June 1973 to September 1978, Volkov was the first secretary of the Gorno-Altai city committee of the CPSU.

From September 1978 to July 1981, he studied at the graduate school of the Academy of Social Sciences under the Central Committee of the CPSU, received the title of candidate of historical sciences. From July 1981 to August 1984, he was the chairman of the Gorno-Altai Regional Council of Trade Unions. From 1982 to 1986, he was a Member of the Revision Commission of the All-Union Central Council of Trade Unions. From 1984 to 1990 he was secretary, second secretary, and first secretary of the Gorno-Altai Regional Committee of the CPSU. From October 1986 to July 1988, he was the Chief Counselor, Chairman of the Defense Council of Five Provinces, centered in Herat (Democratic Republic of Afghanistan). From May 1991 to February 1994, he was the chairman of the Republican Union of Afghan Veterans.

In 1993, Volkov was elected a deputy of the State Assembly of the Altai Republic. From February 1994 to January 1997, he was First Deputy Chairman of the State Assembly of the Altai Republic. On 30 January 1997, he was elected Chairman of the State Assembly, and became the 2nd Head of the Altai Republic. Since February 1997, he was a member of the Federation Council, Chairman of the Subcommittee on Science, Culture, Education, Healthcare and Environment.

From 2006 to 2016, Volkov was the chief of staff of the Public Chamber of the Altai Krai.

References

1939 births
Living people
Politicians from Irkutsk
Heads of the Altai Republic
Recipients of the Order of the Red Banner of Labour
Members of the Federation Council of Russia (1996–2000)
People from Barnaul

redpajama_set_name: RedPajamaWikipedia


In all such cases, the votes of each House shall be determined by yeas or nays, and the names of the Members voting for or against shall be entered in its Journal. He cited the rise of Nazi leader Adolf Hitler as an example of how a despotic leader can gain power and hold on to it without public resistance. Duterte has been publicly very open about his infidelity and philandering while married to Zimmerman and cited it as the reason for his failed first marriage when asked in interviews. President-elect Donald Trump will implement in Poland and the Baltic states. Voting turn outs in the Philippines have been high over the past elections with around 80 to 85 percent registered voters participating in national elections. It says here that the citizenship can be loss, re-acquire, or naturalized depend on the decision of a citizen. It would be nice to live freely and practice sovereignty in your own country.
No person may be elected President unless he is a natural-born citizen of the Philippines, a registered voter, able to read and write, at least forty years of age on the day of the election, and a resident of the Philippines for at least ten years immediately preceding such election. Shooting of student at law school Duterte stated at a rally in April 2016 that he shot a fellow student who had bullied him about his Visayan origin as well as other students of the same ethnicity, while at San Beda law college. Boys and girls have almost equal opportunities to attend primary schools. Federalism advocacy Main article: In September 2014, Duterte and former mayors and governors, calling themselves the Mindanao Council of Leaders, advocated for a federalist government. The State shall afford full protection to labor, local and overseas, organized and unorganized, and promote full employment and equality of employment opportunities for all. A sub-province shall continue to exist and operate until it is converted into a regular province or until its component municipalities are reverted to the mother province. He specified that bilateral drills on , , , , and will remain, all of which have been approved by Duterte.
Borders of the United States, Human migration, Illegal immigration 1833 Words 5 Pages to two ideologies we study in this course. The salaries of the President and Vice-President shall be determined by law and shall not be decreased during their tenure. While adjusting to working and residing at the , Duterte divides his workweek between Manila and Davao City by spending three days in each city, utilizing the while in Davao. People everywhere look to the United States to use its remarkable power to help lift humanity up and to work for the common good. Agrarian rights were established during the American occupation, but only few initiatives were given and the rich families.
Duterte's policy as Mayor was not without criticism. Those who elect Philippine citizenship in accordance with paragraph 3 , Section 1 hereof shall be deemed natural-born citizens. At the earliest possible time, the Government shall expropriate idle or abandoned agricultural lands as may be defined by law, for distribution to the beneficiaries of the agrarian reform program. Under the Constitution, elections for the members of Congress and local positions except barangay officials occur every second Monday of May every third year after May 1992, and presidential and vice presidential elections occur every second Monday of May every sixth year after May 1992. Archived from on July 8, 2016. Ferdinand Marcos, Filipino people, Philippines 733 Words 3 Pages What started the martial law? The president of the Philippines operates as the head of the government, commander-in-chief and the head of the state.
Their descendants constitute the modern-day political family of the Duranos of. Scholarships, grants-in-aid, or other forms of incentives shall be provided to deserving science students, researchers, scientists, inventors, technologists, and specially gifted citizens. Finally, the last mean of altering the voting system is by adjusting the election mechanism. Those who are part of the main political parties campaign as one slate which is bound together by the same set of beliefs, interests, motivations and platforms. There are graphic depictions of violence and even torture. The allows the House of Representatives to have more than 250 members by statute without a need for a. The State shall pursue an independent foreign policy.
In its relations with other states the paramount consideration shall be national sovereignty, territorial integrity, national interest, and the right to self-determination. In 1988, he ran for mayor and won, serving until 1998. The Commission shall rule by a majority vote of all the Members. They are appointed by the president with the consent of the Commission on Appointments and serve a single seven-year term. The first regular elections for the President and Vice-President under this Constitution shall be held on the second Monday of May, 1992.
Full Remarks: Trump talks national security at the Polish National Alliance A spokesman for the Polish president says Poland cares a lot whether U. No law shall be passed exempting any entity of the Government or its subsidiary in any guise whatever, or any investment of public funds, from the jurisdiction of the Commission on Audit. Mayor Duterte said that and his don't see eye-to-eye with the which the administration of President had inked a peace deal with. The autocrat assured the country of the legality of Martial Law emphasizing the need for control over civil disobedience that displays lawlessness. The provisions of the existing Rules of Court, judiciary acts, and procedural laws not inconsistent with this Constitution shall remain operative unless amended or repealed by the Supreme Court or the Congress.
The last provincial-level plebiscite was on 2013 for the that was passed; the last national plebiscite was in 1987 for the endorsed by the 1986 Constitutional Commission. I was supposed to stop because Trump is there. The advent of cases involving gender harassment and other violations have been widespread throughout the country through media influences and other factors. . Need more Informative Essay Examples? Ramon del Rosario, head of the influential Makati Business Club, which counts leading businessmen among its members, raised alarm bells vis-à-vis the prospect of a Duterte presidency. Assumed office June 30, 2016 Vice President Preceded by In office June 30, 2013 — June 30, 2016 Vice Mayor Preceded by Succeeded by Sara Duterte In office June 30, 2001 — June 30, 2010 Vice Mayor Luis Bonguyan Sara Duterte Preceded by Benjamin de Guzman Succeeded by Sara Duterte In office February 2, 1988 — March 19, 1998 Vice Mayor Dominador Zuño Acting Luis Bonguyan Benjamin de Guzman Preceded by Jacinto Rubillar Succeeded by Benjamin de Guzman In office June 30, 2010 — June 30, 2013 Mayor Preceded by Succeeded by In office May 2, 1986 — November 27, 1987 Officer in Charge Mayor Zafiro Respicio Preceded by Cornelio Maskariño Succeeded by Gilbert Abellera Member of the from 's District In office June 30, 1998 — June 30, 2001 Preceded by Succeeded by Personal details Born m. She was subsequently removed from her position chairing a Senate committee investigating the killings, and was then forced to leave her home out of fear for her safety.
Campaign interference is also part of the propaganda used to change the results of elections. No loan, guaranty, or other form of financial accommodation for any business purpose may be granted, directly or indirectly, by any government-owned or controlled bank or financial institution to the President, the Vice-President, the Members of the Cabinet, the Congress, the Supreme Court, and the Constitutional Commissions, the Ombudsman, or to any firm or entity in which they have controlling interest, during their tenure. The armed forces shall be insulated from partisan politics. This provision also applies to career officers whose resignation, tendered in line with the existing policy, had been accepted. In case of serious illness of the President, the public shall be informed of the state of his health. The right of the people and their organizations to effective and reasonable participation at all levels of social, political, and economic decision-making shall not be abridged.
In December 2015, Duterte recounted shooting three gunmen dead only months into his first mayoral term in 1988 after they had kidnapped and raped a Chinese girl. Written questions shall be submitted to the President of the Senate or the Speaker of the House of Representatives at least three days before their scheduled appearance. Martial law has also been imposed during. I do not want to mention anything, but please do not force my hand into it. I don't know how many bullets from my gun went inside their bodies. The practice of all professions in the Philippines shall be limited to Filipino citizens, save in cases prescribed by law.


text:
Order of Jack Shepherd Books
Jack Shepherd is the protagonist in a series of crime fiction novels by American novelist Jake Needham. Jack Shepherd has left the life he had in Washington in order to move to Bangkok, Thailand. In Bangkok, he teaches at a business school.
Jake Needham began his Jack Shepherd series in 2002 with the novel Laundry Man. Below is a list of Jake Needham's Jack Shepherd books in order of when they were first released (which is the same as their chronological order):
Publication Order of Jack Shepherd Books
Laundry Man (2002)
Killing Plato (2011)
A World of Trouble (2012)
The King Macau (2014)
Don't Get Caught (2017)
If You Like Jack Shepherd Books, You'll Love…
Inspector Shan
Dr. Siri Paiboun
Sonchai Jitpleecheep
Jack Shepherd Synopsis: Laundry Man by Jake Needham is the first book in the Jack Shepherd series. Once a high-flying international lawyer, a member of the innermost circles of government power, Jack Shepherd has abandoned the savage politics of Washington for the lethargic backwater of Bangkok, where he is now just an unremarkable professor at an unimportant university in an insignificant city. A secretive Asian bank collapses under dubious circumstances. A former law partner Shepherd thought was dead admits he was behind the disgraced bank and coerces Shepherd into helping him track the hundreds of millions of dollars that disappeared in the collapse. A twisting trail of deceit leads Shepherd from Bangkok to Hong Kong and eventually to an isolated villa on the fabled island of Phuket where he confronts the evil at the heart of a monstrous game of international treachery. A lawyer among people who laugh at the law, a friend in a land where today's allies are tomorrow's fugitives, Jack Shepherd battles a global tide of corruption, extortion and murder that is fast engulfing the new life he has made for himself in Thailand.
Order of Books » Characters » Order of Jack Shepherd Books


text:
Six months after Hurricane Michael, those affected still waiting for disaster relief funding
Posted 5:58 pm, April 23, 2019, by Kelly Vaughen, Updated at 09:26PM, April 23, 2019
MEXICO BEACH, Fla. - Hurricane Michael was upgraded to a Category 5 hurricane, one of four in U.S. history. The storm was historic. But now, over six months later, the federal government still has not passed a disaster relief bill for areas affected by the storm.
Mexico Beach Mayor Al Cathey said he has the title of mayor, but he's no politician.
"In the private world, where I work and make a living, when the cart's in the ditch you get it out. You worry about all that other stuff later," Cathey said.
Mexico Beach and much of the Panhandle are still in the ditch.
NHC: Hurricane Michael was a Category 5 at landfall, the fourth to do so in U.S. history
"80 percent of our city was destroyed," he said. "We don't have time to deal with bureaucracy."
He said they feel forgotten, abandoned and buried.
"I mean we've got over $50 million in debris period. Debris, $50 million," he said. "Our budget is $3.5 million a year. Our whole city budget. How the hell can we -- how can we pay that?"
Congress still has not passed a comprehensive disaster aid package. The 35-day government shutdown delayed action at first, then there were clashes over funding hurricane recovery in Puerto Rico. Some Democrats blame Republicans, some Republicans blame Democrats, but Cathey says this cannot be about politics.
"The politics of the world, I can't solve all that. But I do know that in the process, that I feel like we're being held, hostage," he said. "Our money over things that we have no control over."
Restaurants and real estate still recovering six months after Hurricane Michael
FEMA said it has spent one-point-one billion dollars on Michael response efforts, but Mayor Cathey said that's not enough.
"Don't forget us. I told President Trump that, I told Governor DeSantis that, I told Brock Long that, the FEMA director," he said. "I told everyone that, thank you for coming, thank you for shaking my hand. Thank you for having our picture made, but don't forget us."
He said despite the lack of financial help, Mexico Beach is resilient. and it's worth every ounce of energy to protect it.
The scars from Hurricane Michael are still quite evident six months later. The Category 5 hurricane killed 49 people across 12 Florida panhandle counties and two states.
In Mexico Beach, pain of Hurricane Michael doesn't diminish spirits
The hurricane made landfall in Mexico Beach, Florida, ground zero for the storm. The city was nearly destroyed in the hurricane, now they are trying to move forward but they are forever changed.
Imagine walking into your home town and almost nothing is there. Where would you begin?
For Mexico Beach mayor, Al Cathey, that is the reality.
"We lost everything but city hall. our pier is gone, our civic center is gone, the water tank is gone, police station is gone, fire station is gone. We're just sort of a ragtag bunch right now.
When it comes to getting a city up and running from almost nothing, Mexico Beach city administrator, Tanya Castro, said step one is cleaning it up.
"We're hoping by June we will have all of the debris most of the demolition. you know folks are still waiting on insurance in many cases," Castro said.
She said they just got approval from FEMA to start demolishing structures.
The city wanted to make the clean up as environmentally friendly as possible. they used concrete to make roads, and downed trees to make mulch.
"All of the metal that we collect from the debris, that's scraped and the city gets that revenue back," Castro said.
A next big step is getting the marina and canal back in order.
"We're currently dredging our canal, a lot of buried debris. We got a slow start on that because of all the buried debris, we had a lot of large things buried," she said. "You know we need to be who we are. But once that wraps up, we're hoping within the next two to three weeks, we'll have the canal open from the boat ramp out to the second sandbar so people can get back on the water and start healing."
The mayor said getting utilities restored all over the city is a major priority so residents, like the city, can begin to rebuild.
"It's a matter of hey, you know you can stay depressed or roll up your sleeves and go to work," Mayor Cathey said.
Six months after hurricane Michael, debris still lines the streets, and blue tarps still cover the roofs, but he said, this is progress.
Before & After Hurricane Michael: Slide to see the damage
Residents feeling "abandoned" and "forgotten" after Hurricane Michael
Repairs at Tyndall Air Force Base will stop May 1 without disaster aid funds
President Trump promises more hurricane relief for Florida Panhandle
United Methodists hit by hurricane share $4.6 million grant
Valleywx Blog
Amusement park reminder of hurricane in New Orleans may soon come down
A Mexican city was covered in ice after a freakish summer hailstorm
It's time again for Hurricane Preparedness Week!
Tornadoes ripped through Ohio tearing apart homes and damaging schools. Thousands are still under threat
A trucker was on the side of the road when a tornado hit. It blew a house underneath his trailer
Northeast Alabama
President Trump declares major disaster for Alabama
Consul General of Mexico visits Huntsville, explains how immigration is changing


Scranton Public Schools announced today, January 17, 2019 they notified yesterday the state Department of Education placed the district into "financial recovery status" yesterday,. The district says it intends to cooperate fully.
The Department of Education has addressed this action.
Auditor General Eugene DePasquale said on Facebook, "This is what happens when school districts ignore our audit recommendations. I understand why the state's action was necessary." referring to this action involving Scranton Public Schools and Penn Hills School District in Allegheny County.
"I've also been warning the Scranton School District to get its act together or the state will have to do it for you. My 2017 audit found a complete failure of leadership in the Scranton School District and I am glad the state has taken steps to see that changes will occur.


text:
Events & Nightlife
DAVID GUETTA COMING TO MANILA FOR UNITY TOUR 2017
By WhenInManila
• October 18, 2016
Wilbros Live is thrilled to announce that the World's Biggest DJ – David Guetta is coming to Manila on January 5, 2017 at the Araneta Coliseum for his UNITY World Tour.
The French superstar DJ and producer has played a pivotal role in turning dance music into the chart-topping juggernaut it is today. David Guetta's impact has been impossible to ignore or underestimate. He can be considered among the elite group of super-producers whose sound is synonymous with an era.
With worldwide smash hits like 'Titanium' (feat. Sia), 'Hey Mama' (feat. Nicki Minaj, Bebe Rexha and Afrojack), 'Bang My Head' (feat. Sia and Fetty Wap), 'Bad' (feat. Vassy), 'Lovers On The Sun' (feat. Sam Martin), 'Dangerous' (feat. Sam Martin), 'Shot Me Down' (feat. Skylar Grey), 'Without You' (feat. Usher), 'I Can Only Imagine' (feat. Chris Brown), 'Sexy Bitch' (feat. Akon) and 'When Love Takes Over' (feat. Kelly Rowland), Guetta is a modern-day giant and force to reckoned with. The first DJ in history to reach a staggering two billion streams on Spotify, he has sold more than 44 million singles and eight million albums. He has more than 55 million followers on Facebook, 19.5 million+ on Twitter, and is one of the most-followed artists on Spotify with 17.5 million+ monthly listeners. His latest hit single, 'This One's For You' (feat. Zara Larsson) is the official song for the EUFA Euro 2016.
Guetta's list of collaborators and remixes is a roll call of music's biggest names, including Rihanna, Sia, Nicki Minaj, Avicii, Lady Gaga, Madonna, Britney Spears, Snoop Dogg, The Black Eyed Peas, Chris Brown, Usher and many more.
Last 2015 alone, David Guetta has performed in more than 100 shows around the world to over a million fans, including festival headline sets at the Coachella, Ultra Music Festival, Tomorrow Land, Electric Zoo and the Wireless.
David Guetta's UNITY World Tour will thrill Manila with huge LED screens, massive projections, countless pyro hits on and off stage, lasers, strobes and so much more. Don't miss the biggest and hottest dance event to welcome 2017!
Follow @WilbrosLive on Facebook, Twitter and IG
#DavidGuettaMNL #WilbrosLive
Early Bird with 20% Discount
October 22 Saturday 10AM to October 23 Sunday 10PM
or while tickets allocated for the Early Bird promo are available, whichever is earlier
TicketNet.com.ph or Call 911-5555
General Public On-Sale
Beginning October 24 Monday 10AM
For Table Reservations
Call Wilbros Live at 374-9999
Early Bird Ticket Prices
VIP Standing – P4,620
Patron Box – P2,940
Box – P2,100
Regular Ticket Prices
Age Limit: 18 Years Old and Above
WhenInManila
For media partnerships, possible features or other inquiries, you can find answers on our "Frequently Asked Questions" (FAQ) page here - WhenInManila.com/faq
David GuettaDavid Guetta ManilaDavid Guetta Manila 2016 2017Wilbros Live
Adobomall, the Philippine's First Online...
Mountaineers and Travelers, This is the...
2009 Philippine Blog Awards – One Blogging Nation
Luna Resto Bar – Spanish Filipino Fusion
WTF is in the Philippines? Let WhenInManila.com show you!
MORE IN Events & Nightlife


text:
Q: How can we execute sequential browser test ? resources : VS 2017, Selenium webdriver 3.8 , Nunit 3.9 , FF 56
With this approach how come we can run multiple browser sequentially ? I know we can go to parallel execution in Nunit but I would like to to do sequential execution. I am stuck conceptually as well as pragmatically here. any comment would be appreciated.
this a GlobalConfig.xml  - giving key-value pair here
<?xml version="1.0" encoding="utf-8" ?>
<Automation>
  <RunSettings>
    <AppURL>https:/abcd.com/Login/Login.aspx</AppURL>
    <BrowserType>Firefox</BrowserType>
    <Username>user123</Username>
    <Password>pass123</Password>
  </RunSettings>
  </Automation>

this is setting.cs - defining properties here
  namespace Automation.Config
{
    public class Settings
    {
        public static string AppURL { get; set; }
        public static string Username { get; set; }
        public static string Password { get; set; }
       public static string BrowserType { get; set; }
    }
}

this is configReader.cs - used XPathItem class to present items
namespace Automation.Config
{
    public class ConfigReader
    {
        public static void FrameworkConfigSettings()
        {
            XPathItem appUrl;
            XPathItem username;
            XPathItem password;
            XPathItem browserType;

            string strFilename = TestContext.CurrentContext.TestDirectory.ToString() + "\\Config\\GlobalConfig.xml";
            FileStream stream = new FileStream(strFilename, FileMode.Open);
            XPathDocument document = new XPathDocument(stream);
            XPathNavigator navigator = document.CreateNavigator();

            //Get XML Details and pass it in XPathItem type variables
            // get node content by using simple xpath expression and C#
            appUrl = navigator.SelectSingleNode("Automation/RunSettings/AppURL");
            username = navigator.SelectSingleNode("Automation/RunSettings/Username");
            password = navigator.SelectSingleNode("Automation/RunSettings/Password");
            browserType = navigator.SelectSingleNode("Automation/RunSettings/BrowserType");

            //Set XML Details in the property to be used accross framework
            Settings.AppURL = appUrl.Value.ToString();
            Settings.Username = username.Value.ToString();
            Settings.Password = password.Value.ToString();
            Settings.BrowserType = browserType.Value.ToString();

        }
    }
}

driver.cs class - this is the driver class which is taking string name of browser.
 public static void Initialize(string browser)
        {

            if (browser.Equals(Constant.Chrome))
            {
                ChromeOptions options = new ChromeOptions();
                Instance = new ChromeDriver(DrivePath, options, TimeSpan.FromSeconds(100));
                Instance.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);

            }
            else if(browser.Equals(Constant.Firefox))
            {

                FirefoxDriverService service = FirefoxDriverService.CreateDefaultService(DrivePath);
                service.FirefoxBinaryPath = DrivePath;
                var profile = new FirefoxProfile();
                profile.AcceptUntrustedCertificates = true;
                var options = new FirefoxOptions();
                options.AcceptInsecureCertificates = true;
                options.Profile = profile;
                Instance = new FirefoxDriver(service.FirefoxBinaryPath, options, TimeSpan.FromSeconds(100));
                Instance.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);

            }

        }