diff --git a/application/modules/default/controllers/UserController.php b/application/modules/default/controllers/UserController.php
index 742b6c9f1..ff1102893 100644
--- a/application/modules/default/controllers/UserController.php
+++ b/application/modules/default/controllers/UserController.php
@@ -1,822 +1,825 @@
.
**/
class UserController extends Local_Controller_Action_DomainSwitch
{
protected $_memberId;
protected $_userName;
/** @var Zend_Db_Table_Row */
protected $_memberSettings;
public function init()
{
parent::init();
if ($this->hasParam('user_name')) {
$this->_userName = $this->getParam('user_name');
$this->_userName = urldecode($this->_userName);
$modelMember = new Default_Model_Member();
$this->_memberId = $modelMember->fetchActiveUserByUsername($this->_userName);
} else {
$this->_memberId = (int)$this->getParam('member_id');
}
}
public function indexAction()
{
$this->_helper->viewRenderer('aboutme');
$this->aboutmeAction();
}
public function aboutmeAction()
{
$tableMember = new Default_Model_Member();
$tableProject = new Default_Model_Project();
$earnModel = new Default_Model_StatDownload();
$helperUserRole = new Backend_View_Helper_UserRole();
$pageLimit = 500;
$projectpage = (int)$this->getParam('projectpage', 1);
$this->view->authMember = $this->_authMember;
$this->view->member = $tableMember->fetchMemberData($this->_memberId);
$this->view->headTitle($this->view->member->username . ' - ' . $this->getHeadTitle(), 'SET');
if (null == $this->view->member) {
$this->redirect("/");
}
if ($this->view->member->is_deleted == 1 or $this->view->member->is_active == 0) {
$this->redirect("/");
}
$this->view->mainProject = $this->view->member->findDependentRowset($tableProject, 'MainProject')->current();
$this->view->userProjectCategories = $tableProject->getUserCreatingCategorys($this->_memberId);
$this->view->aboutmeUserInfo = $this->getAboutmeUserInfo($this->_memberId,$this->view->member->username);
$userRoleName = $helperUserRole->userRole();
if (Default_Model_DbTable_MemberRole::ROLE_NAME_ADMIN == $userRoleName) {
$datetime = new DateTime();
$datetime->sub(new DateInterval('P1M'));
$month = $datetime->format('Ym');
$amount = $earnModel->getMonthEarn($this->_memberId,$month);
if($amount && $amount['amount'])
{
$this->view->earnInfo = ' Last month I earned $'.number_format($amount['amount'], 2, '.', '').'.';
}else
{
$this->view->earnInfo=' Last month I earned 0.';
}
}else{
$this->view->earnInfo='';
}
// ajax load more products
if ($this->getParam('projectpage', null)) {
$total_records = $tableProject->countAllProjectsForMemberCatFilter($this->_memberId, true, null);
$this->view->pageLimit = $pageLimit;
$this->view->projectpage = $projectpage;
$this->view->total_records = $total_records;
// get last project category id
$lastproject = $tableProject->getUserActiveProjects($this->_memberId, 1, (($projectpage - 1) * $pageLimit-1));
foreach ($lastproject as $value) {
$this->view->lastcatid = $value['project_category_id'];
}
$this->view->userProducts =
$tableProject->getUserActiveProjects($this->_memberId, $pageLimit, ($projectpage - 1) * $pageLimit);
$this->_helper->layout->disableLayout();
$this->_helper->viewRenderer('partials/aboutmeProducts');
//$this->forward('showmoreproductsajax', 'user', null, $this->getAllParams());
return;
} else {
$total_records = $tableProject->countAllProjectsForMemberCatFilter($this->_memberId, true, null);
$this->view->pageLimit = $pageLimit;
$this->view->projectpage = $projectpage;
$this->view->total_records = $total_records;
//$this->view->userProducts = $tableProject->fetchAllProjectsForMember($this->_memberId, $pageLimit, ($projectpage - 1) * $pageLimit,true);
$this->view->userProducts =
$tableProject->getUserActiveProjects($this->_memberId, $pageLimit, ($projectpage - 1) * $pageLimit);
$this->view->userFeaturedProducts = $tableProject->fetchAllFeaturedProjectsForMember($this->_memberId);
$paginationComments = $tableMember->fetchComments($this->_memberId);
if ($paginationComments) {
$offset = (int)$this->getParam('page');
$paginationComments->setItemCountPerPage(50);
$paginationComments->setCurrentPageNumber($offset);
$this->view->comments = $paginationComments;
}
// favs Currently no paging...
$this->view->paramLikePageId = (int)$this->getParam('likepage');
$model = new Default_Model_DbTable_ProjectFollower();
$offset = $this->view->paramLikePageId;
$list = $model->fetchLikesForMember($this->_memberId);
$list->setItemCountPerPage(1000);
$list->setCurrentPageNumber($offset);
$this->view->likes = $list;
// plings Currently no paging...
$plingmodel = new Default_Model_ProjectPlings();
$offset = null;
$plist = $plingmodel->fetchPlingsForMember($this->_memberId);
$plist->setItemCountPerPage(1000);
$plist->setCurrentPageNumber($offset);
$this->view->plings = $plist;
// plings Currently no paging...
$plingmodel = new Default_Model_ProjectPlings();
$offset = null;
$pslist = $plingmodel->fetchPlingsForSupporter($this->_memberId);
$pslist->setItemCountPerPage(1000);
$pslist->setCurrentPageNumber($offset);
$this->view->supportersplings = $pslist;
// rated
$ratemodel = new Default_Model_DbTable_ProjectRating();
$this->view->rated = $ratemodel->getRatedForMember($this->_memberId);
$stat = array();
$stat['cntProducts'] = $total_records;
if ($this->view->userFeaturedProducts) {
$cnt = 0;
foreach ($this->view->userFeaturedProducts as $tmp) {
$cnt++;
}
$stat['cntFProducts'] = $cnt;
} else {
$stat['cntFProducts'] = 0;
}
$stat['cntComments'] = $paginationComments->getTotalItemCount();
$tblFollower = new Default_Model_DbTable_ProjectFollower();
$stat['cntLikesHeGave'] = $tblFollower->countLikesHeGave($this->_memberId);
$stat['cntLikesHeGot'] = $tblFollower->countLikesHeGot($this->_memberId);
$tblPling = new Default_Model_DbTable_ProjectPlings();
$stat['cntPlingsHeGave'] = $tblPling->countPlingsHeGave($this->_memberId);
$stat['cntPlingsHeGot'] = $tblPling->countPlingsHeGot($this->_memberId);
$donationinfo = $tableMember->fetchSupporterDonationInfo($this->_memberId);
if ($donationinfo) {
$stat['donationIssupporter'] = $donationinfo['issupporter'];
$stat['donationMax'] = $donationinfo['active_time_max'];
$stat['donationMin'] = $donationinfo['active_time_min'];
$stat['donationCnt'] = $donationinfo['cnt'];
}
// $cntmb = $tableMember->fetchCntSupporters($this->_memberId);
// $stat['cntSupporters'] = $cntmb;
$stat['userLastActiveTime'] = $tableMember->fetchLastActiveTime($this->_memberId);
$userRoleName = $helperUserRole->userRole();
if (Default_Model_DbTable_MemberRole::ROLE_NAME_ADMIN == $userRoleName) {
$stat['cntDuplicateSourceurl'] = $tableProject->getCountProjectsDuplicateSourceurl($this->_memberId);
}
$this->view->stat = $stat;
}
}
public function getAboutmeUserInfo($member_id,$username)
{
$tableProject = new Default_Model_Project();
$userProjectCategories = $tableProject->getUserCreatingCategorys($member_id);
$cnt = sizeof($userProjectCategories );
$userinfo='';
$isAdmin = false;
$helperUserRole = new Backend_View_Helper_UserRole();
$userRoleName = $helperUserRole->userRole();
if (Default_Model_DbTable_MemberRole::ROLE_NAME_ADMIN == $userRoleName){
$isAdmin= true;
}
if($cnt>0)
{
$userinfo = "Hi, I am ".$username." and I create ";
if($cnt==1)
{
$userinfo = $userinfo.' '.$userProjectCategories[0]['category1'].'';
- if($isAdmin)
+ $userinfo = $userinfo.'.';
+ /* if($isAdmin)
{
$userinfo = $userinfo.' ('.$userProjectCategories[0]['cnt'].').';
}else{
$userinfo = $userinfo.'.';
- }
+ }*/
}else if($cnt==2)
{
$userinfo = $userinfo.' '.$userProjectCategories[0]['category1'].'';
- if($isAdmin)
+ /*if($isAdmin)
{
$userinfo = $userinfo.' ('.$userProjectCategories[0]['cnt'].')';
- }
+ }*/
$userinfo = $userinfo.' and '.$userProjectCategories[1]['category1'].'';
- if($isAdmin)
+ /*if($isAdmin)
{
$userinfo = $userinfo.'('.$userProjectCategories[1]['cnt'].').';
}else{
$userinfo = $userinfo.'.';
- }
+ }*/
+ $userinfo = $userinfo.'.';
}else if($cnt==3)
{
$userinfo = $userinfo.' '.$userProjectCategories[0]['category1'].'';
- if($isAdmin)
+ /*if($isAdmin)
{
$userinfo = $userinfo.' ('.$userProjectCategories[0]['cnt'].')';
- }
+ }*/
$userinfo = $userinfo.', '.$userProjectCategories[1]['category1'].'';
- if($isAdmin)
+ /* if($isAdmin)
{
$userinfo = $userinfo.' ('.$userProjectCategories[1]['cnt'].')';
- }
+ }*/
$userinfo = $userinfo.' and '.$userProjectCategories[2]['category1'].'';
- if($isAdmin)
+ /*if($isAdmin)
{
$userinfo = $userinfo.' ('.$userProjectCategories[2]['cnt'].').';
- }
- else{
+ }*/
+ /*else{
$userinfo = $userinfo.'.';
- }
+ }*/
+ $userinfo = $userinfo.'.';
}else if($cnt>3)
{
$userinfo = $userinfo.' '.$userProjectCategories[0]['category1'].'';
- if($isAdmin)
+ /*if($isAdmin)
{
$userinfo = $userinfo.' ('.$userProjectCategories[0]['cnt'].')';
- }
+ }*/
$userinfo = $userinfo.', '.$userProjectCategories[1]['category1'].'';
- if($isAdmin)
+ /*if($isAdmin)
{
$userinfo = $userinfo.' ('.$userProjectCategories[1]['cnt'].')';
- }
+ }*/
$userinfo = $userinfo.', '.$userProjectCategories[2]['category1'].'';
- if($isAdmin)
+ /*if($isAdmin)
{
$userinfo = $userinfo.' ('.$userProjectCategories[2]['cnt'].')';
- }
+ }*/
$userinfo = $userinfo.' and more.';
}
}
return $userinfo;
}
public function avatarAction()
{
$this->_helper->layout->disableLayout();
$size = (int)$this->getParam("size", 200);
$width = (int)$this->getParam("width", ($size / 2));
$this->view->size = (int)$size / 2;
$emailHash = $this->getParam("emailhash", null);
if ($emailHash) {
$memberTable = new Default_Model_Member();
$member = $memberTable->findMemberForMailHash($emailHash);
if ($member) {
$helperImage = new Default_View_Helper_Image();
$imgUrl = $helperImage->Image($member['profile_image_url'], array('width' => $width, 'height' => $width));
$this->view->avatar = $imgUrl;
$this->redirect($imgUrl);
return;
}
}
$this->view->avatar = "";
$helperImage = new Default_View_Helper_Image();
$imgUrl = $helperImage->Image("default-profile.png", array('width' => $width, 'height' => $width));
$this->redirect($imgUrl);
}
public function aboutAction()
{
$modelMember = new Default_Model_Member();
$this->view->member = $modelMember->fetchMember($this->_memberId)->toArray();
$this->view->currentPageOffset = (int)$this->getParam('page');
}
public function showmoreproductsajaxAction()
{
$this->_helper->layout->disableLayout();
$tableProject = new Default_Model_Project();
$pageLimit = 21;
$page = (int)$this->getParam('page', 1);
$total_records = $tableProject->countAllProjectsForMemberCatFilter($this->_memberId, true, null);
$this->view->pageLimit = $pageLimit;
$this->view->page = $page;
$this->view->total_records = $total_records;
$this->view->userProducts =
$tableProject->fetchAllProjectsForMember($this->_memberId, $pageLimit, ($page - 1) * $pageLimit, true);
$this->_helper->viewRenderer('/partials/aboutmeProducts');
}
public function userdataajaxAction()
{
$this->_helper->layout()->disableLayout();
$this->_helper->viewRenderer->setNoRender(true);
$resultArray = array();
header('Access-Control-Allow-Origin: *');
$this->getResponse()->setHeader('Access-Control-Allow-Origin', '*')->setHeader('Access-Control-Allow-Credentials', 'true')
->setHeader('Access-Control-Allow-Methods', 'POST, GET, OPTIONS')
->setHeader('Access-Control-Allow-Headers', 'origin, content-type, accept')
;
$userid = $this->getParam('id');
$modelMember = new Default_Model_Member();
$user = $modelMember->find($userid)->current();
if (Zend_Auth::getInstance()->hasIdentity()) {
$auth = Zend_Auth::getInstance();
$user = $auth->getStorage()->read();
$resultArray['member_id'] = $user->member_id;
$resultArray['username'] = $user->username;
$resultArray['mail'] = $user->mail;
$resultArray['avatar'] = $user->profile_image_url;
} else if (null != $userid && null != $user) {
$resultArray['member_id'] = $user['member_id'];
$resultArray['username'] = $user['username'];
$resultArray['mail'] = $user['mail'];
$resultArray['avatar'] = $user['profile_image_url'];
} else {
$resultArray['member_id'] = null;
$resultArray['username'] = null;
$resultArray['mail'] = null;
$resultArray['avatar'] = null;
}
$resultAll = array();
$resultAll['status'] = "success";
$resultAll['data'] = $resultArray;
$this->_helper->json($resultAll);
}
public function followsAction()
{
$this->redirect($this->_helper->url('follows', 'member', null, $this->getAllParams()));
}
public function followAction()
{
$this->_helper->layout->disableLayout();
$this->view->authMember = $this->_authMember;
$this->view->member_id = $this->_memberId;
if ($this->_memberId == $this->_authMember->member_id) {
return;
}
$memberFollowTable = new Default_Model_DbTable_MemberFollower();
$newVals = array('member_id' => $this->_memberId, 'follower_id' => (int)$this->_authMember->member_id);
$where = $memberFollowTable->select()->where('member_id = ?', $this->_memberId)
->where('follower_id = ?', $this->_authMember->member_id, 'INTEGER')
;
$result = $memberFollowTable->fetchRow($where);
if (null === $result) {
$memberFollowTable->createRow($newVals)->save();
}
}
public function unfollowAction()
{
$this->_helper->layout->disableLayout();
$this->_helper->viewRenderer('follow');
$memberFollowTable = new Default_Model_DbTable_MemberFollower();
$memberFollowTable->delete('member_id=' . $this->_memberId . ' AND follower_id=' . $this->_authMember->member_id);
$this->view->authMember = $this->_authMember;
$this->view->member_id = $this->_memberId;
}
public function newsAction()
{
$this->productsAction();
$this->render('products');
}
public function productsAction()
{
$pageLimit = 25;
$page = (int)$this->getParam('page', 1);
//create ppload download hash: secret + collection_id + expire-timestamp
$salt = PPLOAD_DOWNLOAD_SECRET;
$timestamp = time() + 3600; // one hour valid
$hash = md5($salt . $timestamp); // order isn't important at all... just do the same when verifying
$this->view->download_hash = $hash;
$this->view->download_timestamp = $timestamp;
$this->view->member_id = null;
if (null != $this->_authMember && null != $this->_authMember->member_id) {
$this->view->member_id = $this->_authMember->member_id;
}
$modelProject = new Default_Model_Project();
$userProjects = $modelProject->fetchAllProjectsForMember($this->_authMember->member_id, $pageLimit, ($page - 1) * $pageLimit);
$paginator = Local_Paginator::factory($userProjects);
$paginator->setItemCountPerPage($pageLimit);
$paginator->setCurrentPageNumber($page);
$paginator->setTotalItemCount($modelProject->countAllProjectsForMember($this->_authMember->member_id));
$this->view->products = $paginator;
$modelMember = new Default_Model_Member();
$this->view->member = $modelMember->fetchMemberData($this->_authMember->member_id);
}
public function activitiesAction()
{
$modelInfo = new Default_Model_Info();
$this->view->member = $this->_authMember;
$this->view->comments = $modelInfo->getLastCommentsForUsersProjects($this->_authMember->member_id);
$this->view->votes = $modelInfo->getLastVotesForUsersProjects($this->_authMember->member_id);
$this->view->donations = $modelInfo->getLastDonationsForUsersProjects($this->_authMember->member_id);
}
public function settingsAction()
{
$this->_helper->layout()->setLayout('settings');
}
public function reportAction()
{
$this->_helper->layout->disableLayout();
$this->_helper->viewRenderer('product/add');
$this->forward('report', 'product', null, $this->getAllParams());
}
public function paymentsAction()
{
$this->view->headScript()->setFile('');
$this->view->headLink()->setStylesheet('');
$member_id = $this->_authMember->member_id;
$this->view->member = $this->_authMember;
$tableMember = new Default_Model_Member();
$this->view->hits = $tableMember->fetchPlingedProjects($member_id);
}
public function incomeAction()
{
$this->view->member = $this->_authMember;
$tableMember = new Default_Model_Member();
$modelPlings = new Default_Model_Pling();
$this->view->donations = $modelPlings->fetchRecentDonationsForUser($this->_authMember->member_id);
}
public function tooltipAction()
{
$this->_helper->layout->disableLayout();
$info = new Default_Model_Info();
$data = $info->getTooptipForMember($this->_memberId);
$this->_helper->json(array('status' => 'ok', 'data' => $data));
}
public function shareAction()
{
$this->_helper->layout->disableLayout();
$modelProduct = new Default_Model_Member();
$memberInfo = $modelProduct->fetchMemberData($this->_memberId);
$form = new Default_Form_ProjectShare();
$form->setAction('/member/' . $this->_memberId . '/share/');
// $helperBaseUrl = new Default_View_Helper_BaseUrl();
// $helperServerUrl = new Zend_View_Helper_ServerUrl();
$helpMemberUrl = new Default_View_Helper_BuildMemberUrl();
$this->view->permaLink = $helpMemberUrl->buildMemberUrl($memberInfo->username);
// $this->view->permaLink = $helperServerUrl->serverUrl() . $helperBaseUrl->baseUrl() . '/member/' . $this->_memberId . '/';
if ($this->_request->isGet()) {
$this->view->form = $form;
$this->renderScript('product/share.phtml');
return;
}
if (false === $form->isValid($_POST)) { // form not valid
$this->view->form = $form;
$dummy = $this->view->render('product/share.phtml');
$this->_helper->json(array('status' => 'ok', 'message' => $dummy));
return;
}
$values = $form->getValues();
if (empty($memberInfo->firstname) and empty($memberInfo->lastname)) {
$username = $memberInfo->username;
} else {
$username = $memberInfo->firstname . ' ' . $memberInfo->lastname;
}
$shareMail = new Default_Plugin_SendMail('tpl_social_mail_user');
$shareMail->setTemplateVar('sender', $values['sender_mail']);
$shareMail->setTemplateVar('username', $username);
$shareMail->setTemplateVar('permalink', $this->view->permaLink);
$shareMail->setTemplateVar('permalinktext', 'View user\'s page');
$shareMail->setReceiverMail($values['mail']);
$shareMail->send();
$this->_helper->json(array('status' => 'ok', 'redirect' => $this->view->permaLink));
}
public function plingsAction()
{
$tableMember = new Default_Model_Member();
$this->view->view_member = $tableMember->fetchMemberData($this->_memberId);
$paypalValidStatusTable = new Default_Model_DbTable_PaypalValidStatus();
$paypalValidStatus = $paypalValidStatusTable->find($this->view->view_member->paypal_valid_status)->current();
$this->view->paypal_valid_status = $paypalValidStatus;
//backdoor for admins
$helperUserRole = new Backend_View_Helper_UserRole();
$userRoleName = $helperUserRole->userRole();
if (Default_Model_DbTable_MemberRole::ROLE_NAME_ADMIN == $userRoleName) {
$this->view->member = $this->view->view_member;
} else {
$this->view->member = $this->_authMember;
}
}
public function plingsoldAction()
{
$tableMember = new Default_Model_Member();
$this->view->view_member = $tableMember->fetchMemberData($this->_memberId);
$paypalValidStatusTable = new Default_Model_DbTable_PaypalValidStatus();
$paypalValidStatus = $paypalValidStatusTable->find($this->view->view_member->paypal_valid_status)->current();
$this->view->paypal_valid_status = $paypalValidStatus;
//backdoor for admins
$helperUserRole = new Backend_View_Helper_UserRole();
$userRoleName = $helperUserRole->userRole();
if (Default_Model_DbTable_MemberRole::ROLE_NAME_ADMIN == $userRoleName) {
$this->view->member = $this->view->view_member;
} else {
$this->view->member = $this->_authMember;
}
}
public function plingsajaxAction()
{
$this->_helper->layout->disableLayout();
$tableMember = new Default_Model_Member();
$this->view->view_member = $tableMember->fetchMemberData($this->_memberId);
$paypalValidStatusTable = new Default_Model_DbTable_PaypalValidStatus();
$paypalValidStatus = $paypalValidStatusTable->find($this->view->view_member->paypal_valid_status)->current();
$this->view->paypal_valid_status = $paypalValidStatus;
//backdoor for admins
$helperUserRole = new Backend_View_Helper_UserRole();
$userRoleName = $helperUserRole->userRole();
if (Default_Model_DbTable_MemberRole::ROLE_NAME_ADMIN == $userRoleName) {
$this->view->member = $this->view->view_member;
} else {
$this->view->member = $this->_authMember;
}
$year = null;
if($this->hasParam('year')) {
$year = $this->getParam('year');
}
$this->view->year = $year;
$this->_helper->viewRenderer('/plingsajax');
}
public function plingsmonthajaxAction()
{
$this->_helper->layout->disableLayout();
$tableMember = new Default_Model_Member();
$this->view->view_member = $tableMember->fetchMemberData($this->_memberId);
$paypalValidStatusTable = new Default_Model_DbTable_PaypalValidStatus();
$paypalValidStatus = $paypalValidStatusTable->find($this->view->view_member->paypal_valid_status)->current();
$this->view->paypal_valid_status = $paypalValidStatus;
//backdoor for admins
$helperUserRole = new Backend_View_Helper_UserRole();
$userRoleName = $helperUserRole->userRole();
if (Default_Model_DbTable_MemberRole::ROLE_NAME_ADMIN == $userRoleName) {
$this->view->member = $this->view->view_member;
} else {
$this->view->member = $this->_authMember;
}
$yearmonth = null;
if($this->hasParam('yearmonth')) {
$yearmonth = $this->getParam('yearmonth');
}
$this->view->yearmonth = $yearmonth;
$this->_helper->viewRenderer('/plingsmonthajax');
}
public function downloadhistoryAction()
{
$tableMember = new Default_Model_Member();
$this->view->view_member = $tableMember->fetchMemberData($this->_memberId);
//backdore for admins
$helperUserRole = new Backend_View_Helper_UserRole();
$userRoleName = $helperUserRole->userRole();
if (Default_Model_DbTable_MemberRole::ROLE_NAME_ADMIN == $userRoleName) {
$this->view->member = $this->view->view_member;
} else {
$this->view->member = $this->_authMember;
}
if ($this->view->member) {
$this->view->paramPageId = (int)$this->getParam('page');
//TODO do really sql paging instead of Zend_Paginator
$dhistory = new Default_Model_DbTable_MemberDownloadHistory();
$offset = $this->view->paramPageId;
$list = $dhistory->getDownloadhistory($this->view->member->member_id);
$list->setItemCountPerPage(250);
$list->setCurrentPageNumber($offset);
$this->view->downloadhistory = $list;
} else {
$this->view->downloadhistory = array();
}
}
public function likesAction()
{
$tableMember = new Default_Model_Member();
$this->view->view_member = $tableMember->fetchMemberData($this->_memberId);
//backdore for admins
$helperUserRole = new Backend_View_Helper_UserRole();
$userRoleName = $helperUserRole->userRole();
if (Default_Model_DbTable_MemberRole::ROLE_NAME_ADMIN == $userRoleName) {
$this->view->member = $this->view->view_member;
} else {
$this->view->member = $this->_authMember;
}
if ($this->view->member) {
$this->view->paramPageId = (int)$this->getParam('page');
$model = new Default_Model_DbTable_ProjectFollower();
$offset = $this->view->paramPageId;
$list = $model->fetchLikesForMember($this->view->member->member_id);
$list->setItemCountPerPage(250);
$list->setCurrentPageNumber($offset);
$this->view->likes = $list;
} else {
$this->view->likes = array();
}
}
public function payoutAction()
{
$tableMember = new Default_Model_Member();
$this->view->view_member = $tableMember->fetchMemberData($this->_memberId);
//backdore for admins
$helperUserRole = new Backend_View_Helper_UserRole();
$userRoleName = $helperUserRole->userRole();
if (Default_Model_DbTable_MemberRole::ROLE_NAME_ADMIN == $userRoleName) {
$this->view->member = $this->view->view_member;
} else {
$this->view->member = $this->_authMember;
}
}
/**
* @return Default_Form_Settings
* @throws Zend_Form_Exception
*/
private function formPassword()
{
$form = new Default_Form_Settings();
$form->setMethod("POST")->setAttrib("id", "settingsPasswordForm")->setAction('/member/' . $this->_memberId . '/changepass');
$passOld = $form->createElement('password', 'passwordOld')->setLabel('Enter old Password:')->setRequired(true)
->removeDecorator('HtmlTag')->addValidator(new Local_Validate_OldPasswordConfirm())->setDecorators(array(
'ViewHelper',
'Label',
'Errors',
array(
'ViewScript',
array(
'viewScript' => 'settings/viewscripts/flatui_input.phtml',
'placement' => false
)
)
))
;
$pass1 = $form->createElement('password', 'password1')->setLabel('Enter new Password:')->setRequired(true)
->addValidator(new Zend_Validate_NotEmpty(Zend_Validate_NotEmpty::STRING))->removeDecorator('HtmlTag')
->setDecorators(array(
'ViewHelper',
'Label',
'Errors',
array(
'ViewScript',
array(
'viewScript' => 'settings/viewscripts/flatui_input.phtml',
'placement' => false
)
)
))
;
$pass2 = $form->createElement('password', 'password2')->setLabel('Re-enter new Password:')->setRequired(true)
->addValidator(new Zend_Validate_NotEmpty(Zend_Validate_NotEmpty::STRING))->removeDecorator('HtmlTag')
->setDecorators(array(
'ViewHelper',
'Label',
'Errors',
array(
'ViewScript',
array(
'viewScript' => 'settings/viewscripts/flatui_input.phtml',
'placement' => false
)
)
))
;
$passValid = new Local_Validate_PasswordConfirm($pass2->getValue());
$pass1->addValidator($passValid);
$form->addElement($passOld)->addElement($pass1)->addElement($pass2);
return $form;
}
private function fetchMemberId()
{
if (false === Zend_Auth::getInstance()->hasIdentity()) {
return null;
}
$auth = Zend_Auth::getInstance()->getIdentity();
if ($this->_userName == $auth->username) {
return $auth->member_id;
}
if (Default_Model_DbTable_Member::ROLE_ID_ADMIN == $auth->roleId) {
return $this->_memberId;
}
}
}
\ No newline at end of file
diff --git a/application/modules/default/views/scripts/home/index-opendesktop-test4.phtml b/application/modules/default/views/scripts/home/index-opendesktop-test4.phtml
index 36c7ff590..2d9be6456 100755
--- a/application/modules/default/views/scripts/home/index-opendesktop-test4.phtml
+++ b/application/modules/default/views/scripts/home/index-opendesktop-test4.phtml
@@ -1,59 +1,68 @@
.
**/
$this->headTitle($_SERVER['HTTP_HOST'], 'SET');
$this->doctype(Zend_View_Helper_Doctype::XHTML1_RDFA);
$this->headMeta()->appendProperty('og:url', 'www.opendesktop.org');
$this->headMeta()->appendProperty('og:type', 'website');
$this->headMeta()->appendProperty('og:title', 'opendesktop.org');
$this->headMeta()->appendProperty('og:site_name','www.opendesktop.org');
$this->headMeta()->appendProperty('og:description','A community where developers and artists share applications, themes and other content');
$this->headMeta()->appendProperty('og:image','https://www.opendesktop.org/images/system/opendesktop-logo.png');
$modelInfo = new Default_Model_Info();
-$productsThemesPlasma = $modelInfo->getLastProductsForHostStores(5,33);
-foreach ($productsThemesPlasma as &$p) {
+// $productsAppAddons = $modelInfo->getLastProductsForHostStores(5,'152,233');
+// $productsThemes = $modelInfo->getLastProductsForHostStores(5,'158,509,330,404,148,491,445,295');
+$productsAppAddons = $modelInfo->getLastProductsForHostStores(5,'33,233');
+$productsThemes = $modelInfo->getLastProductsForHostStores(5,'33,295');
+foreach ($productsAppAddons as &$p) {
+ $p['image_small'] = $this->Image($p['image_small'], array('width' => 200, 'height' => 200));
+}
+foreach ($productsThemes as &$p) {
$p['image_small'] = $this->Image($p['image_small'], array('width' => 200, 'height' => 200));
}
/*'products' => array('title' =>'KDE Plasma','catIds' =>'365','products' => $productsThemesPlasma),*/
$response = array(
'comments' => $modelInfo->getLatestComments(5),
- 'products' => $productsThemesPlasma
+ 'products' => $productsAppAddons,
+ 'productsThemes' => $productsThemes,
+
);
?>
+
-
+
diff --git a/httpdocs/theme/react/assets/css/home-main-container.css b/httpdocs/theme/react/assets/css/home-main-container.css
index f7fb3ea74..81b3999cd 100644
--- a/httpdocs/theme/react/assets/css/home-main-container.css
+++ b/httpdocs/theme/react/assets/css/home-main-container.css
@@ -1 +1 @@
-#home-main-container{width:100%;height:100%;display:flex;flex-wrap:wrap;display:-webkit-flex;-webkit-flex-wrap:wrap;list-style:none;margin:0;padding:0}#home-main-container .left{flex:0 0 16.66666667%;padding-right:15px;padding-left:15px;min-width:200px}#home-main-container .right{flex:0 0 16.66666667%;padding-right:15px;min-width:200px}#home-main-container .middle{flex:1;padding:15px;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:center}#home-main-container .middle .panelContainer{border:1px solid #ccc;border-radius:5px;background-image:url(http://cp1.hive01.com/img/opendesktop/back3.jpg);padding:8px;margin:0 5px 5px 0;width:40%}#home-main-container .middle .panelContainer div.title{color:#888888;font-size:11pt;font-weight:bold;border-bottom:1px solid #ccc;height:25px;padding-left:15px;margin-bottom:10px}#home-main-container .middle .panelContainer ul{list-style:none}#home-main-container .middle .panelContainer ul li{border-bottom:1px solid #ccc;padding:5px 0}#home-main-container .middle .panelContainer ul li:last-child{border-bottom:0}
\ No newline at end of file
+#home-main-container{width:100%;height:100%;display:flex;flex-wrap:wrap;display:-webkit-flex;-webkit-flex-wrap:wrap;list-style:none;margin:0;padding:0;font-family:Verdana,"Bitstream Vera Sans",Arial,Helvetica,Sans,"Bitstream Vera Serif";color:#444444;font-size:8pt;line-height:16px}#home-main-container a{color:#444444}#home-main-container .top{display:flex;flex:0 0 100%;color:#fff;padding-top:50px;height:250px;justify-content:center;background-image:url(../img/start-bg.png);background-position:center;background-repeat:no-repeat;background-size:cover}#home-main-container .left{flex:0 0 16.66666667%;padding-right:15px;padding-left:15px;min-width:200px}#home-main-container .right{flex:0 0 16.66666667%;padding-right:15px;min-width:200px}#home-main-container .middle{flex:1;padding:5px;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:center}#home-main-container .middle .placeholder{width:30%;margin:0 5px 5px 0}#home-main-container .middle .panelContainer{border:1px solid #ccc;border-radius:5px;background-image:url(http://cp1.hive01.com/img/opendesktop/back3.jpg);padding:8px;margin:0 5px 5px 0;width:30%}#home-main-container .middle .panelContainer div.title{font-size:11pt;font-weight:bold;border-bottom:1px solid #ccc;height:20px;padding-left:5px;margin-bottom:10px;color:#888888;font-size:9pt}#home-main-container .middle .panelContainer .chatUser{width:100%;display:inline-block;min-height:45px;line-height:42px;padding-left:15px}#home-main-container .middle .panelContainer .chatUser img{width:42px;height:42px;border-radius:100%;display:block;float:left}#home-main-container .middle .panelContainer .chatUser .name{margin-left:50px;display:block}#home-main-container .middle .panelContainer ul,#home-main-container .middle .panelContainer ol{list-style:none;padding-left:20px}#home-main-container .middle .panelContainer ul li,#home-main-container .middle .panelContainer ol li{padding:5px 0}#home-main-container .middle .panelContainer ul li.chatMember a,#home-main-container .middle .panelContainer ol li.chatMember a{font-size:9pt;font-weight:bold}#home-main-container .middle .panelContainer ul li .productrow,#home-main-container .middle .panelContainer ol li .productrow{padding-bottom:5px;padding-top:5px;font-size:small}#home-main-container .middle .panelContainer ul li .productrow .rating,#home-main-container .middle .panelContainer ol li .productrow .rating{width:60px}#home-main-container .middle .panelContainer ul li .productrow .time,#home-main-container .middle .panelContainer ol li .productrow .time{font-size:smaller}#home-main-container .middle .panelContainer ul li .productrow .cntComments,#home-main-container .middle .panelContainer ol li .productrow .cntComments{font-size:smaller;display:block;padding-top:5px}#home-main-container .middle .panelContainer ul li .productrow .defaultProjectAvatar,#home-main-container .middle .panelContainer ol li .productrow .defaultProjectAvatar{width:50px;height:50px;color:#3B658A;line-height:50px;text-align:center;background-color:#e8eaf6}#home-main-container .middle .panelContainer ul li .productrow .productimg,#home-main-container .middle .panelContainer ol li .productrow .productimg{width:50px;height:50px}#home-main-container .middle .panelContainer ul li .productrow .product-user,#home-main-container .middle .panelContainer ol li .productrow .product-user{width:42px;height:42px;border-radius:100%}#home-main-container .middle .panelContainer ul li .productrow .commenttext,#home-main-container .middle .panelContainer ol li .productrow .commenttext{padding-left:20px}#home-main-container .middle .panelContainer ul li .productrow .product-info span,#home-main-container .middle .panelContainer ol li .productrow .product-info span{display:block;float:left;width:100%;line-height:14px;height:auto}#home-main-container .middle .panelContainer ul li .productrow .product-info span.product-info-title,#home-main-container .middle .panelContainer ol li .productrow .product-info span.product-info-title{color:#444444;font-size:10pt;font-weight:bold;display:block}#home-main-container .middle .panelContainer ul li .productrow .product-info span.product-info-date,#home-main-container .middle .panelContainer ol li .productrow .product-info span.product-info-date{padding-top:10px}#home-main-container .middle .panelContainer ul li .productrow .product-info span.product-info-user,#home-main-container .middle .panelContainer ol li .productrow .product-info span.product-info-user{color:#666}#home-main-container .middle .panelContainer ul li .productrow .score-info,#home-main-container .middle .panelContainer ol li .productrow .score-info{text-align:center;width:80%}#home-main-container .middle .panelContainer ul li .productrow .score-info .score-number,#home-main-container .middle .panelContainer ol li .productrow .score-info .score-number{width:100%;text-align:center;margin-bottom:0;font-size:8pt}#home-main-container .middle .panelContainer ul li .productrow .score-info .score-bar-container,#home-main-container .middle .panelContainer ol li .productrow .score-info .score-bar-container{width:100%;height:10px;background:#ccc;margin-bottom:5px}#home-main-container .middle .panelContainer ul li .productrow .score-info .score-bar-container .score-bar,#home-main-container .middle .panelContainer ol li .productrow .score-info .score-bar-container .score-bar{height:9px;background-color:#30c830;border-bottom:1px solid #2bb32b}#home-main-container .middle .panelContainer ul li .cm-content,#home-main-container .middle .panelContainer ol li .cm-content{min-height:60px}#home-main-container .middle .panelContainer ul li .cm-content .cm-userinfo,#home-main-container .middle .panelContainer ol li .cm-content .cm-userinfo{float:right;width:80px;text-align:center;padding:3px}#home-main-container .middle .panelContainer ul li .cm-content .cm-userinfo img,#home-main-container .middle .panelContainer ol li .cm-content .cm-userinfo img{width:42px;height:42px;border-radius:100%}#home-main-container .middle .panelContainer ul li .cm-content .cm-userinfo .username,#home-main-container .middle .panelContainer ol li .cm-content .cm-userinfo .username{display:block;text-align:center;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:small}#home-main-container .middle .panelContainer ul li .title,#home-main-container .middle .panelContainer ol li .title,#home-main-container .middle .panelContainer ul li .info-row,#home-main-container .middle .panelContainer ol li .info-row{display:block;width:100%;color:#777777}#home-main-container .middle .panelContainer ul li .title,#home-main-container .middle .panelContainer ol li .title{color:#444444;font-size:10pt;font-weight:bold}#home-main-container .middle .panelContainer ul li .content,#home-main-container .middle .panelContainer ol li .content{font-size:13px;line-height:1}#home-main-container .middle .panelContainer ul li .info-row span.comment-counter,#home-main-container .middle .panelContainer ol li .info-row span.comment-counter{float:right}#home-main-container .middle .panelContainer ul li+li,#home-main-container .middle .panelContainer ol li+li{border-top:1px solid #ccc}
\ No newline at end of file
diff --git a/httpdocs/theme/react/assets/img/start-bg.png b/httpdocs/theme/react/assets/img/start-bg.png
new file mode 100644
index 000000000..c8683aead
Binary files /dev/null and b/httpdocs/theme/react/assets/img/start-bg.png differ
diff --git a/httpdocs/theme/react/assets/less/home-main-container.less b/httpdocs/theme/react/assets/less/home-main-container.less
index 8f5dac936..87bf304c1 100644
--- a/httpdocs/theme/react/assets/less/home-main-container.less
+++ b/httpdocs/theme/react/assets/less/home-main-container.less
@@ -1,67 +1,270 @@
out: ../css/home-main-container.css, sourcemap: true, compress: true
#home-main-container{
width: 100%;
height: 100%;
display: flex;
flex-wrap: wrap;
display: -webkit-flex; /* Safari */
-webkit-flex-wrap: wrap; /* Safari 6.1+ */
list-style: none;
margin:0;
padding: 0;
+ font-family: Verdana,"Bitstream Vera Sans",Arial,Helvetica,Sans,"Bitstream Vera Serif";
+ color: #444444;
+ font-size: 8pt;
+ line-height: 16px;
+ a{
+ color:#444444;
+ }
+ .top{
+ display: flex;
+ flex: 0 0 100%;
+ color:#fff;
+ padding-top: 50px;
+ height: 250px;
+ justify-content:center;
+ background-image: url(../img/start-bg.png);
+ background-position: center; /* Center the image */
+ background-repeat: no-repeat; /* Do not repeat the image */
+ background-size: cover; /* Resize the background image to cover the entire container */
+ }
.left{
flex: 0 0 16.66666667%;
padding-right: 15px;
padding-left: 15px;
min-width: 200px;
}
.right{
flex: 0 0 16.66666667%;
padding-right: 15px;
min-width: 200px;
}
.middle{
flex:1;
- padding: 15px;
+ padding: 5px;
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: center;
+ .placeholder{
+ width: 30%;
+ margin: 0px 5px 5px 0;
+ }
.panelContainer{
border: 1px solid #ccc;
border-radius: 5px;
background-image: url(http://cp1.hive01.com/img/opendesktop/back3.jpg);
padding: 8px;
margin: 0px 5px 5px 0;
- width: 40%;
+ width: 30%;
div.title{
color: #888888;
font-size:11pt;
font-weight: bold;
border-bottom: 1px solid #ccc;
- height: 25px;
- padding-left: 15px;
+ height: 20px;
+ padding-left: 5px;
margin-bottom: 10px;
+
+ color: #888888;
+ font-size: 9pt;
+
}
- ul{
+ .chatUser
+ {
+ width: 100%;
+ display: inline-block;
+ min-height: 45px;
+ line-height: 42px;
+ padding-left: 15px;
+ img{
+ width: 42px;
+ height: 42px;
+ border-radius: 100%;
+ display: block;
+ float: left;
+ }
+ .name{
+ margin-left: 50px;
+ display: block;
+ }
+
+ }
+
+ ul, ol {
list-style: none;
- li{
- border-bottom: 1px solid #ccc;
- padding: 5px 0;
- &:last-child{
- border-bottom: 0px;
+ padding-left: 20px;
+ li {
+ padding: 5px 0px;
+ &.chatMember{
+ a{
+ font-size: 9pt;
+ font-weight: bold;
+ }
+ }
+ .productrow
+ {
+ padding-bottom: 5px;
+ padding-top: 5px;
+ font-size: small;
+
+ .rating
+ {
+ width: 60px;
+ }
+ .time
+ {
+ font-size: smaller;
+ }
+ .cntComments
+ {
+ font-size: smaller;
+ display: block;
+ padding-top: 5px;
+
+ }
+ .defaultProjectAvatar{
+ width: 50px;
+ height: 50px;
+ color: #3B658A;
+ line-height: 50px;
+ text-align: center;
+ background-color: #e8eaf6;
+ }
+ .productimg
+ {
+ width:50px;
+ height:50px;
+ }
+ .product-user{
+ width: 42px;
+ height: 42px;
+ border-radius: 100%;
+ }
+ .commenttext{
+ padding-left: 20px;
+
+ }
+ .product-info {
+ span {
+ display: block;
+ float: left;
+ width: 100%;
+ line-height: 14px;
+ height: auto;
+
+ &.product-info-title {
+ color: #444444;
+ font-size: 10pt;
+ font-weight: bold;
+ display: block;
+ }
+ &.product-info-date{
+ padding-top: 10px;
+ }
+
+
+ &.product-info-user {
+ color: #666;
+ }
+ }
+ }
+ .score-info {
+ text-align: center;
+ width: 80%;
+ .score-number {
+ width: 100%;
+ text-align: center;
+ margin-bottom: 0px;
+ font-size: 8pt;
+ }
+
+ .score-bar-container {
+ width: 100%;
+ height: 10px;
+ background: #ccc;
+ margin-bottom: 5px;
+
+ .score-bar {
+ height: 9px;
+ background-color: #30c830;
+ border-bottom: 1px solid darken( #30c830,5%);
+ }
+ }
+ }
+ }
+ .cm-content{
+ min-height: 60px;
+ .cm-userinfo {
+
+ float: right;
+ width: 80px;
+ text-align: center;
+ padding: 3px;
+
+ img {
+ width: 42px;
+ height: 42px;
+ border-radius: 100%;
+ }
+
+ .username {
+ display: block;
+ text-align: center;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ font-size: small;
+
+ }
+ }
+ }
+ .title, .info-row {
+ display: block;
+ width: 100%;
+ color: #777777;
+ }
+
+ .title {
+ color: #444444;
+ font-size: 10pt;
+ font-weight: bold;
+ }
+
+ .content {
+ font-size: 13px;
+ line-height: 1;
+ }
+
+ .info-row {
+ /*overflow: auto;
+ */
+
+ span {
+ /*
+ float: left;
+ display: inline-block;
+ font-size: 12px;
+ */
+
+ &.comment-counter {
+ float: right;
+ }
+ }
}
}
+ li + li {
+ border-top:1px solid #ccc;
+ }
}
-
}
}
}
diff --git a/httpdocs/theme/react/bundle/home-main-container-bundle.js b/httpdocs/theme/react/bundle/home-main-container-bundle.js
index 4a914795b..39932b287 100644
--- a/httpdocs/theme/react/bundle/home-main-container-bundle.js
+++ b/httpdocs/theme/react/bundle/home-main-container-bundle.js
@@ -1,269 +1,14 @@
-/******/ (function(modules) { // webpackBootstrap
-/******/ // The module cache
-/******/ var installedModules = {};
-/******/
-/******/ // The require function
-/******/ function __webpack_require__(moduleId) {
-/******/
-/******/ // Check if module is in cache
-/******/ if(installedModules[moduleId]) {
-/******/ return installedModules[moduleId].exports;
-/******/ }
-/******/ // Create a new module (and put it into the cache)
-/******/ var module = installedModules[moduleId] = {
-/******/ i: moduleId,
-/******/ l: false,
-/******/ exports: {}
-/******/ };
-/******/
-/******/ // Execute the module function
-/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-/******/
-/******/ // Flag the module as loaded
-/******/ module.l = true;
-/******/
-/******/ // Return the exports of the module
-/******/ return module.exports;
-/******/ }
-/******/
-/******/
-/******/ // expose the modules object (__webpack_modules__)
-/******/ __webpack_require__.m = modules;
-/******/
-/******/ // expose the module cache
-/******/ __webpack_require__.c = installedModules;
-/******/
-/******/ // define getter function for harmony exports
-/******/ __webpack_require__.d = function(exports, name, getter) {
-/******/ if(!__webpack_require__.o(exports, name)) {
-/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
-/******/ }
-/******/ };
-/******/
-/******/ // define __esModule on exports
-/******/ __webpack_require__.r = function(exports) {
-/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
-/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
-/******/ }
-/******/ Object.defineProperty(exports, '__esModule', { value: true });
-/******/ };
-/******/
-/******/ // create a fake namespace object
-/******/ // mode & 1: value is a module id, require it
-/******/ // mode & 2: merge all properties of value into the ns
-/******/ // mode & 4: return value when already ns object
-/******/ // mode & 8|1: behave like require
-/******/ __webpack_require__.t = function(value, mode) {
-/******/ if(mode & 1) value = __webpack_require__(value);
-/******/ if(mode & 8) return value;
-/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
-/******/ var ns = Object.create(null);
-/******/ __webpack_require__.r(ns);
-/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
-/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
-/******/ return ns;
-/******/ };
-/******/
-/******/ // getDefaultExport function for compatibility with non-harmony modules
-/******/ __webpack_require__.n = function(module) {
-/******/ var getter = module && module.__esModule ?
-/******/ function getDefault() { return module['default']; } :
-/******/ function getModuleExports() { return module; };
-/******/ __webpack_require__.d(getter, 'a', getter);
-/******/ return getter;
-/******/ };
-/******/
-/******/ // Object.prototype.hasOwnProperty.call
-/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
-/******/
-/******/ // __webpack_public_path__
-/******/ __webpack_require__.p = "";
-/******/
-/******/
-/******/ // Load entry module and return exports
-/******/ return __webpack_require__(__webpack_require__.s = "./src/entry-home-main-container.js");
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ "./node_modules/object-assign/index.js":
-/*!*********************************************!*\
- !*** ./node_modules/object-assign/index.js ***!
- \*********************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n\n//# sourceURL=webpack:///./node_modules/object-assign/index.js?");
-
-/***/ }),
-
-/***/ "./node_modules/prop-types/checkPropTypes.js":
-/*!***************************************************!*\
- !*** ./node_modules/prop-types/checkPropTypes.js ***!
- \***************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nvar printWarning = function() {};\n\nif (true) {\n var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ \"./node_modules/prop-types/lib/ReactPropTypesSecret.js\");\n var loggedTypeFailures = {};\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (true) {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n )\n\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\nmodule.exports = checkPropTypes;\n\n\n//# sourceURL=webpack:///./node_modules/prop-types/checkPropTypes.js?");
-
-/***/ }),
-
-/***/ "./node_modules/prop-types/lib/ReactPropTypesSecret.js":
-/*!*************************************************************!*\
- !*** ./node_modules/prop-types/lib/ReactPropTypesSecret.js ***!
- \*************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n\n//# sourceURL=webpack:///./node_modules/prop-types/lib/ReactPropTypesSecret.js?");
-
-/***/ }),
-
-/***/ "./node_modules/react-timeago/lib/dateParser.js":
-/*!******************************************************!*\
- !*** ./node_modules/react-timeago/lib/dateParser.js ***!
- \******************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = dateParser;\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _toArray(arr) { return Array.isArray(arr) ? arr : Array.from(arr); }\n\nfunction dateParser(date) {\n var parsed = new Date(date);\n if (!Number.isNaN(parsed.valueOf())) {\n return parsed;\n }\n\n var parts = String(date).match(/\\d+/g);\n if (parts == null || parts.length <= 2) {\n return parsed;\n } else {\n var _parts$map = parts.map(function (x) {\n return parseInt(x);\n }),\n _parts$map2 = _toArray(_parts$map),\n firstP = _parts$map2[0],\n secondP = _parts$map2[1],\n restPs = _parts$map2.slice(2);\n\n var correctedParts = [firstP, secondP - 1].concat(_toConsumableArray(restPs));\n var isoDate = new Date(Date.UTC.apply(Date, _toConsumableArray(correctedParts)));\n return isoDate;\n }\n}\n\n//# sourceURL=webpack:///./node_modules/react-timeago/lib/dateParser.js?");
-
-/***/ }),
-
-/***/ "./node_modules/react-timeago/lib/defaultFormatter.js":
-/*!************************************************************!*\
- !*** ./node_modules/react-timeago/lib/defaultFormatter.js ***!
- \************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = defaultFormatter;\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar React = _interopRequireWildcard(_react);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction defaultFormatter(value, unit, suffix) {\n if (value !== 1) {\n unit += 's';\n }\n return value + ' ' + unit + ' ' + suffix;\n}\n\n//# sourceURL=webpack:///./node_modules/react-timeago/lib/defaultFormatter.js?");
-
-/***/ }),
-
-/***/ "./node_modules/react-timeago/lib/index.js":
-/*!*************************************************!*\
- !*** ./node_modules/react-timeago/lib/index.js ***!
- \*************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar React = _interopRequireWildcard(_react);\n\nvar _defaultFormatter = __webpack_require__(/*! ./defaultFormatter */ \"./node_modules/react-timeago/lib/defaultFormatter.js\");\n\nvar _defaultFormatter2 = _interopRequireDefault(_defaultFormatter);\n\nvar _dateParser = __webpack_require__(/*! ./dateParser */ \"./node_modules/react-timeago/lib/dateParser.js\");\n\nvar _dateParser2 = _interopRequireDefault(_dateParser);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Component = React.Component;\n\n\n// Just some simple constants for readability\nvar MINUTE = 60;\nvar HOUR = MINUTE * 60;\nvar DAY = HOUR * 24;\nvar WEEK = DAY * 7;\nvar MONTH = DAY * 30;\nvar YEAR = DAY * 365;\n\nvar TimeAgo = function (_Component) {\n _inherits(TimeAgo, _Component);\n\n function TimeAgo() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, TimeAgo);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = TimeAgo.__proto__ || Object.getPrototypeOf(TimeAgo)).call.apply(_ref, [this].concat(args))), _this), _this.isStillMounted = false, _this.tick = function (refresh) {\n if (!_this.isStillMounted || !_this.props.live) {\n return;\n }\n\n var then = (0, _dateParser2.default)(_this.props.date).valueOf();\n if (!then) {\n console.warn('[react-timeago] Invalid Date provided');\n return;\n }\n\n var now = _this.props.now();\n var seconds = Math.round(Math.abs(now - then) / 1000);\n\n var unboundPeriod = seconds < MINUTE ? 1000 : seconds < HOUR ? 1000 * MINUTE : seconds < DAY ? 1000 * HOUR : 0;\n var period = Math.min(Math.max(unboundPeriod, _this.props.minPeriod * 1000), _this.props.maxPeriod * 1000);\n\n if (period) {\n if (_this.timeoutId) {\n clearTimeout(_this.timeoutId);\n }\n _this.timeoutId = setTimeout(_this.tick, period);\n }\n\n if (!refresh) {\n _this.forceUpdate();\n }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(TimeAgo, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.isStillMounted = true;\n if (this.props.live) {\n this.tick(true);\n }\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(lastProps) {\n if (this.props.live !== lastProps.live || this.props.date !== lastProps.date) {\n if (!this.props.live && this.timeoutId) {\n clearTimeout(this.timeoutId);\n }\n this.tick();\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.isStillMounted = false;\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n this.timeoutId = undefined;\n }\n }\n }, {\n key: 'render',\n value: function render() {\n /* eslint-disable no-unused-vars */\n var _props = this.props,\n date = _props.date,\n formatter = _props.formatter,\n Komponent = _props.component,\n live = _props.live,\n minPeriod = _props.minPeriod,\n maxPeriod = _props.maxPeriod,\n title = _props.title,\n now = _props.now,\n passDownProps = _objectWithoutProperties(_props, ['date', 'formatter', 'component', 'live', 'minPeriod', 'maxPeriod', 'title', 'now']);\n /* eslint-enable no-unused-vars */\n\n\n var then = (0, _dateParser2.default)(date).valueOf();\n if (!then) {\n return null;\n }\n var timeNow = now();\n var seconds = Math.round(Math.abs(timeNow - then) / 1000);\n var suffix = then < timeNow ? 'ago' : 'from now';\n\n var _ref2 = seconds < MINUTE ? [Math.round(seconds), 'second'] : seconds < HOUR ? [Math.round(seconds / MINUTE), 'minute'] : seconds < DAY ? [Math.round(seconds / HOUR), 'hour'] : seconds < WEEK ? [Math.round(seconds / DAY), 'day'] : seconds < MONTH ? [Math.round(seconds / WEEK), 'week'] : seconds < YEAR ? [Math.round(seconds / MONTH), 'month'] : [Math.round(seconds / YEAR), 'year'],\n _ref3 = _slicedToArray(_ref2, 2),\n value = _ref3[0],\n unit = _ref3[1];\n\n var passDownTitle = typeof title === 'undefined' ? typeof date === 'string' ? date : (0, _dateParser2.default)(date).toISOString().substr(0, 16).replace('T', ' ') : title;\n\n var spreadProps = Komponent === 'time' ? Object.assign({}, passDownProps, {\n dateTime: (0, _dateParser2.default)(date).toISOString()\n }) : passDownProps;\n\n var nextFormatter = _defaultFormatter2.default.bind(null, value, unit, suffix);\n\n return React.createElement(\n Komponent,\n _extends({}, spreadProps, { title: passDownTitle }),\n formatter(value, unit, suffix, then, nextFormatter, now)\n );\n }\n }]);\n\n return TimeAgo;\n}(Component);\n\nTimeAgo.displayName = 'TimeAgo';\nTimeAgo.defaultProps = {\n live: true,\n component: 'time',\n minPeriod: 0,\n maxPeriod: Infinity,\n formatter: _defaultFormatter2.default,\n now: function now() {\n return Date.now();\n }\n};\nexports.default = TimeAgo;\n\n//# sourceURL=webpack:///./node_modules/react-timeago/lib/index.js?");
-
-/***/ }),
-
-/***/ "./node_modules/react/cjs/react.development.js":
-/*!*****************************************************!*\
- !*** ./node_modules/react/cjs/react.development.js ***!
- \*****************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("/** @license React v16.6.1\n * react.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\n\n\nif (true) {\n (function() {\n'use strict';\n\nvar _assign = __webpack_require__(/*! object-assign */ \"./node_modules/object-assign/index.js\");\nvar checkPropTypes = __webpack_require__(/*! prop-types/checkPropTypes */ \"./node_modules/prop-types/checkPropTypes.js\");\n\n// TODO: this is special because it gets imported during build.\n\nvar ReactVersion = '16.6.3';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\n\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace;\n\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\n\nvar MAYBE_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\n\nfunction getIteratorFn(maybeIterable) {\n if (maybeIterable === null || typeof maybeIterable !== 'object') {\n return null;\n }\n var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n if (typeof maybeIterator === 'function') {\n return maybeIterator;\n }\n return null;\n}\n\nvar enableHooks = false;\n// Helps identify side effects in begin-phase lifecycle hooks and setState reducers:\n\n\n// In some cases, StrictMode should also double-render lifecycles.\n// This can be confusing for tests though,\n// And it can be bad for performance in production.\n// This feature flag can be used to control the behavior:\n\n\n// To preserve the \"Pause on caught exceptions\" behavior of the debugger, we\n// replay the begin phase of a failed component inside invokeGuardedCallback.\n\n\n// Warn about deprecated, async-unsafe lifecycles; relates to RFC #6:\n\n\n// Gather advanced timing metrics for Profiler subtrees.\n\n\n// Trace which interactions trigger each commit.\n\n\n// Only used in www builds.\n\n\n// Only used in www builds.\n\n\n// React Fire: prevent the value and checked attributes from syncing\n// with their related DOM properties\n\n\n// These APIs will no longer be \"unstable\" in the upcoming 16.7 release,\n// Control this behavior with a flag to support 16.6 minor releases in the meanwhile.\nvar enableStableConcurrentModeAPIs = false;\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function () {};\n\n{\n validateFormat = function (format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error = void 0;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\n// Relying on the `invariant()` implementation lets us\n// preserve the format and params in the www builds.\n\n/**\n * Forked from fbjs/warning:\n * https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js\n *\n * Only change is we use console.warn instead of console.error,\n * and do nothing when 'console' is not supported.\n * This really simplifies the code.\n * ---\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar lowPriorityWarning = function () {};\n\n{\n var printWarning = function (format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.warn(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n lowPriorityWarning = function (condition, format) {\n if (format === undefined) {\n throw new Error('`lowPriorityWarning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nvar lowPriorityWarning$1 = lowPriorityWarning;\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warningWithoutStack = function () {};\n\n{\n warningWithoutStack = function (condition, format) {\n for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n if (format === undefined) {\n throw new Error('`warningWithoutStack(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n if (args.length > 8) {\n // Check before the condition to catch violations early.\n throw new Error('warningWithoutStack() currently supports at most 8 arguments.');\n }\n if (condition) {\n return;\n }\n if (typeof console !== 'undefined') {\n var argsWithFormat = args.map(function (item) {\n return '' + item;\n });\n argsWithFormat.unshift('Warning: ' + format);\n\n // We intentionally don't use spread (or .apply) directly because it\n // breaks IE9: https://github.com/facebook/react/issues/13610\n Function.prototype.apply.call(console.error, console, argsWithFormat);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nvar warningWithoutStack$1 = warningWithoutStack;\n\nvar didWarnStateUpdateForUnmountedComponent = {};\n\nfunction warnNoop(publicInstance, callerName) {\n {\n var _constructor = publicInstance.constructor;\n var componentName = _constructor && (_constructor.displayName || _constructor.name) || 'ReactClass';\n var warningKey = componentName + '.' + callerName;\n if (didWarnStateUpdateForUnmountedComponent[warningKey]) {\n return;\n }\n warningWithoutStack$1(false, \"Can't call %s on a component that is not yet mounted. \" + 'This is a no-op, but it might indicate a bug in your application. ' + 'Instead, assign to `this.state` directly or define a `state = {};` ' + 'class property with the desired state in the %s component.', callerName, componentName);\n didWarnStateUpdateForUnmountedComponent[warningKey] = true;\n }\n}\n\n/**\n * This is the abstract API for an update queue.\n */\nvar ReactNoopUpdateQueue = {\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function (publicInstance) {\n return false;\n },\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {?function} callback Called after component is updated.\n * @param {?string} callerName name of the calling function in the public API.\n * @internal\n */\n enqueueForceUpdate: function (publicInstance, callback, callerName) {\n warnNoop(publicInstance, 'forceUpdate');\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @param {?function} callback Called after component is updated.\n * @param {?string} callerName name of the calling function in the public API.\n * @internal\n */\n enqueueReplaceState: function (publicInstance, completeState, callback, callerName) {\n warnNoop(publicInstance, 'replaceState');\n },\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @param {?function} callback Called after component is updated.\n * @param {?string} Name of the calling function in the public API.\n * @internal\n */\n enqueueSetState: function (publicInstance, partialState, callback, callerName) {\n warnNoop(publicInstance, 'setState');\n }\n};\n\nvar emptyObject = {};\n{\n Object.freeze(emptyObject);\n}\n\n/**\n * Base class helpers for the updating state of a component.\n */\nfunction Component(props, context, updater) {\n this.props = props;\n this.context = context;\n // If a component has string refs, we will assign a different object later.\n this.refs = emptyObject;\n // We initialize the default updater but the real one gets injected by the\n // renderer.\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nComponent.prototype.isReactComponent = {};\n\n/**\n * Sets a subset of the state. Always use this to mutate\n * state. You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * There is no guarantee that calls to `setState` will run synchronously,\n * as they may eventually be batched together. You can provide an optional\n * callback that will be executed when the call to setState is actually\n * completed.\n *\n * When a function is provided to setState, it will be called at some point in\n * the future (not synchronously). It will be called with the up to date\n * component arguments (state, props, context). These values can be different\n * from this.* because your function may be called after receiveProps but before\n * shouldComponentUpdate, and this new state, props, and context will not yet be\n * assigned to this.\n *\n * @param {object|function} partialState Next partial state or function to\n * produce next partial state to be merged with current state.\n * @param {?function} callback Called after state is updated.\n * @final\n * @protected\n */\nComponent.prototype.setState = function (partialState, callback) {\n !(typeof partialState === 'object' || typeof partialState === 'function' || partialState == null) ? invariant(false, 'setState(...): takes an object of state variables to update or a function which returns an object of state variables.') : void 0;\n this.updater.enqueueSetState(this, partialState, callback, 'setState');\n};\n\n/**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {?function} callback Called after update is complete.\n * @final\n * @protected\n */\nComponent.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this, callback, 'forceUpdate');\n};\n\n/**\n * Deprecated APIs. These APIs used to exist on classic React classes but since\n * we would like to deprecate them, we're not going to move them over to this\n * modern base class. Instead, we define a getter that warns if it's accessed.\n */\n{\n var deprecatedAPIs = {\n isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'],\n replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).']\n };\n var defineDeprecationWarning = function (methodName, info) {\n Object.defineProperty(Component.prototype, methodName, {\n get: function () {\n lowPriorityWarning$1(false, '%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]);\n return undefined;\n }\n });\n };\n for (var fnName in deprecatedAPIs) {\n if (deprecatedAPIs.hasOwnProperty(fnName)) {\n defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n }\n }\n}\n\nfunction ComponentDummy() {}\nComponentDummy.prototype = Component.prototype;\n\n/**\n * Convenience component with default shallow equality check for sCU.\n */\nfunction PureComponent(props, context, updater) {\n this.props = props;\n this.context = context;\n // If a component has string refs, we will assign a different object later.\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nvar pureComponentPrototype = PureComponent.prototype = new ComponentDummy();\npureComponentPrototype.constructor = PureComponent;\n// Avoid an extra prototype jump for these methods.\n_assign(pureComponentPrototype, Component.prototype);\npureComponentPrototype.isPureReactComponent = true;\n\n// an immutable object with a single mutable value\nfunction createRef() {\n var refObject = {\n current: null\n };\n {\n Object.seal(refObject);\n }\n return refObject;\n}\n\n/**\n * Keeps track of the current owner.\n *\n * The current owner is the component who should own any components that are\n * currently being constructed.\n */\nvar ReactCurrentOwner = {\n /**\n * @internal\n * @type {ReactComponent}\n */\n current: null,\n currentDispatcher: null\n};\n\nvar BEFORE_SLASH_RE = /^(.*)[\\\\\\/]/;\n\nvar describeComponentFrame = function (name, source, ownerName) {\n var sourceInfo = '';\n if (source) {\n var path = source.fileName;\n var fileName = path.replace(BEFORE_SLASH_RE, '');\n {\n // In DEV, include code for a common special case:\n // prefer \"folder/index.js\" instead of just \"index.js\".\n if (/^index\\./.test(fileName)) {\n var match = path.match(BEFORE_SLASH_RE);\n if (match) {\n var pathBeforeSlash = match[1];\n if (pathBeforeSlash) {\n var folderName = pathBeforeSlash.replace(BEFORE_SLASH_RE, '');\n fileName = folderName + '/' + fileName;\n }\n }\n }\n }\n sourceInfo = ' (at ' + fileName + ':' + source.lineNumber + ')';\n } else if (ownerName) {\n sourceInfo = ' (created by ' + ownerName + ')';\n }\n return '\\n in ' + (name || 'Unknown') + sourceInfo;\n};\n\nvar Resolved = 1;\n\n\nfunction refineResolvedLazyComponent(lazyComponent) {\n return lazyComponent._status === Resolved ? lazyComponent._result : null;\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n var functionName = innerType.displayName || innerType.name || '';\n return outerType.displayName || (functionName !== '' ? wrapperName + '(' + functionName + ')' : wrapperName);\n}\n\nfunction getComponentName(type) {\n if (type == null) {\n // Host root, text node or just invalid type.\n return null;\n }\n {\n if (typeof type.tag === 'number') {\n warningWithoutStack$1(false, 'Received an unexpected object in getComponentName(). ' + 'This is likely a bug in React. Please file an issue.');\n }\n }\n if (typeof type === 'function') {\n return type.displayName || type.name || null;\n }\n if (typeof type === 'string') {\n return type;\n }\n switch (type) {\n case REACT_CONCURRENT_MODE_TYPE:\n return 'ConcurrentMode';\n case REACT_FRAGMENT_TYPE:\n return 'Fragment';\n case REACT_PORTAL_TYPE:\n return 'Portal';\n case REACT_PROFILER_TYPE:\n return 'Profiler';\n case REACT_STRICT_MODE_TYPE:\n return 'StrictMode';\n case REACT_SUSPENSE_TYPE:\n return 'Suspense';\n }\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_CONTEXT_TYPE:\n return 'Context.Consumer';\n case REACT_PROVIDER_TYPE:\n return 'Context.Provider';\n case REACT_FORWARD_REF_TYPE:\n return getWrappedName(type, type.render, 'ForwardRef');\n case REACT_MEMO_TYPE:\n return getComponentName(type.type);\n case REACT_LAZY_TYPE:\n {\n var thenable = type;\n var resolvedThenable = refineResolvedLazyComponent(thenable);\n if (resolvedThenable) {\n return getComponentName(resolvedThenable);\n }\n }\n }\n }\n return null;\n}\n\nvar ReactDebugCurrentFrame = {};\n\nvar currentlyValidatingElement = null;\n\nfunction setCurrentlyValidatingElement(element) {\n {\n currentlyValidatingElement = element;\n }\n}\n\n{\n // Stack implementation injected by the current renderer.\n ReactDebugCurrentFrame.getCurrentStack = null;\n\n ReactDebugCurrentFrame.getStackAddendum = function () {\n var stack = '';\n\n // Add an extra top frame while an element is being validated\n if (currentlyValidatingElement) {\n var name = getComponentName(currentlyValidatingElement.type);\n var owner = currentlyValidatingElement._owner;\n stack += describeComponentFrame(name, currentlyValidatingElement._source, owner && getComponentName(owner.type));\n }\n\n // Delegate to the injected renderer-specific implementation\n var impl = ReactDebugCurrentFrame.getCurrentStack;\n if (impl) {\n stack += impl() || '';\n }\n\n return stack;\n };\n}\n\nvar ReactSharedInternals = {\n ReactCurrentOwner: ReactCurrentOwner,\n // Used by renderers to avoid bundling object-assign twice in UMD bundles:\n assign: _assign\n};\n\n{\n _assign(ReactSharedInternals, {\n // These should not be included in production.\n ReactDebugCurrentFrame: ReactDebugCurrentFrame,\n // Shim for React DOM 16.0.0 which still destructured (but not used) this.\n // TODO: remove in React 17.0.\n ReactComponentTreeHook: {}\n });\n}\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = warningWithoutStack$1;\n\n{\n warning = function (condition, format) {\n if (condition) {\n return;\n }\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n var stack = ReactDebugCurrentFrame.getStackAddendum();\n // eslint-disable-next-line react-internal/warning-and-invariant-args\n\n for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n warningWithoutStack$1.apply(undefined, [false, format + '%s'].concat(args, [stack]));\n };\n}\n\nvar warning$1 = warning;\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar RESERVED_PROPS = {\n key: true,\n ref: true,\n __self: true,\n __source: true\n};\n\nvar specialPropKeyWarningShown = void 0;\nvar specialPropRefWarningShown = void 0;\n\nfunction hasValidRef(config) {\n {\n if (hasOwnProperty.call(config, 'ref')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n {\n if (hasOwnProperty.call(config, 'key')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n return config.key !== undefined;\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n var warnAboutAccessingKey = function () {\n if (!specialPropKeyWarningShown) {\n specialPropKeyWarningShown = true;\n warningWithoutStack$1(false, '%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName);\n }\n };\n warnAboutAccessingKey.isReactWarning = true;\n Object.defineProperty(props, 'key', {\n get: warnAboutAccessingKey,\n configurable: true\n });\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n var warnAboutAccessingRef = function () {\n if (!specialPropRefWarningShown) {\n specialPropRefWarningShown = true;\n warningWithoutStack$1(false, '%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName);\n }\n };\n warnAboutAccessingRef.isReactWarning = true;\n Object.defineProperty(props, 'ref', {\n get: warnAboutAccessingRef,\n configurable: true\n });\n}\n\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, no instanceof check\n * will work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} key\n * @param {string|object} ref\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @param {*} owner\n * @param {*} props\n * @internal\n */\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n var element = {\n // This tag allows us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n\n // Record the component responsible for creating this element.\n _owner: owner\n };\n\n {\n // The validation flag is currently mutative. We put it on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n element._store = {};\n\n // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n Object.defineProperty(element._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n });\n // self and source are DEV only properties.\n Object.defineProperty(element, '_self', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: self\n });\n // Two elements created in two different places should be considered\n // equal for testing purposes and therefore we hide it from enumeration.\n Object.defineProperty(element, '_source', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: source\n });\n if (Object.freeze) {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n }\n\n return element;\n};\n\n/**\n * Create and return a new ReactElement of the given type.\n * See https://reactjs.org/docs/react-api.html#createelement\n */\nfunction createElement(type, config, children) {\n var propName = void 0;\n\n // Reserved names are extracted\n var props = {};\n\n var key = null;\n var ref = null;\n var self = null;\n var source = null;\n\n if (config != null) {\n if (hasValidRef(config)) {\n ref = config.ref;\n }\n if (hasValidKey(config)) {\n key = '' + config.key;\n }\n\n self = config.__self === undefined ? null : config.__self;\n source = config.__source === undefined ? null : config.__source;\n // Remaining properties are added to a new props object\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n }\n }\n\n // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n var childrenLength = arguments.length - 2;\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n {\n if (Object.freeze) {\n Object.freeze(childArray);\n }\n }\n props.children = childArray;\n }\n\n // Resolve default props\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n {\n if (key || ref) {\n var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n if (key) {\n defineKeyPropWarningGetter(props, displayName);\n }\n if (ref) {\n defineRefPropWarningGetter(props, displayName);\n }\n }\n }\n return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n}\n\n/**\n * Return a function that produces ReactElements of a given type.\n * See https://reactjs.org/docs/react-api.html#createfactory\n */\n\n\nfunction cloneAndReplaceKey(oldElement, newKey) {\n var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);\n\n return newElement;\n}\n\n/**\n * Clone and return a new ReactElement using element as the starting point.\n * See https://reactjs.org/docs/react-api.html#cloneelement\n */\nfunction cloneElement(element, config, children) {\n !!(element === null || element === undefined) ? invariant(false, 'React.cloneElement(...): The argument must be a React element, but you passed %s.', element) : void 0;\n\n var propName = void 0;\n\n // Original props are copied\n var props = _assign({}, element.props);\n\n // Reserved names are extracted\n var key = element.key;\n var ref = element.ref;\n // Self is preserved since the owner is preserved.\n var self = element._self;\n // Source is preserved since cloneElement is unlikely to be targeted by a\n // transpiler, and the original source is probably a better indicator of the\n // true owner.\n var source = element._source;\n\n // Owner will be preserved, unless ref is overridden\n var owner = element._owner;\n\n if (config != null) {\n if (hasValidRef(config)) {\n // Silently steal the ref from the parent.\n ref = config.ref;\n owner = ReactCurrentOwner.current;\n }\n if (hasValidKey(config)) {\n key = '' + config.key;\n }\n\n // Remaining properties override existing props\n var defaultProps = void 0;\n if (element.type && element.type.defaultProps) {\n defaultProps = element.type.defaultProps;\n }\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n if (config[propName] === undefined && defaultProps !== undefined) {\n // Resolve default props\n props[propName] = defaultProps[propName];\n } else {\n props[propName] = config[propName];\n }\n }\n }\n }\n\n // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n var childrenLength = arguments.length - 2;\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n props.children = childArray;\n }\n\n return ReactElement(element.type, key, ref, self, source, owner, props);\n}\n\n/**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a ReactElement.\n * @final\n */\nfunction isValidElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\nfunction escape(key) {\n var escapeRegex = /[=:]/g;\n var escaperLookup = {\n '=': '=0',\n ':': '=2'\n };\n var escapedString = ('' + key).replace(escapeRegex, function (match) {\n return escaperLookup[match];\n });\n\n return '$' + escapedString;\n}\n\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\nvar didWarnAboutMaps = false;\n\nvar userProvidedKeyEscapeRegex = /\\/+/g;\nfunction escapeUserProvidedKey(text) {\n return ('' + text).replace(userProvidedKeyEscapeRegex, '$&/');\n}\n\nvar POOL_SIZE = 10;\nvar traverseContextPool = [];\nfunction getPooledTraverseContext(mapResult, keyPrefix, mapFunction, mapContext) {\n if (traverseContextPool.length) {\n var traverseContext = traverseContextPool.pop();\n traverseContext.result = mapResult;\n traverseContext.keyPrefix = keyPrefix;\n traverseContext.func = mapFunction;\n traverseContext.context = mapContext;\n traverseContext.count = 0;\n return traverseContext;\n } else {\n return {\n result: mapResult,\n keyPrefix: keyPrefix,\n func: mapFunction,\n context: mapContext,\n count: 0\n };\n }\n}\n\nfunction releaseTraverseContext(traverseContext) {\n traverseContext.result = null;\n traverseContext.keyPrefix = null;\n traverseContext.func = null;\n traverseContext.context = null;\n traverseContext.count = 0;\n if (traverseContextPool.length < POOL_SIZE) {\n traverseContextPool.push(traverseContext);\n }\n}\n\n/**\n * @param {?*} children Children tree container.\n * @param {!string} nameSoFar Name of the key path so far.\n * @param {!function} callback Callback to invoke with each child found.\n * @param {?*} traverseContext Used to pass information throughout the traversal\n * process.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {\n var type = typeof children;\n\n if (type === 'undefined' || type === 'boolean') {\n // All of the above are perceived as null.\n children = null;\n }\n\n var invokeCallback = false;\n\n if (children === null) {\n invokeCallback = true;\n } else {\n switch (type) {\n case 'string':\n case 'number':\n invokeCallback = true;\n break;\n case 'object':\n switch (children.$$typeof) {\n case REACT_ELEMENT_TYPE:\n case REACT_PORTAL_TYPE:\n invokeCallback = true;\n }\n }\n }\n\n if (invokeCallback) {\n callback(traverseContext, children,\n // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows.\n nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);\n return 1;\n }\n\n var child = void 0;\n var nextName = void 0;\n var subtreeCount = 0; // Count of children found in the current subtree.\n var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n nextName = nextNamePrefix + getComponentKey(child, i);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n if (typeof iteratorFn === 'function') {\n {\n // Warn about using Maps as children\n if (iteratorFn === children.entries) {\n !didWarnAboutMaps ? warning$1(false, 'Using Maps as children is unsupported and will likely yield ' + 'unexpected results. Convert it to a sequence/iterable of keyed ' + 'ReactElements instead.') : void 0;\n didWarnAboutMaps = true;\n }\n }\n\n var iterator = iteratorFn.call(children);\n var step = void 0;\n var ii = 0;\n while (!(step = iterator.next()).done) {\n child = step.value;\n nextName = nextNamePrefix + getComponentKey(child, ii++);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else if (type === 'object') {\n var addendum = '';\n {\n addendum = ' If you meant to render a collection of children, use an array ' + 'instead.' + ReactDebugCurrentFrame.getStackAddendum();\n }\n var childrenString = '' + children;\n invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum);\n }\n }\n\n return subtreeCount;\n}\n\n/**\n * Traverses children that are typically specified as `props.children`, but\n * might also be specified through attributes:\n *\n * - `traverseAllChildren(this.props.children, ...)`\n * - `traverseAllChildren(this.props.leftPanelChildren, ...)`\n *\n * The `traverseContext` is an optional argument that is passed through the\n * entire traversal. It can be used to store accumulations or anything else that\n * the callback might find relevant.\n *\n * @param {?*} children Children tree object.\n * @param {!function} callback To invoke upon traversing each child.\n * @param {?*} traverseContext Context for traversal.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildren(children, callback, traverseContext) {\n if (children == null) {\n return 0;\n }\n\n return traverseAllChildrenImpl(children, '', callback, traverseContext);\n}\n\n/**\n * Generate a key string that identifies a component within a set.\n *\n * @param {*} component A component that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\nfunction getComponentKey(component, index) {\n // Do some typechecking here since we call this blindly. We want to ensure\n // that we don't block potential future ES APIs.\n if (typeof component === 'object' && component !== null && component.key != null) {\n // Explicit key\n return escape(component.key);\n }\n // Implicit key determined by the index in the set\n return index.toString(36);\n}\n\nfunction forEachSingleChild(bookKeeping, child, name) {\n var func = bookKeeping.func,\n context = bookKeeping.context;\n\n func.call(context, child, bookKeeping.count++);\n}\n\n/**\n * Iterates through children that are typically specified as `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenforeach\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} forEachFunc\n * @param {*} forEachContext Context for forEachContext.\n */\nfunction forEachChildren(children, forEachFunc, forEachContext) {\n if (children == null) {\n return children;\n }\n var traverseContext = getPooledTraverseContext(null, null, forEachFunc, forEachContext);\n traverseAllChildren(children, forEachSingleChild, traverseContext);\n releaseTraverseContext(traverseContext);\n}\n\nfunction mapSingleChildIntoContext(bookKeeping, child, childKey) {\n var result = bookKeeping.result,\n keyPrefix = bookKeeping.keyPrefix,\n func = bookKeeping.func,\n context = bookKeeping.context;\n\n\n var mappedChild = func.call(context, child, bookKeeping.count++);\n if (Array.isArray(mappedChild)) {\n mapIntoWithKeyPrefixInternal(mappedChild, result, childKey, function (c) {\n return c;\n });\n } else if (mappedChild != null) {\n if (isValidElement(mappedChild)) {\n mappedChild = cloneAndReplaceKey(mappedChild,\n // Keep both the (mapped) and old keys if they differ, just as\n // traverseAllChildren used to do for objects as children\n keyPrefix + (mappedChild.key && (!child || child.key !== mappedChild.key) ? escapeUserProvidedKey(mappedChild.key) + '/' : '') + childKey);\n }\n result.push(mappedChild);\n }\n}\n\nfunction mapIntoWithKeyPrefixInternal(children, array, prefix, func, context) {\n var escapedPrefix = '';\n if (prefix != null) {\n escapedPrefix = escapeUserProvidedKey(prefix) + '/';\n }\n var traverseContext = getPooledTraverseContext(array, escapedPrefix, func, context);\n traverseAllChildren(children, mapSingleChildIntoContext, traverseContext);\n releaseTraverseContext(traverseContext);\n}\n\n/**\n * Maps children that are typically specified as `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenmap\n *\n * The provided mapFunction(child, key, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} func The map function.\n * @param {*} context Context for mapFunction.\n * @return {object} Object containing the ordered map of results.\n */\nfunction mapChildren(children, func, context) {\n if (children == null) {\n return children;\n }\n var result = [];\n mapIntoWithKeyPrefixInternal(children, result, null, func, context);\n return result;\n}\n\n/**\n * Count the number of children that are typically specified as\n * `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrencount\n *\n * @param {?*} children Children tree container.\n * @return {number} The number of children.\n */\nfunction countChildren(children) {\n return traverseAllChildren(children, function () {\n return null;\n }, null);\n}\n\n/**\n * Flatten a children object (typically specified as `props.children`) and\n * return an array with appropriately re-keyed children.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrentoarray\n */\nfunction toArray(children) {\n var result = [];\n mapIntoWithKeyPrefixInternal(children, result, null, function (child) {\n return child;\n });\n return result;\n}\n\n/**\n * Returns the first child in a collection of children and verifies that there\n * is only one child in the collection.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenonly\n *\n * The current implementation of this function assumes that a single child gets\n * passed without a wrapper, but the purpose of this helper function is to\n * abstract away the particular structure of children.\n *\n * @param {?object} children Child collection structure.\n * @return {ReactElement} The first and only `ReactElement` contained in the\n * structure.\n */\nfunction onlyChild(children) {\n !isValidElement(children) ? invariant(false, 'React.Children.only expected to receive a single React element child.') : void 0;\n return children;\n}\n\nfunction createContext(defaultValue, calculateChangedBits) {\n if (calculateChangedBits === undefined) {\n calculateChangedBits = null;\n } else {\n {\n !(calculateChangedBits === null || typeof calculateChangedBits === 'function') ? warningWithoutStack$1(false, 'createContext: Expected the optional second argument to be a ' + 'function. Instead received: %s', calculateChangedBits) : void 0;\n }\n }\n\n var context = {\n $$typeof: REACT_CONTEXT_TYPE,\n _calculateChangedBits: calculateChangedBits,\n // As a workaround to support multiple concurrent renderers, we categorize\n // some renderers as primary and others as secondary. We only expect\n // there to be two concurrent renderers at most: React Native (primary) and\n // Fabric (secondary); React DOM (primary) and React ART (secondary).\n // Secondary renderers store their context values on separate fields.\n _currentValue: defaultValue,\n _currentValue2: defaultValue,\n // Used to track how many concurrent renderers this context currently\n // supports within in a single renderer. Such as parallel server rendering.\n _threadCount: 0,\n // These are circular\n Provider: null,\n Consumer: null\n };\n\n context.Provider = {\n $$typeof: REACT_PROVIDER_TYPE,\n _context: context\n };\n\n var hasWarnedAboutUsingNestedContextConsumers = false;\n var hasWarnedAboutUsingConsumerProvider = false;\n\n {\n // A separate object, but proxies back to the original context object for\n // backwards compatibility. It has a different $$typeof, so we can properly\n // warn for the incorrect usage of Context as a Consumer.\n var Consumer = {\n $$typeof: REACT_CONTEXT_TYPE,\n _context: context,\n _calculateChangedBits: context._calculateChangedBits\n };\n // $FlowFixMe: Flow complains about not setting a value, which is intentional here\n Object.defineProperties(Consumer, {\n Provider: {\n get: function () {\n if (!hasWarnedAboutUsingConsumerProvider) {\n hasWarnedAboutUsingConsumerProvider = true;\n warning$1(false, 'Rendering is not supported and will be removed in ' + 'a future major release. Did you mean to render instead?');\n }\n return context.Provider;\n },\n set: function (_Provider) {\n context.Provider = _Provider;\n }\n },\n _currentValue: {\n get: function () {\n return context._currentValue;\n },\n set: function (_currentValue) {\n context._currentValue = _currentValue;\n }\n },\n _currentValue2: {\n get: function () {\n return context._currentValue2;\n },\n set: function (_currentValue2) {\n context._currentValue2 = _currentValue2;\n }\n },\n _threadCount: {\n get: function () {\n return context._threadCount;\n },\n set: function (_threadCount) {\n context._threadCount = _threadCount;\n }\n },\n Consumer: {\n get: function () {\n if (!hasWarnedAboutUsingNestedContextConsumers) {\n hasWarnedAboutUsingNestedContextConsumers = true;\n warning$1(false, 'Rendering is not supported and will be removed in ' + 'a future major release. Did you mean to render instead?');\n }\n return context.Consumer;\n }\n }\n });\n // $FlowFixMe: Flow complains about missing properties because it doesn't understand defineProperty\n context.Consumer = Consumer;\n }\n\n {\n context._currentRenderer = null;\n context._currentRenderer2 = null;\n }\n\n return context;\n}\n\nfunction lazy(ctor) {\n return {\n $$typeof: REACT_LAZY_TYPE,\n _ctor: ctor,\n // React uses these fields to store the result.\n _status: -1,\n _result: null\n };\n}\n\nfunction forwardRef(render) {\n {\n if (render != null && render.$$typeof === REACT_MEMO_TYPE) {\n warningWithoutStack$1(false, 'forwardRef requires a render function but received a `memo` ' + 'component. Instead of forwardRef(memo(...)), use ' + 'memo(forwardRef(...)).');\n } else if (typeof render !== 'function') {\n warningWithoutStack$1(false, 'forwardRef requires a render function but was given %s.', render === null ? 'null' : typeof render);\n } else {\n !(\n // Do not warn for 0 arguments because it could be due to usage of the 'arguments' object\n render.length === 0 || render.length === 2) ? warningWithoutStack$1(false, 'forwardRef render functions accept exactly two parameters: props and ref. %s', render.length === 1 ? 'Did you forget to use the ref parameter?' : 'Any additional parameter will be undefined.') : void 0;\n }\n\n if (render != null) {\n !(render.defaultProps == null && render.propTypes == null) ? warningWithoutStack$1(false, 'forwardRef render functions do not support propTypes or defaultProps. ' + 'Did you accidentally pass a React component?') : void 0;\n }\n }\n\n return {\n $$typeof: REACT_FORWARD_REF_TYPE,\n render: render\n };\n}\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' ||\n // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE);\n}\n\nfunction memo(type, compare) {\n {\n if (!isValidElementType(type)) {\n warningWithoutStack$1(false, 'memo: The first argument must be a component. Instead ' + 'received: %s', type === null ? 'null' : typeof type);\n }\n }\n return {\n $$typeof: REACT_MEMO_TYPE,\n type: type,\n compare: compare === undefined ? null : compare\n };\n}\n\nfunction resolveDispatcher() {\n var dispatcher = ReactCurrentOwner.currentDispatcher;\n !(dispatcher !== null) ? invariant(false, 'Hooks can only be called inside the body of a function component.') : void 0;\n return dispatcher;\n}\n\nfunction useContext(Context, observedBits) {\n var dispatcher = resolveDispatcher();\n {\n // TODO: add a more generic warning for invalid values.\n if (Context._context !== undefined) {\n var realContext = Context._context;\n // Don't deduplicate because this legitimately causes bugs\n // and nobody should be using this in existing code.\n if (realContext.Consumer === Context) {\n warning$1(false, 'Calling useContext(Context.Consumer) is not supported, may cause bugs, and will be ' + 'removed in a future major release. Did you mean to call useContext(Context) instead?');\n } else if (realContext.Provider === Context) {\n warning$1(false, 'Calling useContext(Context.Provider) is not supported. ' + 'Did you mean to call useContext(Context) instead?');\n }\n }\n }\n return dispatcher.useContext(Context, observedBits);\n}\n\nfunction useState(initialState) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useState(initialState);\n}\n\nfunction useReducer(reducer, initialState, initialAction) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useReducer(reducer, initialState, initialAction);\n}\n\nfunction useRef(initialValue) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useRef(initialValue);\n}\n\nfunction useEffect(create, inputs) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useEffect(create, inputs);\n}\n\nfunction useMutationEffect(create, inputs) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useMutationEffect(create, inputs);\n}\n\nfunction useLayoutEffect(create, inputs) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useLayoutEffect(create, inputs);\n}\n\nfunction useCallback(callback, inputs) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useCallback(callback, inputs);\n}\n\nfunction useMemo(create, inputs) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useMemo(create, inputs);\n}\n\nfunction useImperativeMethods(ref, create, inputs) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useImperativeMethods(ref, create, inputs);\n}\n\n/**\n * ReactElementValidator provides a wrapper around a element factory\n * which validates the props passed to the element. This is intended to be\n * used only in DEV and could be replaced by a static type checker for languages\n * that support it.\n */\n\nvar propTypesMisspellWarningShown = void 0;\n\n{\n propTypesMisspellWarningShown = false;\n}\n\nfunction getDeclarationErrorAddendum() {\n if (ReactCurrentOwner.current) {\n var name = getComponentName(ReactCurrentOwner.current.type);\n if (name) {\n return '\\n\\nCheck the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\nfunction getSourceInfoErrorAddendum(elementProps) {\n if (elementProps !== null && elementProps !== undefined && elementProps.__source !== undefined) {\n var source = elementProps.__source;\n var fileName = source.fileName.replace(/^.*[\\\\\\/]/, '');\n var lineNumber = source.lineNumber;\n return '\\n\\nCheck your code at ' + fileName + ':' + lineNumber + '.';\n }\n return '';\n}\n\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\nvar ownerHasKeyUseWarning = {};\n\nfunction getCurrentComponentErrorInfo(parentType) {\n var info = getDeclarationErrorAddendum();\n\n if (!info) {\n var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\n if (parentName) {\n info = '\\n\\nCheck the top-level render call using <' + parentName + '>.';\n }\n }\n return info;\n}\n\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\nfunction validateExplicitKey(element, parentType) {\n if (!element._store || element._store.validated || element.key != null) {\n return;\n }\n element._store.validated = true;\n\n var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n return;\n }\n ownerHasKeyUseWarning[currentComponentErrorInfo] = true;\n\n // Usually the current owner is the offender, but if it accepts children as a\n // property, it may be the creator of the child that's responsible for\n // assigning it a key.\n var childOwner = '';\n if (element && element._owner && element._owner !== ReactCurrentOwner.current) {\n // Give the component that originally created this child.\n childOwner = ' It was passed a child from ' + getComponentName(element._owner.type) + '.';\n }\n\n setCurrentlyValidatingElement(element);\n {\n warning$1(false, 'Each child in an array or iterator should have a unique \"key\" prop.' + '%s%s See https://fb.me/react-warning-keys for more information.', currentComponentErrorInfo, childOwner);\n }\n setCurrentlyValidatingElement(null);\n}\n\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\nfunction validateChildKeys(node, parentType) {\n if (typeof node !== 'object') {\n return;\n }\n if (Array.isArray(node)) {\n for (var i = 0; i < node.length; i++) {\n var child = node[i];\n if (isValidElement(child)) {\n validateExplicitKey(child, parentType);\n }\n }\n } else if (isValidElement(node)) {\n // This element was passed in a valid location.\n if (node._store) {\n node._store.validated = true;\n }\n } else if (node) {\n var iteratorFn = getIteratorFn(node);\n if (typeof iteratorFn === 'function') {\n // Entry iterators used to provide implicit keys,\n // but now we print a separate warning for them later.\n if (iteratorFn !== node.entries) {\n var iterator = iteratorFn.call(node);\n var step = void 0;\n while (!(step = iterator.next()).done) {\n if (isValidElement(step.value)) {\n validateExplicitKey(step.value, parentType);\n }\n }\n }\n }\n }\n}\n\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\nfunction validatePropTypes(element) {\n var type = element.type;\n var name = void 0,\n propTypes = void 0;\n if (typeof type === 'function') {\n // Class or function component\n name = type.displayName || type.name;\n propTypes = type.propTypes;\n } else if (typeof type === 'object' && type !== null && type.$$typeof === REACT_FORWARD_REF_TYPE) {\n // ForwardRef\n var functionName = type.render.displayName || type.render.name || '';\n name = type.displayName || (functionName !== '' ? 'ForwardRef(' + functionName + ')' : 'ForwardRef');\n propTypes = type.propTypes;\n } else {\n return;\n }\n if (propTypes) {\n setCurrentlyValidatingElement(element);\n checkPropTypes(propTypes, element.props, 'prop', name, ReactDebugCurrentFrame.getStackAddendum);\n setCurrentlyValidatingElement(null);\n } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {\n propTypesMisspellWarningShown = true;\n warningWithoutStack$1(false, 'Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', name || 'Unknown');\n }\n if (typeof type.getDefaultProps === 'function') {\n !type.getDefaultProps.isReactClassApproved ? warningWithoutStack$1(false, 'getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.') : void 0;\n }\n}\n\n/**\n * Given a fragment, validate that it can only be provided with fragment props\n * @param {ReactElement} fragment\n */\nfunction validateFragmentProps(fragment) {\n setCurrentlyValidatingElement(fragment);\n\n var keys = Object.keys(fragment.props);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (key !== 'children' && key !== 'key') {\n warning$1(false, 'Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);\n break;\n }\n }\n\n if (fragment.ref !== null) {\n warning$1(false, 'Invalid attribute `ref` supplied to `React.Fragment`.');\n }\n\n setCurrentlyValidatingElement(null);\n}\n\nfunction createElementWithValidation(type, props, children) {\n var validType = isValidElementType(type);\n\n // We warn in this case but don't throw. We expect the element creation to\n // succeed and there will likely be errors in render.\n if (!validType) {\n var info = '';\n if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and named imports.\";\n }\n\n var sourceInfo = getSourceInfoErrorAddendum(props);\n if (sourceInfo) {\n info += sourceInfo;\n } else {\n info += getDeclarationErrorAddendum();\n }\n\n var typeString = void 0;\n if (type === null) {\n typeString = 'null';\n } else if (Array.isArray(type)) {\n typeString = 'array';\n } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {\n typeString = '<' + (getComponentName(type.type) || 'Unknown') + ' />';\n info = ' Did you accidentally export a JSX literal instead of a component?';\n } else {\n typeString = typeof type;\n }\n\n warning$1(false, 'React.createElement: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);\n }\n\n var element = createElement.apply(this, arguments);\n\n // The result can be nullish if a mock or a custom function is used.\n // TODO: Drop this when these are no longer allowed as the type argument.\n if (element == null) {\n return element;\n }\n\n // Skip key warning if the type isn't valid since our key validation logic\n // doesn't expect a non-string/function type and can throw confusing errors.\n // We don't want exception behavior to differ between dev and prod.\n // (Rendering will throw with a helpful message and as soon as the type is\n // fixed, the key warnings will appear.)\n if (validType) {\n for (var i = 2; i < arguments.length; i++) {\n validateChildKeys(arguments[i], type);\n }\n }\n\n if (type === REACT_FRAGMENT_TYPE) {\n validateFragmentProps(element);\n } else {\n validatePropTypes(element);\n }\n\n return element;\n}\n\nfunction createFactoryWithValidation(type) {\n var validatedFactory = createElementWithValidation.bind(null, type);\n validatedFactory.type = type;\n // Legacy hook: remove it\n {\n Object.defineProperty(validatedFactory, 'type', {\n enumerable: false,\n get: function () {\n lowPriorityWarning$1(false, 'Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.');\n Object.defineProperty(this, 'type', {\n value: type\n });\n return type;\n }\n });\n }\n\n return validatedFactory;\n}\n\nfunction cloneElementWithValidation(element, props, children) {\n var newElement = cloneElement.apply(this, arguments);\n for (var i = 2; i < arguments.length; i++) {\n validateChildKeys(arguments[i], newElement.type);\n }\n validatePropTypes(newElement);\n return newElement;\n}\n\nvar React = {\n Children: {\n map: mapChildren,\n forEach: forEachChildren,\n count: countChildren,\n toArray: toArray,\n only: onlyChild\n },\n\n createRef: createRef,\n Component: Component,\n PureComponent: PureComponent,\n\n createContext: createContext,\n forwardRef: forwardRef,\n lazy: lazy,\n memo: memo,\n\n Fragment: REACT_FRAGMENT_TYPE,\n StrictMode: REACT_STRICT_MODE_TYPE,\n Suspense: REACT_SUSPENSE_TYPE,\n\n createElement: createElementWithValidation,\n cloneElement: cloneElementWithValidation,\n createFactory: createFactoryWithValidation,\n isValidElement: isValidElement,\n\n version: ReactVersion,\n\n __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: ReactSharedInternals\n};\n\nif (enableStableConcurrentModeAPIs) {\n React.ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\n React.Profiler = REACT_PROFILER_TYPE;\n} else {\n React.unstable_ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\n React.unstable_Profiler = REACT_PROFILER_TYPE;\n}\n\nif (enableHooks) {\n React.useCallback = useCallback;\n React.useContext = useContext;\n React.useEffect = useEffect;\n React.useImperativeMethods = useImperativeMethods;\n React.useLayoutEffect = useLayoutEffect;\n React.useMemo = useMemo;\n React.useMutationEffect = useMutationEffect;\n React.useReducer = useReducer;\n React.useRef = useRef;\n React.useState = useState;\n}\n\n\n\nvar React$2 = Object.freeze({\n\tdefault: React\n});\n\nvar React$3 = ( React$2 && React ) || React$2;\n\n// TODO: decide on the top-level export form.\n// This is hacky but makes it work with both Rollup and Jest.\nvar react = React$3.default || React$3;\n\nmodule.exports = react;\n })();\n}\n\n\n//# sourceURL=webpack:///./node_modules/react/cjs/react.development.js?");
-
-/***/ }),
-
-/***/ "./node_modules/react/index.js":
-/*!*************************************!*\
- !*** ./node_modules/react/index.js ***!
- \*************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nif (false) {} else {\n module.exports = __webpack_require__(/*! ./cjs/react.development.js */ \"./node_modules/react/cjs/react.development.js\");\n}\n\n\n//# sourceURL=webpack:///./node_modules/react/index.js?");
-
-/***/ }),
-
-/***/ "./src/entry-home-main-container.js":
-/*!******************************************!*\
- !*** ./src/entry-home-main-container.js ***!
- \******************************************/
-/*! no exports provided */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _opendesktop_home_HomeMainContainer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./opendesktop-home/HomeMainContainer */ \"./src/opendesktop-home/HomeMainContainer.js\");\n\n\nReactDOM.render(react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_opendesktop_home_HomeMainContainer__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null), document.getElementById('main-content'));\n\n//# sourceURL=webpack:///./src/entry-home-main-container.js?");
-
-/***/ }),
-
-/***/ "./src/opendesktop-home/BlogFeedContainer.js":
-/*!***************************************************!*\
- !*** ./src/opendesktop-home/BlogFeedContainer.js ***!
- \***************************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_timeago__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-timeago */ \"./node_modules/react-timeago/lib/index.js\");\n/* harmony import */ var react_timeago__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_timeago__WEBPACK_IMPORTED_MODULE_1__);\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\nvar BlogFeedContainer =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(BlogFeedContainer, _React$Component);\n\n function BlogFeedContainer(props) {\n var _this;\n\n _classCallCheck(this, BlogFeedContainer);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(BlogFeedContainer).call(this, props));\n _this.state = {};\n return _this;\n }\n\n _createClass(BlogFeedContainer, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var self = this;\n $.ajax(\"https://forum.opendesktop.org/latest.json\").then(function (result) {\n var topics = result.topic_list.topics;\n topics.sort(function (a, b) {\n return new Date(b.last_posted_at) - new Date(a.last_posted_at);\n });\n topics = topics.slice(0, 5);\n self.setState({\n items: topics\n });\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var feedItemsContainer;\n\n if (this.state.items) {\n var feedItems = this.state.items.map(function (fi, index) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"li\", {\n key: index\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"a\", {\n className: \"title\",\n href: \"https://forum.opendesktop.org//t/\" + fi.id\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", null, fi.title)), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", {\n className: \"info-row\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", {\n className: \"date\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_timeago__WEBPACK_IMPORTED_MODULE_1___default.a, {\n date: fi.created_at\n })), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", {\n className: \"comment-counter\"\n }, fi.reply_count, \" replies\")));\n });\n feedItemsContainer = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"ul\", null, feedItems);\n }\n\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"panelContainer\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"title\"\n }, \"Forum\"), feedItemsContainer);\n }\n }]);\n\n return BlogFeedContainer;\n}(react__WEBPACK_IMPORTED_MODULE_0___default.a.Component);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (BlogFeedContainer);\n\n//# sourceURL=webpack:///./src/opendesktop-home/BlogFeedContainer.js?");
-
-/***/ }),
-
-/***/ "./src/opendesktop-home/CommentsContainer.js":
-/*!***************************************************!*\
- !*** ./src/opendesktop-home/CommentsContainer.js ***!
- \***************************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_timeago__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-timeago */ \"./node_modules/react-timeago/lib/index.js\");\n/* harmony import */ var react_timeago__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_timeago__WEBPACK_IMPORTED_MODULE_1__);\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\nvar CommentsContainer =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(CommentsContainer, _React$Component);\n\n function CommentsContainer() {\n _classCallCheck(this, CommentsContainer);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(CommentsContainer).apply(this, arguments));\n }\n\n _createClass(CommentsContainer, [{\n key: \"render\",\n value: function render() {\n var commentsContainer;\n\n if (this.props.comments) {\n var comments = this.props.comments.map(function (cm, index) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"li\", {\n key: index\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"cm-content\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", {\n className: \"cm-userinfo\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"img\", {\n src: cm.profile_image_url\n }), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", {\n className: \"username\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"a\", {\n href: \"/p/\" + cm.comment_target_id\n }, cm.username))), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"a\", {\n className: \"title\",\n href: \"/member/\" + cm.member_id\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", null, cm.title)), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", {\n className: \"content\"\n }, cm.comment_text), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", {\n className: \"info-row\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", {\n className: \"date\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_timeago__WEBPACK_IMPORTED_MODULE_1___default.a, {\n date: cm.comment_created_at\n })))));\n });\n commentsContainer = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"ul\", null, comments);\n }\n\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"panelContainer\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"title\"\n }, \"Comments\"), commentsContainer);\n }\n }]);\n\n return CommentsContainer;\n}(react__WEBPACK_IMPORTED_MODULE_0___default.a.Component);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (CommentsContainer);\n\n//# sourceURL=webpack:///./src/opendesktop-home/CommentsContainer.js?");
-
-/***/ }),
-
-/***/ "./src/opendesktop-home/HomeMainContainer.js":
-/*!***************************************************!*\
- !*** ./src/opendesktop-home/HomeMainContainer.js ***!
- \***************************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _RssNewsContainer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./RssNewsContainer */ \"./src/opendesktop-home/RssNewsContainer.js\");\n/* harmony import */ var _BlogFeedContainer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./BlogFeedContainer */ \"./src/opendesktop-home/BlogFeedContainer.js\");\n/* harmony import */ var _CommentsContainer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./CommentsContainer */ \"./src/opendesktop-home/CommentsContainer.js\");\n/* harmony import */ var _ProductsContainer__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ProductsContainer */ \"./src/opendesktop-home/ProductsContainer.js\");\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n\nvar HomeMainContainer =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(HomeMainContainer, _Component);\n\n function HomeMainContainer(props) {\n var _this;\n\n _classCallCheck(this, HomeMainContainer);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(HomeMainContainer).call(this, props));\n _this.state = _objectSpread({}, window.data);\n return _this;\n }\n\n _createClass(HomeMainContainer, [{\n key: \"render\",\n value: function render() {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n id: \"home-main-container\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"left\"\n }), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"middle\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_RssNewsContainer__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_BlogFeedContainer__WEBPACK_IMPORTED_MODULE_2__[\"default\"], null), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_CommentsContainer__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n comments: this.state.comments\n }), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_ProductsContainer__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n products: this.state.products\n })), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"right\"\n }, \" \"));\n }\n }]);\n\n return HomeMainContainer;\n}(react__WEBPACK_IMPORTED_MODULE_0__[\"Component\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (HomeMainContainer);\n\n//# sourceURL=webpack:///./src/opendesktop-home/HomeMainContainer.js?");
-
-/***/ }),
-
-/***/ "./src/opendesktop-home/Product.js":
-/*!*****************************************!*\
- !*** ./src/opendesktop-home/Product.js ***!
- \*****************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_timeago__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-timeago */ \"./node_modules/react-timeago/lib/index.js\");\n/* harmony import */ var react_timeago__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_timeago__WEBPACK_IMPORTED_MODULE_1__);\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\nvar Product =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(Product, _React$Component);\n\n function Product() {\n _classCallCheck(this, Product);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(Product).apply(this, arguments));\n }\n\n _createClass(Product, [{\n key: \"render\",\n value: function render() {\n var createdDate = this.props.product.changed_at ? this.props.product.changed_at : this.props.product.created_at;\n var scoreDisplay = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"score-info\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"score-number\"\n }, \"score \", this.props.product.laplace_score + \"%\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"score-bar-container\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"score-bar\",\n style: {\n \"width\": this.props.product.laplace_score + \"%\"\n }\n })));\n var productInfoDisplay = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"product-info\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", {\n className: \"product-info-title\"\n }, this.props.product.title), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", {\n className: \"product-info-category\"\n }, this.props.product.cat_title), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", {\n className: \"product-info-date\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_timeago__WEBPACK_IMPORTED_MODULE_1___default.a, {\n date: createdDate\n })), scoreDisplay);\n var projectUrl = \"/p/\" + this.props.product.project_id;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"a\", {\n href: projectUrl\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"figure\", null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"img\", {\n className: \"very-rounded-corners\",\n src: this.props.product.image_small\n })))), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", null, productInfoDisplay));\n }\n }]);\n\n return Product;\n}(react__WEBPACK_IMPORTED_MODULE_0___default.a.Component);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Product);\n\n//# sourceURL=webpack:///./src/opendesktop-home/Product.js?");
-
-/***/ }),
-
-/***/ "./src/opendesktop-home/ProductsContainer.js":
-/*!***************************************************!*\
- !*** ./src/opendesktop-home/ProductsContainer.js ***!
- \***************************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Product__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Product */ \"./src/opendesktop-home/Product.js\");\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\nvar ProductsContainer =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(ProductsContainer, _React$Component);\n\n function ProductsContainer(props) {\n _classCallCheck(this, ProductsContainer);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ProductsContainer).call(this, props));\n }\n\n _createClass(ProductsContainer, [{\n key: \"render\",\n value: function render() {\n var container;\n\n if (this.props.products) {\n var products = this.props.products.map(function (product, index) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"row\",\n key: index\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_Product__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n product: product\n }));\n });\n container = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", null, products);\n }\n\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"panelContainer\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"title\"\n }, \"Products\"), container);\n }\n }]);\n\n return ProductsContainer;\n}(react__WEBPACK_IMPORTED_MODULE_0___default.a.Component);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (ProductsContainer);\n\n//# sourceURL=webpack:///./src/opendesktop-home/ProductsContainer.js?");
-
-/***/ }),
-
-/***/ "./src/opendesktop-home/RssNewsContainer.js":
-/*!**************************************************!*\
- !*** ./src/opendesktop-home/RssNewsContainer.js ***!
- \**************************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_timeago__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-timeago */ \"./node_modules/react-timeago/lib/index.js\");\n/* harmony import */ var react_timeago__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_timeago__WEBPACK_IMPORTED_MODULE_1__);\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\nvar RssNewsContainer =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(RssNewsContainer, _Component);\n\n function RssNewsContainer(props) {\n var _this;\n\n _classCallCheck(this, RssNewsContainer);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(RssNewsContainer).call(this, props));\n _this.state = {};\n return _this;\n }\n\n _createClass(RssNewsContainer, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var self = this;\n $.getJSON(\"https://blog.opendesktop.org/?json=1&callback=?\", function (res) {\n self.setState({\n items: res.posts\n });\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var feedItemsContainer;\n\n if (this.state.items) {\n var feedItems = this.state.items.slice(0, 5).map(function (fi, index) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"li\", {\n key: index\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"a\", {\n className: \"title\",\n href: fi.url\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", null, fi.title)), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", {\n className: \"info-row\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", {\n className: \"date\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_timeago__WEBPACK_IMPORTED_MODULE_1___default.a, {\n date: fi.date\n })), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", {\n className: \"comment-counter\"\n }, fi.comment_count, \" comments\")));\n });\n feedItemsContainer = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"ul\", null, feedItems);\n }\n\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n id: \"rss-new-container\",\n className: \"panelContainer\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"title\"\n }, \"News\"), feedItemsContainer);\n }\n }]);\n\n return RssNewsContainer;\n}(react__WEBPACK_IMPORTED_MODULE_0__[\"Component\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (RssNewsContainer);\n\n//# sourceURL=webpack:///./src/opendesktop-home/RssNewsContainer.js?");
-
-/***/ })
-
-/******/ });
\ No newline at end of file
+!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=10)}([function(e,t,n){"use strict";e.exports=n(3)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}(e,["date","formatter","component","live","minPeriod","maxPeriod","title","now"]),v=(0,u.default)(t).valueOf();if(!v)return null;var g=s(),_=Math.round(Math.abs(g-v)/1e3),O=v=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}var u=function(){function e(e,t){for(var n=0;n=this.measureWidth(r))return this.onToggled(!1),(0,n.createElement)(a,s,r);var p="";if(i&&"string"==typeof i.type){var m=i.type;(m.indexOf("span")>=0||m.indexOf("a")>=0)&&(p=i.props.children)}for(var y=1,d=r.length,b="",h=0,v=0,g=t,_=0,O=!1,w=!1,E=0,j=-1,S="",P=0;g-- >0;){for(S=g?"":u+(p?" "+p:"");y<=d;){if(b=r.substr(v,y),!((_=this.measureWidth(b+S))=l)break;b=r.substr(v,y),g||y--," "===b[b.length-1]&&(b=r.substr(v,y-1)),O&&(j=b.lastIndexOf(" "))>-1?(y=j,g&&y++,b=r.substr(v,y)):(y--,b=r.substr(v,y)),_=this.measureWidth(b+S)}while(_>=f&&b.length>0);v+=y;break}-1===(h=r.indexOf(" ",y+1))?(y+=1,O=!1):(O=!0,y=h)}if(y>=d){v=d;break}O&&!w&&-1===r.substr(E,y).indexOf(" ")&&(w=-1===r.substr(E,y).indexOf(" "),g--),E=y+1}return v===d?(this.onToggled(!1),(0,n.createElement)(a,s,r)):(this.onTruncated(),this.onToggled(!0),o.default.createElement("div",s,(0,n.createElement)(a,s,r.substr(0,v)+u+" "),i))}},{key:"render",value:function(){var e=this,t=this.props,r=t.element,o=t.text,a=t.style,i=void 0===a?{}:a,u=t.containerClassName,l=t.line,s=(t.onCalculated,t.onTruncated,t.textElement),f=(t.textTruncateChild,t.truncateText,t.maxCalculateTimes,c(t,["element","text","style","containerClassName","line","onCalculated","onTruncated","textElement","textTruncateChild","truncateText","maxCalculateTimes"])),p=i.fontWeight,m=i.fontStyle,y=i.fontSize,d=i.fontFamily,b=this.scope&&l?this.getRenderText():(0,n.createElement)(s,f,o),h={ref:function(t){e.scope=t},className:u,style:{overflow:"hidden",fontWeight:p,fontStyle:m,fontSize:y,fontFamily:d}};return this.scope&&this.onCalculated(),(0,n.createElement)(r,h,b)}}]),t}(n.Component);s.propTypes={containerClassName:a.default.string,element:a.default.string,line:a.default.oneOfType([a.default.number,a.default.bool]),onCalculated:a.default.func,onTruncated:a.default.func,onToggled:a.default.func,text:a.default.string,textElement:a.default.node,textTruncateChild:a.default.node,truncateText:a.default.string,maxCalculateTimes:a.default.number},s.defaultProps={element:"div",line:1,text:"",textElement:"span",truncateText:"…",maxCalculateTimes:10},t.default=s,e.exports=t.default})?r.apply(t,o):r)||(e.exports=a)},function(e,t,n){"use strict";
+/** @license React v16.6.1
+ * react.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */var r=n(4),o="function"==typeof Symbol&&Symbol.for,a=o?Symbol.for("react.element"):60103,i=o?Symbol.for("react.portal"):60106,c=o?Symbol.for("react.fragment"):60107,u=o?Symbol.for("react.strict_mode"):60108,l=o?Symbol.for("react.profiler"):60114,s=o?Symbol.for("react.provider"):60109,f=o?Symbol.for("react.context"):60110,p=o?Symbol.for("react.concurrent_mode"):60111,m=o?Symbol.for("react.forward_ref"):60112,y=o?Symbol.for("react.suspense"):60113,d=o?Symbol.for("react.memo"):60115,b=o?Symbol.for("react.lazy"):60116,h="function"==typeof Symbol&&Symbol.iterator;function v(e){for(var t=arguments.length-1,n="https://reactjs.org/docs/error-decoder.html?invariant="+e,r=0;rN.length&&N.push(e)}function A(e,t,n){return null==e?0:function e(t,n,r,o){var c=typeof t;"undefined"!==c&&"boolean"!==c||(t=null);var u=!1;if(null===t)u=!0;else switch(c){case"string":case"number":u=!0;break;case"object":switch(t.$$typeof){case a:case i:u=!0}}if(u)return r(o,t,""===n?"."+U(t,0):n),1;if(u=0,n=""===n?".":n+":",Array.isArray(t))for(var l=0;l (
+